0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

機械学習 サポートベクトルマシン

Posted at

○この記事の要点
サポートベクトルマシンを学習したのでメモ

サポートベクトルマシン:
・分類問題、回帰問題のどちらでも利用できるアルゴリズム
・ロジスティック回帰を利用するよりも、良い結果が得られる場合がある
・マージン(学習データのうち、最も決定境界に近いものと、決定境界との距離)を大きくすることで、より良い境界を得ようとする手法
・ハードマージンとソフトマージンの手法がある。ハイパーパラメータで設定する
ハードマージン:マージンの内側にデータが入り込むのを許容しない手法。厳密に線を引きすぎるので、過学習につながる可能性がある。
ソフトマージン:マージンの内側にデータが入り込むのを許容する手法。柔軟。
・教師あり学習

#○ソースコード(Python) 二値分類問題への適用

サポートベクトルマシン
from sklearn.svm import LinearSVC
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
%matplotlib inline

# データ生成
centers = [(-1, -0.125), (0.5, 0.5)]
X, y = make_blobs(n_samples=50, n_features=2, centers=centers, cluster_std=0.3)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# モデルの作成と学習及び評価
model = LinearSVC() 
model.fit(X_train, y_train) # 学習
y_pred = model.predict(X_test) 
accuracy_score(y_pred, y_test) # 評価

print(y_test) # テストデータの正解ラベル
print(y_pred) # 予測データの正解ラベル
print(accuracy_score(y_pred, y_test)) # 正解率

# テストデータの散布図
fig, ax = plt.subplots()
ax.scatter(X_test[:, [0]], y_test[:], c='blue', label='test data')
ax.legend()

結果
[1 0 0 1 0 0 0 1 1 0 0 1 1 1 0]
[1 0 0 1 0 0 0 1 1 0 0 1 1 1 0]
1.0

ダウンロード.png

・テストデータと予測データが完全に一致しており、正解率が100%となっている。
・ただし、上記はデータが少ないことから、良いモデルになっているとは言い切れない。あくまでテストコード。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?