Pythonライブラリ「Scikit-learn」で機械学習を行う方法を解説します。
Scikit-learnとは
Scikit-learn(読み:サイキットラーン)は、Pythonで機械学習を行うための代表的なライブラリです。シンプルかつ一貫性のあるAPIで使いやすく、学習から実務まで幅広く活用されています。主な特徴は以下のとおり。
- 幅広いアルゴリズムに対応
- 線形回帰、SVM、ランダムフォレスト、k-NN、クラスタリング(k-meansなど)といった様々なアルゴリズムを扱っています。
- データ構造が扱いやすい
- NumPy配列やPandasデータフレームに対応しているため、他のライブラリとデータの受け渡しがしやすい
- 学習コストが低い
- シンプルかつ一貫性がある(「学習→予測→評価」の流れでAPIを呼び出して使用する)ため、直感的で使いやすいです。
- 日本語の情報量も多く、公式ドキュメントや解説書なども充実しています。
- 商用利用可能
- BSDライセンスなので、条件を満たせば商用利用可能。
解説動画
本ページの内容は以下動画で解説しています。
scikit-learn(サイキット・ラーン)とは、Pythonの機械学習モジュールです。
環境構築
回帰分析
回帰分析では、「結果(目的変数)」と「結果に影響を及ぼすデータ(説明変数)」の関係性を統計的に求める手法です。2つのデータの関係性がわかれば、将来どのような結果となるかの予測を行うことができます。説明変数が1つの場合が「単回帰分析」、複数の場合は「重回帰分析」といいます。
サポートベクターマシン(SVM)
【特徴】予測対象:分類, 学習タイプ:教師あり, 可読性:○, 並列処理:✕
【概要】マージン最大化のアイデアにより、汎化性能が高い2分類を行います。計算コストは高めです。
決定木分析
【特徴】モデル:木構造(非線形), 学習タイプ:教師あり, 予測対象:分類, 可読性:○, 並列処理:✕
【概要】枝先で1つの説明変数と閾値のセットでにデータを2つに分けるのを繰り返します。説明変数の選択と閾値は、ジニ不純度やエントロピー等で決定されます。
クラスタ分析
特徴が類似するデータ同士をまとめて、データ構造を発見します。分類 (Classification)データとラベルを学習し、データに対するラベルを予測します。
階層型クラスタ分析
【特徴】予測対象:分類, 学習タイプ:教師なし, 可読性:○, 並列処理:✕
【概要】代表例はユークリッド距離*ウォード法。あらかじめ定義した距離を用いてデータをグループ化。クラスタ数(分類数)は、計算後に変更可能。
非階層型クラスタ分析
【特徴】予測対象:分類, 学習タイプ:教師なし, 可読性:✕, 並列処理:○
【概要】代表例はk平均法。クラスタ数(分類数)を事前に指定する必要がある(後から変更不可) 。階層型クラスタリングで高速化もできる。初期値によって結果が異なる等の問題あり。
ニューラルネットワーク
【特徴】モデル:神経回路, 学習タイプ:教師あり 予測対象: 連続値・分類, 可読性:✕, 並列処理:○
【概要】古典的な多層構造(入力・隠れ層・出力)のニューラルネットワーク。学習にはバックプロパゲーションを用いることが多い。複雑なモデルを構築できる反面、過学習も多い。
応用例
時系列データの異常検知
時系列データの類似度
参考文献
- scikit-learn機械学習
- Scikit-Learn Cheat Sheet: Python Machine Learning
- Scikit learnで学ぶ機械学習入門(Slide Share)
- scikit-learn から学ぶ機械学習の手法の概要
- scikit-learn: Python での機械学習
- 機械学習ライブラリscikit-learnの馬鹿丁寧なe-learning
- scikit-learnでよく利用する関数の紹介
- 人工知能に関する断創録
- scikit learnチートシート
- 代表的な機械学習手法一覧
関連ページ
