Ver. 1.0, 2017-08-11
森下功啓
1
識別(分類)問題とは?
• 特徴ベクトルを基に、クラスを分類する問題を識別問題という
2
• 特徴ベクトルが数値やラベルという点は回帰問題と同じ
• 正解が文字列や整数で与えられる「ラベル」という点が回帰問題と異なる
“ネコ”
“イヌ”
学習器
学習器
ここでの「クラス」とは、”猫”とか”イヌ”のこと
Random Forestの概要
3
Tree Model(木)
Tree Modelは、非線形回帰分析の一種である。樹状のグラフ
を作成して結果を表示するという特徴を持つ。目的変数が量的変数のとき回帰木、質的変数のとき決定木という。
4
https://ja.wikipedia.org/wiki/%E6%B1%BA%E5%AE%9A%E6%9C%A8
枝分かれの様子が木に似ている
決定木の例
5http://www.slideshare.net/mrtc0/machine-learning-41005650?next_slideshow=1
7
ところで、特徴量の中にはノイズにすぎないものや、場合によっては予想結果に悪影響を及ぼすものもある。
そこで、多数の全特徴量から一部をランダムに取り出して決定木を作成し、それらを多数束ねることでForest(森)とする。
また、このForestを構成する個々の木の多数決で最終出力を決定する。これがランダムフォレスト(RF)である。
*ランダムフォレストはアンサンブル学習の一種
RFの良いところ
外れ値に強い
とりあえず使っておけ、という安心感
大抵の問題に適用可能
回帰問題も識別(分類)問題にも対応
8
RFの学習例
• この例では特徴量は2つ
• 色でクラスターを表している
• クラスターを綺麗に分離できれば成功
9http://qiita.com/yshi12/items/6d30010b353b084b3749
元データ 学習後に決定境界を描画した様子過学習を若干起こしている。
ランダムフォレストを用いた、アヤメ(Iris)の自動識別の例
10
アヤメ(Iris)の分類問題
11
Iris versicolorIris setosa Iris versinica
3種類の花の種類を自動的に識別したい
Irisの4つの特徴量
• ガク片の長さと幅
• 花弁の長さと幅
12
https://www.kamikochi-vc.or.jp/learn/dictionary/dic_plants.html
特徴量の散布図行列
花の種類毎(層別)に色を付けた散布図行列
setosaは完全に集団から独立しており、識別しやすそうだ。 13
サンプルプログラムのダウンロード
14
1
2
Download: https://github.com/KatsuhiroMorishita/machine_leaning_samples
15
• 以降のスライドでは、下記のプログラムを使った解説を行います• ランダムフォレストというアルゴリズムを利用したサンプルです
iris_learning.csv
• 学習に使う教師データが格納されたCSVファイル
• 個体ごとの花弁とがく片の数値が並んでいる
16
1個体分のデータ
特徴ベクトル正解ラベル
learning.py
• 学習に使うPythonのスクリプト(プログラム)
17
18
ライブラリの取り込み
ファイルの読み込み
列で切り出しx: 特徴ベクトルy: 正解ラベル
学習
学習データに対する適合率計算
2次元配列→1次元配列
学習器の作成
学習済みの学習器をファイルに保存
学習器の動作確認
特徴量毎の重要度の確認
learning.pyの実行方法@Windows
• プログラムのあるフォルダでShift+右クリック
• メニューから「コマンドウィンドウをここで開く」又は「PowerShellウィンドウをここに開く」をクリック
• ウィンドウが開いたら、コマンドを入力してエンターキーを押す
19
実行したいプログラム名
*実行にはPython3とscikit-learnなどのパッケージがインストールされたPC/Macが必要です
実行結果の例
20なお、「ランダム」フォレストなので、結果は毎回微妙に変化する
学習がうまく行ったか1つ入力して試している
学習データに対するフィット具合
特徴量が結果に及ぼす影響力
Irisは3つ目と4つ目の特徴量の影響が大きいことが分かる。
ファイルに保存された学習器
• learning.pyを実行すると学習が行われ、学習済みの学習器はファイルに保存される
• 保存されたファイルを使えば、いつでも学習後の学習器を利用できる
21
保存されたモデル情報と、結合係数
中身はモデル構造やパラメータが記録されたバイナリである
prediction.py
• 検証データを使って、学習成果を検証するプログラム
22
23
ライブラリの取り込み
ファイルの読み込み
列で切り出し
予測
予測結果の保存
ファイルに保存済みの学習器を読みだして、オブジェクトを再構成
結果が数値でも文字列に変換
実行結果の例
24
コンソールへの出力
結果はcsvファイルとしても出力さている
検証データと予測の比較
• 検証データの正解と予測を比較することで性能を判断できる
• 正解と予測が一致していた方が良い
25
sepal_length sepal_width petal_length petal_width kind 予測 一致チェック
5.1 3.8 1.9 0.4 setosa setosa 1
4.8 3 1.4 0.3 setosa setosa 1
5.1 3.8 1.6 0.2 setosa setosa 1
4.6 3.2 1.4 0.2 setosa setosa 1
5.3 3.7 1.5 0.2 setosa setosa 1
5 3.3 1.4 0.2 setosa setosa 1
5.7 3 4.2 1.2 versicolor versicolor 1
5.7 2.9 4.2 1.3 versicolor versicolor 1
6.2 2.9 4.3 1.3 versicolor versicolor 1
5.1 2.5 3 1.1 versicolor versicolor 1
5.7 2.8 4.1 1.3 versicolor versicolor 1
6.7 3 5.2 2.3 virginica virginica 1
6.3 2.5 5 1.9 virginica virginica 1
6.5 3 5.2 2 virginica virginica 1
6.2 3.4 5.4 2.3 virginica virginica 1
5.9 3 5.1 1.8 virginica virginica 1
この例では完全一致であった
26