【超簡単】アンサンブル学習器で機械学習を体験!!

みなさんこんにちは、レッドインパルスのたいちです。
今回はオープンソースのライブラリを用いた機械学習を紹介したいと思います!

下記するコードとデータを同一ファイル内に置いて、プログラムを実行するだけで簡単に機械学習が体験できるので、みなさんぜひやってみてください!
ちなみにプログラムはpythonで書いてます。

アンサンブル学習とは?

今回取り扱った機械学習はアンサンブル学習という学習器です。
特徴としては、個別に学習した複数の学習器を融合させることで性能を向上させていることが挙げられます。ディープラーニング等と比べると、パラメータチューニングがしやすく、マシンのスペックも低くて済むのも特徴です。
それではさっそくやってきましょう!

ライブラリのインストール

まず初めにライブラリのインストールを行いましょう。

$ sudo pip install pandas scikit-learn numpy matplotlib

これらがインストールできれば下準備は完了です。

取り扱うデータ配列について

紹介する事例は簡単な例で、アイスクリームの売上額を最高気温と通行人数から学習して算出しようというものです。
実際のデータをcsvのデータ形式で表します。

(ice.csv)
date,ice,temp,street
2012/8/1,12220,26,4540
2012/8/2,15330,32,5250
2012/8/3,11680,32,6000
2012/8/4,12640,29,5120
2012/8/5,15150,34,4640
2012/8/6,16440,33,8620
2012/8/7,16080,35,5810
2012/8/8,9830,34,4170
2012/8/9,14520,29,5160
2012/8/10,14610,34,4260
2012/8/11,11570,28,4910
2012/8/12,11290,34,5870
2012/8/13,10770,26,5580
2012/8/14,13890,30,5660
2012/8/15,12060,30,4330
2012/8/16,18830,34,6410
2012/8/17,12160,25,4130
2012/8/18,6550,30,4390
2012/8/19,9420,31,5650
2012/8/20,10480,26,5150
2012/8/21,13610,27,5560
2012/8/22,17380,29,7540
2012/8/23,18540,29,8920
2012/8/24,13090,30,7830
2012/8/25,12990,30,4050
2012/8/26,15070,35,5040
2012/8/27,10020,30,4050
2012/8/28,16070,30,5200
2012/8/29,16540,31,8810
2012/8/30,20030,26,8870
2012/8/31,11160,27,4410

左から日付、アイスの売り上げ、気温、通行人数のデータ配列です。
右二つの気温と通行人数データを入力値として、アイスの売上額を出力するわけです。

実行するプログラム

データに対応したプログラムは以下のようになります。

(ExtraTreeRegressor.py)

from math import *
import pandas as pd
import numpy as np
from sklearn.tree import ExtraTreeRegressor
import matplotlib.pyplot as plt

data=pd.read_csv('ice.csv')
x=data[['temp','street']]
y=data['ice']
clf=ExtraTreeRegressor()
clf.fit(x,y)
p=clf.predict(x)
print clf.score(x,y)
t=np.arange(0.0,31.0)
plt.plot(t,data['ice'],'--',t,p,'-')
plt.show()

まずアンサンブル学習用のライブラリを読み込んで、xに気温と通行人数データ、yにアイスの売上額をいれています。
p=clf.predict(x)の命令実行によって、xの入力をアンサンブル学習を通してpへ予測値の出力を行います。
plt.plot(t,data[‘ice’],’–‘,t,p,’-‘)で実際のアイスの売り上げと予測値の比較グラフを表示するようになっています。
ちなみにプログラム名やコード中にExtraTreeRegressorとありますが、これはアンサンブル学習器の種類の一つです。

実行結果は以下のようになります。

$ python ./extTreeReg.py
> 0.984509772248

プログラムを実行するとグラフとともに数字が出力されますが、これは正答率となっていて、1を上限に何%の近似結果を機械学習によって出せたのかを表しています。
なので今回は98%近くの正答率であったということになります。
グラフは実線が実際の売り上げで、破線が機械学習で予測した売り上げ結果になります。

まとめ

機械学習に触れてみようということで、簡単な事例においての機械学習を紹介しました。
今回、参照にしたのはこちらの本です!

もっと詳しく知りたいという方は読んでみることをお勧めします。
一応kindleを持っていれば無料で購読できるようです。

それでは!