17章サポートベクタマシン

レシピ17.0 はじめに

 サポートベクタマシン(support vector machine)を理解するには、超平面(hyperplane)を理解する必要がある。形式的にいうと、超平面とはn次元空間内のn−1次元の部分空間である。複雑に聞こえるかもしれないが、実は簡単な話だ。例えば、2次元空間を2つに分けるには1次元の超平面(すなわち直線)で分割する。3次元空間を分割するには2次元の超平面(例えば平らな紙やベッドシーツのような平面)で分割する。超平面は単にこれをn次元に拡張したものだ。

 サポートベクタマシンは、訓練データ内のクラス間のマージンを最大化する超平面を見つけることで、データをクラス分類する。2次元の例では、この超平面は、2つのクラスを分ける最大限に幅の広い帯(つまり線にマージンがついたもの)になる。

 本章では、さまざまな場合のサポートベクタマシンの訓練方法を説明する。さらに、このアルゴリズムの動作を説明し、このアルゴリズムを拡張して一般的な問題を解決する方法を解説する。

レシピ17.1 線形クラス分類器の訓練

問題

 観測値をクラス分類するモデルを訓練したい。

解決策

 サポートベクタクラス分類器(SVC:support vector classifier)を用いて、クラス間のマージンを最大化する超平面を求める。

# ライブラリをロード from sklearn.svm import LinearSVC from sklearn import datasets from sklearn.preprocessing import StandardScaler import numpy as np # データをロードし、クラスを2つ、特徴量数も2つに制約 ...

Get Python機械学習クックブック now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.