<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Ranking Model Checking Backends for Automated Selection via Classification and Regression Learning</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jannik Dunkelau</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Leo Baldus</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Heinrich-Heine-Universität Düsseldorf</institution>
          ,
          <addr-line>Universitätsstr. 1, 40225 Düsseldorf</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>With classification and regression learning, we employ ranking approaches for the constraint solving backends of the ProB model checker to assess the most suited backend to use for a given constraint. In case the top ranked backend fails to solve the constraint, the predicted ranking yields a clear order of which backend to utilise in a second attempt. Our trained predictors achieve an overall runtime overhead of only 7 % while a static order of backends results in an overhead of 8.5 %. Thus, we are confident in our approach as it is more dynamic and ofers potential to increase performance in the future.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Model checking</kwd>
        <kwd>constraint solving</kwd>
        <kwd>automated backend selection</kwd>
        <kwd>ranking algorithms</kwd>
        <kwd>machine learning</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>predicted backend fails to satisfy or invalidate the constraint, a ranking clearly defines which
backend to use for solving the constraint next.</p>
      <p>In the following, we briefly discuss related work in Section 2. Our training data, used machine
learning algorithms, and experimental results are summarised in Sections 3 and 4. The paper
concludes in Section 5. The code for our experiments and our full results are available on Github:
https://github.com/jdnklau/ranked-runtime-predictions-for-probs-backends.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>
        Previous work investigated classification approaches [
        <xref ref-type="bibr" rid="ref13 ref14 ref15">13, 14, 15</xref>
        ] in which a classifier
predicts only the best suited backend for a given constraint. While initially done with neural
networks [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], follow-up work focused on decision trees and random forests [
        <xref ref-type="bibr" rid="ref13 ref15">13, 15</xref>
        ]. The
