INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

Mahoutでロジスティック回帰してみた

Mahoutを試す機会があったのでメモしとく。

参考にしたのは以下。

Mahoutイン・アクション

Mahoutイン・アクション

使用したデータは以下を参考にみんな大好きData Expo 2009のAirline。


前処理

上記スライドを参照に使用しないカラムをカットする。

$ cut -d',' -f2,4,9,13,17,18,19,22 2007.csv > 2007_cut.csv
$ cut -d',' -f2,4,9,13,17,18,19,22 2008.csv > 2008_cut.csv


また数値変数にNAの文字列があるとNumberFormatExceptionが発生するのでとりあえず0に置換しておく。

$ sed -e "s/,NA,/,0,/g" 2007_cut.csv > 2007_sed.csv
$ sed -e "s/,NA,/,0,/g" 2008_cut.csv > 2008_sed.csv


ヘッダ行は""で囲む必要があるそうなので囲んでおく。


トレーニング

2007年のデータ(7,453,216レコード)でトレーニングする。

$ mahout trainlogistic --input ./2007_sed.csv ¥
--output ./model ¥
--target Cancelled --categories 2 ¥
--predictors Month DayOfWeek UniqueCarrier CRSElapsedTime Origin Dest Distance ¥
--types word word word numeric word word numeric


60台のHadoopクラスタで3分くらいでモデルができた。


テスト

2008年のデータ(7,009,729レコード)でテストしてみる。

$ mahout runlogistic --input 2008_sed.csv ¥
--model ./model --auc --confusion
Running on hadoop, using /usr/lib/hadoop/bin/hadoop and HADOOP_CONF_DIR=
MAHOUT-JOB: /usr/lib/mahout/mahout-examples-0.7-cdh4.6.0-job.jar
AUC = 0.63
confusion: [[6872294.0, 137434.0], [0.0, 0.0]]
entropy: [[-0.0, -0.0], [-24.6, -3.4]]
14/04/08 09:30:43 INFO driver.MahoutDriver: Program took 51884 ms (Minutes: 0.8647333333333334)


2007年のデータでモデルを作成して2008年のデータに当てはめてみたらキャンセル0という予測結果に…
AUCも0.63と低いのでイマイチなモデルっぽい。


とりあえずMahoutでロジスティック回帰が動かせるようになったので色々試してみる。