<p dir="auto">Hey all.<br>
MS volunteered to help us set up Azure pipelines for CI. I'm not sure if <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ogrisel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ogrisel">@ogrisel</a> or anyone else has looked into them yet. One of the benefits would be potentially arbitrary many builds in parallel if we ask nicely.</p>
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/njsmith/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/njsmith">@njsmith</a> had mentioned on twitter it's slower than travis but that might be fixed by now?</p>
<p dir="auto">I'm swamped with other stuff so I have no cycles for this. I'll point Mickey Gousset who volunteered to help to this issue to discuss.</p>
<p dir="auto">Is this documentation for <a href="http://scikit-learn.org/stable/modules/generated/sklearn.multiclass.OneVsRestClassifier.html" rel="nofollow"><code class="notranslate">sklearn.multiclass.OneVsRestClassifier</code></a> correct?</p>
<blockquote>
<p dir="auto">Also known as one-vs-all, this strategy consists in fitting one classifier per class. For each classifier, the class is fitted against all the other classes. ... In the multilabel learning literature, OvR is also known as the binary relevance method.</p>
</blockquote>
<p dir="auto">There is similar documentation in the <a href="http://scikit-learn.org/stable/modules/multiclass.html#ovr-classification" rel="nofollow">user guide</a>:</p>
<blockquote>
<p dir="auto">This strategy, also known as one-vs-all, is implemented in OneVsRestClassifier. The strategy consists in fitting one classifier per class. For each classifier, the class is fitted against all the other classes.</p>
</blockquote>
<p dir="auto">The <a href="http://scikit-learn.org/stable/modules/multiclass.html#multilabel-classification-format" rel="nofollow">prior section in the user guide</a> talks about an example problem of multilabel classification as follows.</p>
<blockquote>
<p dir="auto">An array such as <code class="notranslate">np.array([[1, 0, 0], [0, 1, 1], [0, 0, 0]])</code> represents label 0 in the first sample, labels 1 and 2 in the second sample, and no labels in the third sample.</p>
</blockquote>
<p dir="auto">All of these together do not make sense to me. The wording "For each classifier, the class is fitted against all the other classes" seems to imply a multi <em>class</em> problem, not a multi <em>label</em> problem. It seems like in the implementation it is actually fitting each label with its binary indicator independent of the other labels. I am further confused because the documentation says one vs. rest is the same as binary relevance, but the <a href="https://en.wikipedia.org/wiki/Multi-label_classification" rel="nofollow">wikipedia article on multi-label classification</a> seems to say otherwise:</p>
<blockquote>
<p dir="auto">This method of dividing the task into multiple binary tasks has something in common with the one-vs.-all (OvA, or one-vs.-rest, OvR) method for multiclass classification. Note though that it is not the same method: in binary relevance we train one classifier for each label, not one classifier for each possible value for the label.</p>
</blockquote>
<p dir="auto">For what it's worth, it seems like <code class="notranslate">sklearn.multiclass.OneVsRestClassifier</code> implements what that wikipedia article would call binary relevance, not one vs. rest.</p>