サポートベクターマシン (SVM) の基本だけでも知りたい

皆さん、こんにちは。尝笔开発グループの苍-辞锄补飞补苍です。
今年のゴールデンウィークは飞び石连休ではありますが、皆さんは何か予定を入れられていますか?私は先日ソロキャンプに行ってきました。

本题です。
サポートベクターマシンは高次元のデータを効率よく分類することができるアルゴリズムで、ディープラーニングが登場するまでは机械学习で人気のアルゴリズムだったそうです。今回はそんなサポートベクターマシンの基本について整理しました。

サポートベクターマシン (SVM)

概要

サポートベクターマシン (SVM) は、主に分類に使用される教師あり学習アルゴリズムの一つです。SVM は、データポイントを異なるクラスに分けるための最適な境界線を見つけることを目的としています。このアルゴリズムは、特に高次元データや非線形なデータに対して効果的であり、カーネル関数を使用してデータを高次元空間にマッピングすることで、複雑な分類問題を解決します。

基本的な考え方

サポートベクターマシン (SVM) の基本的な考え方は、データポイントを異なるクラスに分けるための最適な境界線を見つけることにあります。以下の条件を満たす境界線を探します。

最大マージン

境界线と最も近いデータポイント(サポートベクター)との距离を最大化します。例えば以下の図では、左侧の図はデータポイントと境界线が近すぎるため、直感的に适切な境界线ではないことが分かるかと思います。一方で右侧の図は、データポイントと境界线が适度な距离で引かれているため、误判定なく分类されることが期待出来ます。

誤分類の最小化 (ソフトマージンとハードマージン)

これまでの図は分かりやすいように、データポイントが綺丽に分离されていました。しかし、现実はそう綺丽に境界线を引くことはできません。境界线を直线ではなく曲线で引くことにより分类することはできます(ハードマージン)。しかし、无理して境界线を引くと过学习を起こしかねませんので、ある程度は误分类を许容して境界线を引きます(ソフトマージン)。ソフトマージンは过学习を防ぎ、汎化性能を向上させます。

过学习について

过学习について説明します。過学習は、学習しすぎてしまい、机械学习が正しい判断を行えなくなる現象です。大量の学習データの中にはノイズが存在し、そのノイズを学習してしまうことにより、正しく判断が行えなくなるケースがあります。

例えば、以下の図では右上(ひし形のデータが集まっている個所)に、赤丸のノイズが存在します。そのノイズに合わせて境界線を引いた場合、新しいひし形を赤丸と判断してしまいます。この過学習は、SVMだけでなく、他の机械学习でも起こり得る現象です。机械学习では、いかに過学習を起こさせないかが大事になります。

カーネルトリックとカーネル関数

これまではそれとなく直线の境界线を引けました。では、以下の左図はどうでしょうか。ひし形が中央に集まり、赤丸がそれを囲うように点在しています。この场合、あえて次元を増やすことで、この复雑な分类问题を解决することができます。

カーネル関数は、実际に次元を追加することなく、データポイント间の类似度を计算して高次元空间にマッピングすることにより、复雑な分类问题を効率的に解决することができます。この手法をカーネルトリックと言います。

おわりに

基本ということで、2次元の平面でお話ししましたが、サポートベクターマシンは多次元説明変数に対しても効率よく分類タスクを行うことができます。また、複雑な分類タスクにも対応し、高精度な予測を行えることから、ディープラーニングが登場するまでは机械学习の中で人気のあるアルゴリズムだったそうです。

ではまた。


Recommendおすすめブログ