Pythonで利用可能な機械学習のライブラリであるscikit-learnがあります。分析を行なった人なら使ったことがあると思います。
scikit-learnのドキュメントにはアルゴリズムの仕様説明だけでなく、機械学習におけるアプローチ方法についても記載があります。
機械学習の問題解決のために試行錯誤する際に、道標となるような基本的なアプローチ方法がまとまっているので紹介します。
ドキュメント
scikit-learnのドキュメントは安定版の1.0をベースに紹介します。
開発版の1.1も公開されているので興味がある方は覗いてみてください。
安定版1.0
開発版1.1などの別バージョン
GitHub ソースなど
検出器の選び方
機械学習の問題を解決する上で最も難しいのは、その作業に適した推定器を見つけることであることがよくあります。
機械学習の手法ありきではなく、データありきで問題を解決する必要があるので、データの特徴をよく理解した上で最適な手法を選択する必要があります。
データの種類や問題によって、適した推定器は異なります。
以下のフローチャートは、データに対してどの推定器を試すべきか、どのように問題に取り組むべきか、大まかなガイドとなるようにデザインされています。
下のフローチャートの各推定量をクリックすると、そのドキュメントが表示されます。
オレンジ色のSTARTから見ていくと、アルゴリズムを選択する分岐点には、データ数が10Kや100K以上あるかが判断材料になっていることがあります。
自分の使ったことがあるアプローチだけでなく、データの特徴に基づいて判断してアプローチ方法を変えてみるというのも大切です。
緑色の検出器までたどり着くと、4つの大きなカテゴリ(classification,regression,clustering,dimensionality reduction)に分かれています。以下に4つのカテゴリの特徴をまとめます。
分類 classification
ある物体がどのカテゴリーに属するかを識別すること。
応用例はスパム検出、画像認識。
アルゴリズムはSVM, nearest neighbors, random forest, など。
リグレッション regression
物体に関連する連続値の属性を予測する。
応用例は医薬品の反応、株価の推移。
アルゴリズムはSVR, nearest neighbors, random forest など。
クラスタリング clustering
類似したオブジェクトをセットに自動的にグループ化すること。
応用例は顧客のセグメンテーション, 実験結果のグループ化。
アルゴリズムはk-Means、スペクトルクラスタリング、Mean-Shiftなど。
次元削減 dimensionality reduction
考慮すべき確率変数の数を減らすこと。
応用例は可視化、効率化。
アルゴリズムはk-Means、特徴選択、非負行列因子分解など。