機械学習アルゴリズムの実践 - Platt SMO と遺伝的アルゴリズム最適化 SVM

機械学習アルゴリズムの実践 - Platt SMO と遺伝的アルゴリズム最適化 SVM

[[206589]]

序文

以前、SVMの双対問題を最適化するために、単純なSMOアルゴリズムを実装しました。αを選択する際には、二重ループを使用して完全にランダムに選択しました。具体的な実装については、「機械学習アルゴリズムの実践 - SVMにおけるSMOアルゴリズム」を参照してください。

この論文では、以前の SMO アルゴリズムの簡略化されたバージョンに基づいて、α ペアを選択するヒューリスティックな方法を使用して SVM を最適化する Platt SMO アルゴリズムを実装します。また、最近遺伝的アルゴリズムフレームワーク GAFT を実装したので、遺伝的アルゴリズムを使用して SVM の元の形式を最適化することも試みました。

  • このアルゴリズムの対応する実装については、https://github.com/PytLab/MLBox/tree/master/svm を参照してください。
  • 遺伝的アルゴリズムフレームワーク GAFT プロジェクトアドレス: https://github.com/PytLab/gaft

文章

SMOにおけるヒューリスティック変数選択

SMO アルゴリズムでは、最適化のために毎回 α のペアを選択する必要があります。ヒューリスティック選択により、目的関数が最も速く減少するように、最適化する変数をより効率的に選択できます。

最初の α1 Platt SMO と 2 番目の α2 Platt SMO には異なるヒューリスティックが使用されます。

最初の変数の選択

最初の変数選択は外側のループです。以前の便利な全体の αα リストとは異なり、ここでは全体のサンプル セットと非境界サンプル セットを交互に使用します。

まず、トレーニング セット全体を走査して、KKT 条件に違反していないかどうかを確認します。変更されたポイントの αiαi と xi、yixi、yi が KKT 条件に違反している場合は、変更されたポイントを最適化する必要があることを意味します。

Karush-Kuhn-Tucker (KKT) 条件は、正定値二次計画問題の最適点に対する必要十分条件です。 SVM デュアル問題の場合、KKT 条件は非常に単純です。

トレーニング セット全体を走査し、対応する α を最適化した後、反復の 2 回目のラウンドでは、非境界 α のみを走査する必要があります。いわゆる非境界 α とは、境界 0 または C と等しくない α 値を指します。 同様に、これらのポイントについても、KKT 条件に違反していないかチェックし、最適化する必要があります。

その後、アルゴリズムは 2 つのデータ セットを交互に実行し続け、最終的にすべての α が KKT 条件を満たすと、アルゴリズムは終了します。

最大のステップ長を持つ α を素早く選択するためには、すべてのデータに対応するエラーをキャッシュする必要があるため、SVM の重要な変数といくつかの補助メソッドを保存するための SVMUtil クラスを特別に作成しました。

