【Scikit-learn入門】機械学習の使い方

この記事では、Pythonと「Scikit-learn」で機械学習を行う方法について入門者向けに使い方を解説します。

Scikit-learnとは?特徴と環境構築

scikit-learnとは、Pythonの機械学習ライブラリです。読み方は「サイキット・ラーン」。
主な特徴は次の通りです。

主な特徴

特徴
幅広い機械学習アルゴリズムを実装(回帰分析、クラスタリング、SVM・ニューラルネット等の識別器、次元圧縮など)
BSDライセンスなので商用利用可能
情報が多くドキュメントも充実している
他のライブラリ「NumPy」「SciPy」「Pandas」「Matplotlib」とやり取りしやすい

環境構築

「Python」および「Scikit-learn」の導入方法を以下に整理しました。
WinPythonを使うと、「Python環境」「Scikit-learn」を一括で導入できるのでオススメです。

項目
Python環境構築 Windows環境・・・Python環境を構築する方法
②Linux環境(Ubuntu, Rasbian)・・・標準搭載されているので環境構築不要
③Mac環境・・・(´∀`) <・・・
Scikit-learn環境構築 インストール方法インストール方法(pip版)
※WinPythonでPython環境を構築した場合はこの作業は不要
動作テスト アイリスデータセット可視化バージョン確認
Pythonの基礎(参考) Python入門 サンプル集
機械学習の原理はこちら 【機械学習入門】アルゴリズム&プログラミング

回帰・・・線形回帰、ロジスティック回帰、サポートベクターマシン

回帰分析では、「結果データ」と「結果に影響を及ぼすデータ」の関係性を統計的に求める手法です。
この2つのデータの関係性がわかれば、将来どのような結果となるかの予測を行うことができます。
このとき、結果データを「目的変数」、結果に影響を及ぼすデータを「説明変数」といいます。
また、説明変数が1つの場合が「単回帰分析」、複数の場合は「重回帰分析」といいます。
Scikit-learnを用いて回帰分析を行う方法を以下に整理しました。

線形回帰

(一般化)線形回帰は、連続値を予測します。

項目 内容
特性 予測対象:連続値, 学習タイプ:教師あり, 可読性:○, 並列処理:✕
特徴 ・最小二乗法や最尤推定によって回帰直線の係数と切片を求めます。
使い方 単回帰:■単回帰分析学習ファイル出力学習ファイル読込
重回帰分析 ■重回帰分析学習ファイル出力学習ファイル読込

ロジスティック回帰

ロジスティック回帰は、回帰によって分類を行います。

項目 内容
特性 予測対象:分類, 学習タイプ:教師あり, 可読性:○, 並列処理:✕
特徴 ・2分類問題に対応(線形回帰の出力をロジット関数に入力)
使い方 学習・予測・出力

サポートベクターマシン

サポートベクターマシン(SVM)は、回帰によって分類します。

項目 内容
特性 予測対象:分類, 学習タイプ:教師あり, 可読性:○, 並列処理:✕
特徴 ・マージン最大化のアイデアにより、汎化性能が高い2分類を実現
・学習時間は長い
使い方 学習・予測・出力多クラス分類学習ファイル出力学習ファイル読込

木・・・決定木、回帰木、ランダムフォレスト

決定木

決定機では、木構造モデルで分類します。

項目 内容
特性 モデル:木構造(非線形), 学習タイプ:教師あり, 予測対象:分類, 可読性:○, 並列処理:✕
特徴 ・枝先で1つの説明変数と閾値のセットでにデータを2つに分けるのを繰り返す。
・説明変数の選択と閾値は、ジニ不純度やエントロピー等で決定
使い方 決定木分析データ予測学習ファイル出力学習ファイル読込

ニューラルネットワーク・・・多層パーセプトロン(MLP)

MLP

項目 内容
特性 モデル:神経回路, 学習タイプ:教師あり 予測対象: 連続値・分類, 可読性:✕, 並列処理:○
特徴 ・古典的なニューラルネットワーク
・多層構造(入力・隠れ層・出力)
・学習にはバックプロパゲーションを用いることが多い。
・複雑なモデルを構築できる反面、過学習も多い。
使い方 学習・予測・出力識別率(予測検証)学習ファイル出力学習ファイル読込アヤメ分類
※バージョン0.1.8.0以降から使用可能

クラスタ分析・・・階層型、非階層型、トピック

クラスタ分析(Clustering) は、特徴が類似するデータ同士をまとめて、データ構造を発見します。
分類 (Classification)データとラベルを学習し、データに対するラベルを予測します。

階層型クラスタ分析

項目 内容
特性 予測対象:分類, 学習タイプ:教師なし, 可読性:○, 並列処理:✕
特徴 ・代表例はユークリッド距離*ウォード法
・あらかじめ定義した距離を用いてデータをグループ化
・クラスタ数(分類数)は、計算後に変更可能
使い方 ■準備中

非階層型クラスタ分析

項目 内容
特性 予測対象:分類, 学習タイプ:教師なし, 可読性:✕, 並列処理:○
特徴 ・代表例はk平均法
・クラスタ数(分類数)を事前に指定する必要がある(後から変更不可)
・階層型クラスタリングで高速化もできる・
初期値によって結果が異なる等の問題あり
使い方 データの分類ラベリング各クラスタのサンプル数表示各クラスタの平均値表示

トピックモデル

項目 内容
特性 予測対象:分類, 学習タイプ:教師なし, 可読性:✕, 並列処理:○
特徴 ・代表例はLDA
・トピック数(分類数)は事前に与える必要あり
・トピック毎の出現頻度からスコアを計算してデータを分類
・計算量が大きい
使い方 ■準備中

便利な機能・ツール・参考文献

項目
便利な機能 データセット
参考文献 公式ドキュメント【機械学習】入門者向け資料scikit-learn機械学習Scikit-Learn Cheat Sheet: Python Machine LearningScikit learnで学ぶ機械学習入門(Slide Share)scikit-learn から学ぶ機械学習の手法の概要scikit-learn: Python での機械学習機械学習ライブラリscikit-learnの馬鹿丁寧なe-learningscikit-learnでよく利用する関数の紹介人工知能に関する断創録scikit learnチートシート代表的な機械学習手法一覧
関連記事