conducted ranking via regression method is inspired by the works of Healy et al. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] in which
an algorithm portfolio was created for the Why3 platform [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. A more recent approach was
done by Scott et al. in the form of MachSMT [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Internally it uses AdaBoost [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] over 200
decision trees to achieve a ranking over the specified solvers. Due to its only recent publication,
we were unable to compare our approach with MachSMT in time.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. The Training Data and Feature Set</title>
      <p>
        We utilise the set of 597,134 training constraints collected over the ProB public examples1 by
Dunkelau et al. [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] as well as their presented set of 109 features over the B language extended
by another feature accounting for the use of cardinality constraints for sets. Thus we arrive at
110 features, measuring frequencies of operators and language subdomains in the constraints.
      </p>
      <p>
        Given a possible backend response  ∈ {valid, invalid, unknown, timeout, error} and a
measured runtime  over each backend with a timeout of  (in our application 25 s), each constraint
was labelled with one cost value per backend given by the cost function by Healy et al. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] in
Equation (1). 25 % of the data were withheld for performance tests and not used during training.
⎧
⎪
cost(, ) = ⎨
      </p>
      <p>+ 
⎪⎩ + 2
if  ∈ {valid, invalid}
if  = unknown
if  ∈ {timeout, error}
(1)</p>
    </sec>
    <sec id="sec-4">
      <title>4. Predicting Runtime Rankings</title>
      <p>As we want to favour faster backends over slower backends yet also definitive responses
over unknown, timeout, or error responses in our ranking, we utilise the cost function from
Equation (1). This reduces our goal to predicting the backends in ascending order of their costs.
We can make use of three diferent approaches.</p>
      <p>
        Multi-output regression is the approach followed by Healy et al. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. One singular predictor
is trained to predict the three target variables (the backends’ cost values) simultaneously. The
1https://www3.hhu.de/stups/downloads/prob/source/ProB_public_examples.tgz
advantage lies in only having to train and maintain one regressor which is able to share internal
inferences across the three output dimensions.
      </p>
      <p>In separate single-output regression only one independent regressor is trained per backend.
This allows for easier maintenance in the long run as optimizing performance for a single
backend does not impact the other regressors. Adding a new backend into the portfolio also
only consists of adding a new, optimised regressor instead of retraining the singular regressor
over all backends.</p>
      <p>A non-regression approach is ranking classification. Each possible ranking is defined as its
own class, leading to 6 classes in total. This however is even less extendable than the
multioutput regression as adding a new backend not only leads to retraining of the whole classifier
but also increases the amount of classes by a factorial factor, losing feasibility by increasing
number of backends. We also lose the information of predicted runtime cost per backend.</p>
      <sec id="sec-4-1">
        <title>4.1. Machine Learning Algorithms</title>
        <p>
          We compared the performances of multiple machine learning algorithms, employing a total of six
diferent algorithms: linear regression (LR) [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], ridge regression (RG) [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], k nearest neighbors
(KNN) [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], support vector machines (SVM) [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], decision trees (DT) [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ], and random forests
(RF) [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]. For each learning algorithm, we conducted an extensive hyperparameter search via
grid search and evaluated performance via 5-fold cross validation. As random forests yielded
the best results in our experiments (cf. Table 1), we omit details on the other algorithms due
to space reasons. Random forests are an ensemble approach in which multiple decision trees
are trained. Decision tree training constructs predictors of a tree like structure in which each
inner node splits the training data along a chosen feature dimension into more pure subsets
thus reducing variance in the labels. For random forests, each decision tree in the ensemble is
trained on random subsets of both the training data and the feature set.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Measuring Performance</title>
        <p>
          To quantify the performance of our ranking predictors we utilise the following two metrics. The
ifrst is the double normalised discounted cumulative gain (dnDCG) [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ], a ranking evaluation
metric that penalises misplacement of higher ranked items more strictly as it deems these more
impactful. It produces a value between 0 and 1, with 1 being the best possible performance. The
formula for the dnDCG is stepwise calculated by
        </p>
        <p>DCG = ∑︁ 2rel − 1 ,
=1 log2( + 1)</p>
        <p>DCG
DCG*
nDCG =
dnDCG =
nDCG − nDCG
1 − nDCG
(2)
for a ranking of length , where rel  is the relevance of the th backend, DCG* is the DCG value
for the ideal ranking, and nDCG is the nDCG value for the worst ranking. The second metric
is the usage duration comparison value (UDC) which we defined ourselves to assess the runtime
overhead introduced by predicting a non-ideal ranking. This is motivated by observing that,
e.g., picking the second best backend first might only add a couple nano seconds to the final
runtime and thus introduces no significant overhead. If the firstly ranked backend fails to return
a definite answer we would query the remaining backends in order of their ranking, until either
(3)
one gives a definite answer or we run out of backends. Let the time used up by this query be ˆ
for a constraint . Let the query time over the ideal ranking be * . We define the UDC as
∑︀=1</p>
        <p>ˆ</p>
        <p>UDC = ∑︀=1 * ∈ [1, ∞) .</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Results</title>
        <p>
          Table 1 shows the best performing models per approach. While we investigated multiple
machine learning algorithms, it stands out that random forests took part in all the best achieved
performances. This is inline with the results, observations, and decisions from related work [
          <xref ref-type="bibr" rid="ref13 ref15 ref16">13,
15, 16</xref>
          ]. The single-output regression performs slightly worse than multi-output regression and
ranking classification, however not by any significant amount. The best UDC was achieved by
multi-output regression with a value of 1.07, standing for 7 % longer runtime over all constraints
in the test set compared to always using the ideal ranking.
        </p>
        <p>In comparison, a static algorithm that always uses the ranking CLP(FD) ≻ Z3 ≻ Kodkod
already yields a UDC of 1.085, competing with our predictors. However, our approach is more
dynamic and allows for improvement due to further tuning or a more refined feature set.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>We trained multiple predictors for ranking the ProB backends by ascending, weighted, expected
runtime. Our results show not much of a diference between the approaches of single-output
regression, multi-output regression, and ranking classification, while the single-output
regression still represents the most flexible approach and should be focus of research going forward.
Finally, we achieved performance values of a double normalised discounted cumulative gain of
up to 0.81 and an usage diference comparison value of up to 1.07. While a dummy approach
which always prefers a single, static ranking competes with our learned predictors we are
confident that our method proves more valuable going forward as it allows for further tuning.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments</title>
      <p>Computational support and infrastructure was provided by the “Centre for Information and
Media Technology” (ZIM) at the University of Düsseldorf (Germany).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D. H.</given-names>
            <surname>Wolpert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. G.</given-names>
            <surname>Macready</surname>
          </string-name>
          , et al.,
          <article-title>No free lunch theorems for search</article-title>
          ,
          <source>Technical Report, Technical Report SFI-TR-95-02-010</source>
          , Santa Fe Institute,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>D. H.</given-names>
            <surname>Wolpert</surname>
          </string-name>
          , W. G. Macready,
          <article-title>No free lunch theorems for optimization</article-title>
          ,
          <source>IEEE transactions on evolutionary computation 1</source>
          (
          <year>1997</year>
          )
          <fpage>67</fpage>
          -
          <lpage>82</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Rice</surname>
          </string-name>
          ,
          <article-title>The algorithm selection problem</article-title>
          ,
          <source>Advances in computers 15</source>
          (
          <year>1976</year>
          )
          <fpage>65</fpage>
          -
          <lpage>118</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Leuschel</surname>
          </string-name>
          , M. Butler,
          <article-title>ProB: A model checker for B</article-title>
          , in: FME 2003:
          <article-title>Formal Methods</article-title>
          , volume
          <volume>2805</volume>
          , Springer, Berlin, Heidelberg,
          <year>2003</year>
          , pp.
          <fpage>855</fpage>
          -
          <lpage>874</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.</given-names>
            <surname>Leuschel</surname>
          </string-name>
          , M. Butler,
          <string-name>
            <surname>ProB:</surname>
          </string-name>
          <article-title>An automated analysis toolset for the B method</article-title>
          ,
          <source>International Journal on Software Tools for Technology Transfer</source>
          <volume>10</volume>
          (
          <year>2008</year>
          )
          <fpage>185</fpage>
          -
          <lpage>203</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>J.-R.</given-names>
            <surname>Abrial</surname>
          </string-name>
          ,
          <string-name>
            <surname>The B-Book</surname>
          </string-name>
          : Assigning Programs to Meanings, Cambridge University Press, New York, NY, USA,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Carlsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Widen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Andersson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Andersson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Boortz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Nilsson</surname>
          </string-name>
          , T. Sjöland,
          <article-title>SICStus Prolog user's manual</article-title>
          , volume
          <volume>3</volume>
          , Swedish Institute of Computer Science Kista, Sweden,
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Carlsson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Ottosson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Carlson</surname>
          </string-name>
          ,
          <article-title>An open-ended finite domain constraint solver</article-title>
          ,
          <source>in: Programming Languages: Implementations, Logics, and Programs</source>
          , volume
          <volume>1292</volume>
          , Springer,
          <year>1997</year>
          , pp.
          <fpage>191</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>E.</given-names>
            <surname>Torlak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D</given-names>
            .
            <surname>Jackson</surname>
          </string-name>
          ,
          <article-title>Kodkod: A relational model finder</article-title>
          ,
          <source>in: International Conference on Tools and Algorithms for the Construction and Analysis of Systems</source>
          , Springer,
          <year>2007</year>
          , pp.
          <fpage>632</fpage>
          -
          <lpage>647</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D.</given-names>
            <surname>Plagge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Leuschel</surname>
          </string-name>
          ,
          <string-name>
            <surname>Validating</surname>
            <given-names>B</given-names>
          </string-name>
          ,
          <article-title>Z and TLA+ using prob and kodkod</article-title>
          ,
          <source>in: International Symposium on Formal Methods</source>
          , Springer,
          <year>2012</year>
          , pp.
          <fpage>372</fpage>
          -
          <lpage>386</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Krings</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Leuschel, SMT solvers for validation of B and Event-B models</article-title>
          ,
          <source>in: International Conference on Integrated Formal Methods</source>
          , Springer,
          <year>2016</year>
          , pp.
          <fpage>361</fpage>
          -
          <lpage>375</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>L. De Moura</surname>
            ,
            <given-names>N. Bjørner,</given-names>
          </string-name>
          <article-title>Z3: An eficient SMT solver, Tools and Algorithms for the Construction and Analysis of Systems (</article-title>
          <year>2008</year>
          )
          <fpage>337</fpage>
          -
          <lpage>340</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Dunkelau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Leuschel</surname>
          </string-name>
          ,
          <article-title>Analysing ProB's constraint solving backends</article-title>
          ,
          <source>in: International Conference on Rigorous State-Based Methods</source>
          , Springer,
          <year>2020</year>
          , pp.
          <fpage>107</fpage>
          -
          <lpage>123</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -48077-
          <issue>6</issue>
          _
          <fpage>8</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J.</given-names>
            <surname>Dunkelau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Krings</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <article-title>Automated backend selection for ProB using deep learning</article-title>
          ,
          <source>in: NASA Formal Methods</source>
          , volume
          <volume>11460</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2019</year>
          , pp.
          <fpage>130</fpage>
          -
          <lpage>147</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -20652-
          <issue>9</issue>
          _
          <fpage>9</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>J.</given-names>
            <surname>Petrasch</surname>
          </string-name>
          ,
          <article-title>The Decision Does Not Fall Far from the Tree: Automatic Configuration of Predicate Solving, Master's thesis</article-title>
          ,
          <source>Heinrich Heine Universität Düsseldorf, Universitätsstraße</source>
          <volume>1</volume>
          ,
          <issue>40225</issue>
          <year>Düsseldorf</year>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Healy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Monahan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. F.</given-names>
            <surname>Power</surname>
          </string-name>
          ,
          <string-name>
            <surname>Predicting</surname>
            <given-names>SMT</given-names>
          </string-name>
          <article-title>solver performance for software verification</article-title>
          ,
          <source>in: Proceedings of the Third Workshop on Formal Integrated Development Environment</source>
          , volume
          <volume>240</volume>
          <source>of EPTCS</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>20</fpage>
          -
          <lpage>37</lpage>
          . doi:
          <volume>10</volume>
          .4204/EPTCS.240.2.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>J.-C. Filliâtre</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Paskevich</surname>
          </string-name>
          , Why3
          <article-title>-where programs meet provers</article-title>
          ,
          <source>in: European symposium on programming</source>
          , Springer,
          <year>2013</year>
          , pp.
          <fpage>125</fpage>
          -
          <lpage>128</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>J.</given-names>
            <surname>Scott</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Niemetz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Preiner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Nejati</surname>
          </string-name>
          , V. Ganesh,
          <string-name>
            <surname>MachSMT:</surname>
          </string-name>
          <article-title>A machine learning-based algorithm selector for SMT solvers, in: Tools and Algorithms for the Construction and Analysis of Systems</article-title>
          , volume
          <volume>12652</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2021</year>
          , pp.
          <fpage>303</fpage>
          -
          <lpage>325</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>030</fpage>
          -72013-1_
          <fpage>16</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Freund</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Schapire</surname>
          </string-name>
          ,
          <article-title>A decision-theoretic generalization of on-line learning and an application to boosting</article-title>
          ,
          <source>Journal of Computer and System Sciences</source>
          <volume>55</volume>
          (
          <year>1997</year>
          )
          <fpage>119</fpage>
          -
          <lpage>139</lpage>
          . doi:
          <volume>10</volume>
          .1006/jcss.
          <year>1997</year>
          .
          <volume>1504</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>G. D.</given-names>
            <surname>Hutcheson</surname>
          </string-name>
          ,
          <article-title>Ordinary least-squares regression, L. Moutinho and GD Hutcheson, The SAGE dictionary of quantitative management research (</article-title>
          <year>2011</year>
          )
          <fpage>224</fpage>
          -
          <lpage>228</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A. E.</given-names>
            <surname>Hoerl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. W.</given-names>
            <surname>Kennard</surname>
          </string-name>
          ,
          <article-title>Ridge regression: Biased estimation for nonorthogonal problems</article-title>
          ,
          <source>Technometrics</source>
          <volume>12</volume>
          (
          <year>1970</year>
          )
          <fpage>55</fpage>
          -
          <lpage>67</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>T.</given-names>
            <surname>Cover</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Hart</surname>
          </string-name>
          ,
          <article-title>Nearest neighbor pattern classification</article-title>
          ,
          <source>IEEE transactions on information theory 13</source>
          (
          <year>1967</year>
          )
          <fpage>21</fpage>
          -
          <lpage>27</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>C.</given-names>
            <surname>Cortes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vapnik</surname>
          </string-name>
          ,
          <article-title>Support-vector networks</article-title>
          ,
          <source>Machine learning 20</source>
          (
          <year>1995</year>
          )
          <fpage>273</fpage>
          -
          <lpage>297</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>L.</given-names>
            <surname>Breiman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Friedman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. J.</given-names>
            <surname>Stone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Olshen</surname>
          </string-name>
          ,
          <article-title>Classification and regression trees</article-title>
          , CRC press,
          <year>1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>L.</given-names>
            <surname>Breiman</surname>
          </string-name>
          , Random forests,
          <source>Machine learning 45</source>
          (
          <year>2001</year>
          )
          <fpage>5</fpage>
          -
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>K.</given-names>
            <surname>Järvelin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kekäläinen</surname>
          </string-name>
          ,
          <article-title>Cumulated gain-based evaluation of IR techniques</article-title>
          ,
          <source>ACM Transactions on Information Systems (TOIS) 20</source>
          (
          <year>2002</year>
          )
          <fpage>422</fpage>
          -
          <lpage>446</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>