Mahoutでロジスティック回帰してみた
Mahoutを試す機会があったのでメモしとく。
参考にしたのは以下。

- 作者: Sean Owen,Robin Anil,Ted Dunning,Ellen Friedman,伊東直子,真鍋加奈子,堀内孝彦,都元ダイスケ
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/10/26
- メディア: 大型本
- 購入: 3人 クリック: 26回
- この商品を含むブログ (10件) を見る
使用したデータは以下を参考にみんな大好き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
テスト
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でロジスティック回帰が動かせるようになったので色々試してみる。