以下は、最初の変数に対して交互走査を選択するための大まかなコードと、対応する完全な Python 実装です (完全な実装については、https://github.com/PytLab/MLBox/blob/master/svm/svm_platt_smo.py を参照してください)。

2番目の変数の選択

SMO における 2 番目の変数の選択プロセスは内部ループです。最初の α1 を選択した後、最適化後に選択した 2 番目の変数 α2 がより大きな変化を持つことを期待します。先ほど導いた式によれば

新しいα2の変化は|E1−E2|に依存することがわかります。E1が正の場合、最小のEiがE2として選択されます。通常、各サンプルのEiはリストにキャッシュされており、リスト内の|E1−E2|でα2を選択することでステップサイズがほぼ最大化されます。

上記のヒューリスティックでは関数値を十分に削減できない場合があるため、次の手順を使用して選択します。

非境界データセット上の関数値を十分に低減できるサンプルを第2変数として選択する

境界外データ セットに変数がない場合、2 番目の変数選択はデータ セット全体に対してのみ実行されます。

それでもない場合は、最初のα1を再選択してください

2 番目の変数選択の Python 実装:

KKT条件は一定の誤差を許容する

Platt の論文の KKT 条件の判定では、一定の誤差を許容する許容範囲があります。対応する Python 実装は次のとおりです。

Platt SMO の完全な実装については、https://github.com/PytLab/MLBox/blob/master/svm/svm_platt_smo.py を参照してください。

前のデータセットでは、Platt SMO を使用して最適化し、次の結果を得ました。

セグメンテーション ラインとサポート ベクトルを視覚化します。

Platt SMO によって最適化されたサポートベクターは、SMO アルゴリズムの簡略化されたバージョンとは若干異なることがわかります。

遺伝的アルゴリズムを使用した SVM の最適化

私は最近、遺伝的アルゴリズムのフレームワークを作成しました。遺伝的アルゴリズムは非常に使いやすいヒューリスティックな無誘導探索アルゴリズムなので、遺伝的アルゴリズムを使用して SVM を最適化しようとしました。

遺伝的アルゴリズムの最適化を使用すると、最も直感的な形式である SVM の初期形式を直接最適化できます。

ちなみに、私は独自の遺伝的アルゴリズム フレームワークを紹介したいと思います。このフレームワークを使用すると、SVM アルゴリズムを最適化するために数十行の Python コードを書くだけで済みます。最も重要なのは、適応度関数を記述することです。上記の式に従って、データセット内の各ポイントから分割線までの距離を計算し、最小距離を返してから、それを遺伝的アルゴリズムに入力して進化的反復を行う必要があります。

遺伝的アルゴリズム フレームワーク GAFT プロジェクト アドレス: https://github.com/PytLab/gaft 、詳細な使用方法については README を参照してください。

さて、進化の反復のための集団の構築を始めましょう。

個人と集団の創造

2次元データポイントの場合、[w1、w2]とbの3つのパラメータを最適化するだけで済みます。個体の定義は次のとおりです。

人口規模は600で、人口が作成されます。

遺伝的演算子とGAエンジンの作成

ここでは特別なことは何もありません。フレームワークに組み込まれている演算子を使用するだけです。

適応度関数

この部分では、上記の svm の初期形式を記述するだけで済みます。これには 3 行のコードのみが必要です。

反復を開始

ここでは人口の300世代を繰り返す

遺伝的アルゴリズムで最適化された分割線を描く

得られたセグメンテーション曲線は次のようになります。

完全なコードについては、https://github.com/PytLab/MLBox/blob/master/svm/svm_ga.py を参照してください。

要約する

この論文では、SVM の最適化を紹介し、主に Platt SMO アルゴリズムを実装して SVM モデルを最適化し、遺伝的アルゴリズム フレームワーク GAFT を使用して初期 SVM の最適化を試みます。

<<:  GoogleのAutoML人工知能システムは、人間よりも優れた機械学習コードを作成できるようになりました

>>:  顔認識を完了するための3行のPythonコード

ブログ    
ブログ    
ブログ    

推薦する

...

生成AI人材の獲得競争が始まった。求人数は4倍に増え、最高年収は90万ドル

ウォール・ストリート・ジャーナルによると、求人ウェブサイトIndeedの統計によると、生成AI関連の...

科学者たちは、脳波を3%という低いエラー率で直接テキストに変換する「心を読む」方法を開発した。

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

人工知能が教育評価の近代化に貢献

教育評価は、教育の質の継続的な向上を促進する「牛の鼻」として、確立された教育目標に基づき、一定の教育...

イノベーションを統合し、障壁を下げ、PaddlePaddleは人工知能を推進して大規模な工業生産を実現します。

5月20日、中国国家深層学習技術応用工程研究室と百度が共催する「WAVE SUMMIT 2021 ...

AI は言語をより早く習得するために何ができるでしょうか?

新しい言語を学ぶことは間違いなく挑戦です。特に 18 歳以上の人にとっては、これまで触れたことのない...

ChatGPTヘルプ! 4歳の男の子は3年間で17人の専門医に治療を受けたが、効果はなかった。大型模型が病気の原因を正確に特定した

3年間「奇妙な病気」の治療を求めても効果がなかったのですが、ついにChatGPTによって診断に成功し...

機械学習で避けるべき3つのよくある間違い

企業は、お金の無駄遣い、アプリケーションのパフォーマンスの低下、成果の得られないという 3 つの間違...

研究結果:人工知能はパンデミック後にさらに普及するだろう

人工知能と機械学習は当初は懐疑的な見方に直面していたかもしれないが、新たな報告書によると、パンデミッ...

...

Forbes: 14 人の技術専門家が、将来 AI によって混乱が生じる業界を予測しています。

AI の恩恵を受ける業界はどれでしょうか?人工知能と機械学習はすでにさまざまな業界に導入されており...

顔認識に興味がありますか? JavaScriptで実装された顔検出方法

私はビデオや画像における顔のタグ付け、検出、顔認識技術に常に興味を持っています。顔認識ソフトウェアや...

わかりやすい! 「高校数学」勾配降下法の数学的原理を理解する

「時期尚早な最適化は諸悪の根源である。」 —ドナルド・アーヴィン・クヌース、コンピュータ科学者、数...