0
0

マルチクラス分類に役立つ!OVOとOVRの概要と実装方法

Posted at

はじめに

本記事では、マルチクラス分類の効果的なアプローチであるOVO(One-Versus-One)とOVR(One-Versus-Rest)について解説します。それぞれの手法の特徴やメリット、どのようなデータに適しているのかを比較し、実際にマルチクラス分類を分析するとき、適切に利用できるようにしましょう。

OVO、OVRとは

OVO(One-Versus-One)とOVR(One-Versus-Rest)は、マルチクラス分類問題の分類器です。

OVO:全てのクラスのペアごとに分類器をトレーニングします。
例)目的変数のクラスが4つある場合は、6通りの分類器を作成します。

OVR:各クラスに対して「そのクラスとその他全てのクラス」の分類器を作成します。
例)目的変数のクラスが4つある場合は、4通りの分類器を作成します。

OVR、OVOを使う利点

OVOのメリット
・2つのクラス間の違いに特化して学習するため、クラス間であまり違いがないデータに効果的です。
・それぞれが二値分類になるため、アルゴリズムがシンプルです。
・一つのクラスに対して複数回学習を行うため、モデルの頑健性が向上することがあります。
・クラス数が少ない場合により有効です。

OVRのメリット
・各クラスで「そのクラスとその他全てのクラス」の分類器を作成するため、実装が簡単です。
・OVRは確率が最も高い予測を選ぶため、一貫した予測が可能です。
・クラス数が増えるほど、OVRはOVOに比べて計算リソースの効率が良くなります。

実装

今回使用するデータは、Wine Qualityです
これは、ワインの品質スコアに関するデータセットで、品質を1から10のスコアで評価しています。
以下の3パターンを実装していきます。
①SVCのみを使用した場合
②OVOとSVCを使用した場合
③OVRとSVCを使用した場合

では、実装していきます。
はじめに必要なライブラリをインポートしています。

from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.multiclass import OneVsOneClassifier,OneVsRestClassifier
from sklearn.metrics import accuracy_score

次にWine Qualityデータセットを読み込んで訓練用とテスト用で分割します。

data = fetch_openml('wine-quality-red', version=1)
x,y  = data.data,data.target
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.2,random_state = 0)

①SVCのみを使用した場合

[In]
model = SVC()
model.fit(x_train,y_train)

ypred = model.predict(x_test)
accuracy = accuracy_score(y_test,ypred)
print(f"accuracy:{accuracy}")
[Out]
accuracy:0.53125

②OVOとSVCを使用した場合

[In]
model = OneVsOneClassifier(SVC())
model.fit(x_train,y_train)

ypred = model.predict(x_test)
accuracy = accuracy_score(y_test,ypred)
print(f"accuracy:{accuracy}")
[Out]
accuracy:0.528125

③OVRとSVCを使用した場合

[In]
model = OneVsRestClassifier(SVC())
model.fit(x_train,y_train)

ypred = model.predict(x_test)
accuracy = accuracy_score(y_test,ypred)
print(f"accuracy:{accuracy}")
[Out]
accuracy:0.625

以上の結果から目的変数のクラス数が多いときは、OVRの精度が一番高いことが分かった。

まとめ

本記事ではOVOとOVRの特徴やメリット、どのようなデータに適しているのかを記載した。目的変数のクラス数が多い場合はOVRが有効であり、データ間の違いが分かりにくい場合はOVOが有効であると分かった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0