記事「知っておくべきMQL5ウィザードのテクニック(第15回):ニュートンの多項式を用いたサポートベクトルマシン」についてのディスカッション

 

新しい記事「知っておくべきMQL5ウィザードのテクニック(第15回):ニュートンの多項式を用いたサポートベクトルマシン」はパブリッシュされました:

サポートベクトルマシンは、データの次元を増やす効果を調べることで、あらかじめ定義されたクラスに基づいてデータを分類します。これは教師あり学習法で、多次元のデータを扱う可能性を考えるとかなり複雑です。この記事では、2次元データの非常に基本的な実装であるニュートンの多項式が、価格とアクションを分類する際にどのように効率的に実行できるかを検討します。

サポートベクトルマシン(SVM)は機械学習の分類アルゴリズムです。分類は、こちらこちらで以前の記事で検討したクラスタリングとは異なります。両者の主な違いは、SVMが教師あり学習で,分類がデータをあらかじめ定義されたセットに分ける一方、クラスタリングは教師なし学習でこれらのセットがどのようなもので、いくつあるかを決定しようとすることです。

一言で言えば、SVMは、データに次元が追加された場合、各データ点が他のすべてのデータ点とどのような関係を持つかを考慮することによってデータを分類します。分類は、あらかじめ定義されたデータセットをきれいに分離する超平面が定義できれば達成されます。

多くの場合、対象となるデータセットは多次元であり、特に各セットの数が少なかったり、データセットの相対的な割合が偏っていたりする場合に、SVMがそのようなデータセットの分類において非常に強力なツールとなるのは、まさにこの属性によるものです。2次元を超えるSVMの実装ソースコードは非常に複雑ですが、多くの場合、pythonやC#のユースケースは常にライブラリを使用するため、ユーザーは最小限のコードしか入力せずに結果を得ることができます。

高次元のデータは訓練データを曲線あてはめさせる傾向があり、サンプル外のデータでは信頼性が低くなります。これがSVMの主な欠点の1つです。一方、低次元のデータでは交差検証をよりうまくおこなうことができ、これはより一般的に使用されています。

この記事では、完全な実装ソースコードがサードパーティライブラリを参照せずに共有されるため、2次元データを処理する非常に基本的なSVM(線形SVMとも呼ばれる)について検討します。通常、分離超平面は、多項式カーネル(英語)または放射状カーネルの2つの方法のどちらか一方から導かれます。ここでは前者の多項式カーネルのみを扱います。後者はより複雑であり、ここでは説明しません。

作者: Stephen Njuki