Learningが流行る前に大流行していた機械学習手法のSVM(サポートベクトルマシン)をご存知ですか?高速で、少ないデータでも良い性能が期待でき、データ解析の実務でも使える分類アルゴリズムだと言えます。0.19で動作確認しました。まとめSVMとはSVM(サポートベクトルマシン/サポートベクターマシン)は機械学習モデルの一種で、非常に強力なアルゴリズムです。教師あり学習で、分類や回帰に使われます。Learningが流行る前の世代ではその非常に高い汎化性能と使いやすさから、本当に広い分野で使われていました。マージン最大化という考え方、カーネル法という非線形への拡張などが肝ですが、scikit-learnを使うことで簡単に使うことができるようになりました。詳しく解説を知りたい方は、以下のPDFが非常に丁寧でおすすめです(要:大学数学)マージン最大化について概要を知りたい方は以下のページがわかりやすいのでおすすめです。目的SVMによるクラス分類について勉強していきましょう。そのために、ここではdigitsという手書き数字認識データセットを使い、クラス分類タスクを行います。0~9までの数字を手書きした8x8ピクセルのデータが収められています。ここではSVMを使ってこの画像データからラベル(0~9の数字)を予測します。準備まずはライブラリをimportしましょう。train_test_split,GridSearchCVSVCがここでの主役です。SVMでクラス分類を行うためのクラスですね。SVMで回帰を行いたい場合はその下のSVRをimportしてください。次はデータの読み込みです。test_size=0.2)データの分割(教師データやテストデータを作る)には、普通np.arrayのスライスを使います。シャッフルしてからスライスで40%や20%のデータをテストデータとするのですが、skleranのtrain_test-split関数を使うことで楽ができます。今読み込んだデータを見てみましょう。verbose=True)モデルの作成から学習までの流れもskleranなら2stepで簡単です。実験に再現性をもたせたい場合は、random_stateに適当な値を渡してください。このrandom_stateを指定しないと、適当な乱数シードが使われるので再現が難しくなります。sklearnのSVMでは、有名なSVMライブラリであるLibSVMが使われます。これはCで書かれているので、非常に速いのが特徴です。3])機械学習モデルのインスタンス.predictを行うことで、テストデータに対して予測ラベルを計算できます。この予測ラベルがどのくらいあっているのかも確かめてみましょう。0.4388888888888889正答率43%、これはかなり酷い数字ですね。予測結果を可視化してみます。color=color)緑がテストラベルと予測ラベルが同じだったもの、赤が間違っていたものです。この酷い結果を次のハイパーパラメータ探索でどこまで向上させられるか、確認してみましょう。パラメータチューニングここでは簡単に、グリッドサーチを使って「いいハイパーパラメータを見つける」探索を行います。search_paramsが探索空間です。ここではkernelとCについて探索します。finishedGridSearchCVのcv引数は、クロスバリデーションの際にデータを何個に分割するかを決めます。verbose=Trueとすることでログを表示してくれるので、時間がかかりそうな探索を行う場合はTrueにすることを忘れないように!最後に、n_jobsで並列に動作させます。8コア16スレッドのCPUを使っているなら、これらのスレッドすべてを使ってGridSearchを行うようにする設定が、n_jobs=-1になります。0.9833333333333333正答率が98.3%まで大きく向上しました。グリッドサーチでいいハイパーパラメータを見つけた成果が出ています。ちなみに先程と同じコードで可視化したものが以下になります。見えている範囲の画像はすべて正しく予測できていますね。Learning・ニューラルネットワークを使わないでも、ここまで高精度にクラス分類ができることがわかりました。Learningを使いこなせるとプロっぽいです。まとめこの記事ではSVM(サポートベクトルマシン)について紹介し、これを使ったクラス分類を行いました。sklearnを使っているので簡単に使えましたが、実際に自分で実装すると非常に大変なアルゴリズムです。SVMにはパラメータが膨大にあり、例えば「どのカーネル」を選べばいいのか、などは以外にデータの特性でアタリを付けることができます。詳しくSVMについて勉強したいときは、侍エンジニア塾のマンツーマンレッスンを試してみてください!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。無料体験レッスンを予約する書いた人フクロウ第一言語はPythonです。皆さんRustやりましょう。