はじめに
このチュートリアルでは、分類、回帰、アウトライア検出に使用される教師付き学習手法のセットであるサポートベクターマシン(SVM)について学びます。SVM は高次元空間で効果的で、次元数がサンプル数よりも多い場合でも良好な性能を発揮します。
SVM の利点としては、高次元空間での有効性、メモリ効率、およびさまざまなカーネル関数に関する汎用性が挙げられます。ただし、過学習を回避し、与えられた問題に適したカーネルと正則化項を選ぶことが重要です。
このチュートリアルでは、以下のトピックを扱います。
- SVM による分類
- 多クラス分類
- スコアと確率
- 不均衡問題
- SVM による回帰
- 密度推定と新奇性検出
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題が発生した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。そうすれば、迅速に問題を解決します。
これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 88%です。学習者から 67% の好評価を得ています。
SVM による分類
- 必要なライブラリをインポートして始めましょう:
from sklearn import svm
- 学習サンプル
Xとクラスラベルyを定義します:
X = [[0, 0], [1, 1]]
y = [0, 1]
SVC分類器のインスタンスを作成し、データにフィットさせます:
clf = svm.SVC()
clf.fit(X, y)
- 学習済みモデルを使って新しい値を予測します:
clf.predict([[2., 2.]])
多クラス分類
SVCとNuSVC分類器は、「one-versus-one」アプローチを使って多クラス分類に使用できます:
X = [[0], [1], [2], [3]]
Y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X, Y)
dec = clf.decision_function([[1]])
スコアと確率
- SVM は直接確率推定を提供しませんが、
probabilityパラメータをTrueに設定することで確率推定を有効にすることができます:
clf = svm.SVC(probability=True)
clf.fit(X, y)
- その後、
predict_probaメソッドを使って各クラスの確率を取得することができます:
clf.predict_proba([[2., 2.]])
- 確率推定はコストがかかり、クロスバリデーションが必要ですので、慎重に使用してください。
不均衡問題
- SVM は、
class_weightパラメータを調整することで不均衡問題を処理することができます:
clf = svm.SVC(class_weight={1: 10})
clf.fit(X, y)
SVM による回帰
- 回帰問題では、SVM を
SVRクラスとともに使用できます:
X = [[0, 0], [1, 1]]
y = [0.5, 2.5]
regr = svm.SVR()
regr.fit(X, y)
regr.predict([[1, 1]])
密度推定と新奇性検出
- SVM は、
OneClassSVMクラスを使って密度推定と新奇性検出にも使用できます:
clf = svm.OneClassSVM()
clf.fit(X)
clf.predict(X)
まとめ
このチュートリアルでは、サポートベクターマシン(SVM)とその分類、回帰、密度推定、新奇性検出への応用について学びました。分類、多クラス分類、スコアと確率、不均衡問題、回帰、密度推定の手順について説明しました。SVM は機械学習における強力なツールであり、さまざまなシナリオで正確な予測を達成するために使用できます。