第二回 Hivemall Meetup 参加メモ
以下の勉強会に参加
- eventdots.jp
- 日時:2015/10/20 19:00-21:00
- 場所:渋谷 dots community space
- 参加者:130人ぐらい
Hivemall v0.4 新機能紹介
発表者:Treasure Data 油井 @myui
スライドは後でUPされるらしい(期待)
以下に記載するSQLのサンプルはテキトーなメモなので、正しくは公開されるスライドを参照してください。
Hivemallとは
- Hive UDFを利用した機械学習ライブラリ
- モチベーション:Machine Learning on SQLの実現
- HortonworksがHivemall on Pigに取り組んでいる
- ヤマグロさん?がHivemall on Sparkに取り組んでいる
サポートするML
- カテゴリ:Classification, Regression, kNN and Recommendation, Feature Engineering, Anomaly Detection
- 以下は個別の手法
- AdaGrad. ビッグデータの回帰でパラメータの自動チューニングがあり、性能が良い
- TF-IDF vectorizer
- Local Outlier Factor(LOF)
Hivemallの事例
- Scaleout, Freakout, OISIX, Adtech, Livesense
テーブル定義の例
- row_id, label(正解), features(Array)
- rescale(features)とすれば、正規化が行われる(便利!)
logistic regression trainingは以下のようなSQL
SELECT feature avg(weight) as weight FROM( SELECT logress(label, features,,,) FROM xx )
アンサンブル学習も可能. 以下のようなSQL
FROM ( SELECT FUNC1(x) FROM UNION ALL SELECT FUNC2(x) FROM UNION ALL SELECT FUNC3(x) FROM UNION ALL )
推定も同様に可能
学習だけやって、推定をMySQLなどのRDBで行うことも可能 以下のようなSQL
select sigmoid(sum(weight)) as prob from model where feature in (0,1,10)
Hivemall v0.4 新機能
- Random Forest
- Factorization Machine. sparseなデータに強い
Matrix Factorizationとは
- Amazonのレビューは1ユーザから見たら、ほとんどのアイテムにしたことがない
- そのため、Item, Userの行列を作ると、スパース行列になる
- そういう時に有効な手法
Factorization Machineとは
- 行列の横軸に、Userだけでなく、User, Movie, Other Movies rated, Timeなども一緒に並べる
- (スライドにイメージ図がある)
- 本手法はPolynomial Regression(多項式回帰) + Factorizationと似ている
- [a,b]をdegree-2 polynomial featuresとは、[1,a,b,a2,ab,b2]となる
- これにより、線形を非線形にするらしい
- 文字列のデータを数値に変換せずに、そのまま処理できるようになっている
Hivemall Roadmap
- v0.4.1 年末リリース予定
- Gradient Tree Boosting(GBT). RFはDecision TreeをBaggingするが、GBTはboostingする
- Field-aware Factorization Machine
- v0.4.2
- Online LDA
- Mix server on Apache YARN
- 今は並列処理した後の数値の平均を取っているが、本手法では、学習中にワーカー間でパラメータを共有して、収束を高速化する
Livesense(リブセンス)におけるHivemallを利用した不動産価格推定の取り組み
発表者:リブセンス @yoshi_ken
- サーバ/インフラエンジニア養成読本の執筆者
Hivemallで回帰分析した話
建物の中立評価や市場価格と、その価格推移履歴を公開(IESHIL(イエシル))
PrestoでもSQLで単回帰分析は可能
重回帰分析をHadoopでやりたい。そこで、Hivemall
学習数が少ない場合は、amplify()でデータ量を増やせる(e.g. 2万倍)
- キレイなデータを増やすと、モデルが補正されるので、結果的に精度が向上することがある
- (おそらく、やっているのは、レコードのコピーで単純に増やす)
同じ回帰のAROWe,PA2aの精度比較
- AROWeは少ない学習反復数で、ある程度の精度が出る
- PA2aは学習反復数は多いが、より高い精度が出る
- (何回、学習すればよいかわからなそうなので、ツラそう)
R2決定係数のまやかし
- 説明変数を増やせば、R2決定係数は1.0に近づき(過学習)
- 学習データの範囲でありえない値が出ていることがあれば、あやしい
- パーセンタイルの誤差率を使うとよい
価格査定は割と外挿となる未知の物件価格予測となる
- 量的変数であっても、駅徒歩と同様に線形に推移しない場合は交差項を用いて、ある程度の範囲のみに絞るとよい
Hivemallのおかげで、機械学習を使った新規サービスを4ヵ月でリリースできた
サービスの推定を高速化
- オンライン推定は時間がかかるので、事前にすべての組合せを計算しておき、オンラインではKVSで問い合わせるだけにしておくとよい
境界線問題
- 隣り合っている建物で平米数が同じなのに、単価が大きく違うことがある
- 渋谷区と他の区の境目など
OISIXにおけるHivemallを利用した会員離脱防止の取り組み
発表者:Oisix システム部 普川
- 機械学習は完全に素人の状態からスタートした
Hivemallで解約を減らせそうな話
定期会員:10万人
- 半分の人が週に1回注文. この利用会員の解約を減らすのが会社にとって大事
やってみたこと
- 問題:過去1ヶ月のデータで学習して、翌月の解約会員を予測する
- 手法:ロジスティック回帰、説明変数は約100個
- 結果:精度30%
- 試作:ポイント付与で解約率が半減
非解約者の振る舞い
- 機械学習でなければ、わからなかったことが明らかに
- サイト訪問日、雑貨や嗜好品購入
チューニング
- ログイン回数を曜日別ログイン回数にしたら精度UP
1ヶ月以上利用していないが解約していない人もいる。 そういう人を解約すると予測しても、ムダ。 定期会員は月の回避はないので、こういうユーザはいる。
そういうユーザを対象外にするために、 今回は入会後、直近、数ヵ月のユーザを対象にした。
まとめ
- Hivemallは導入ハードルが低い
- 精度アップより効果アップ(会社の利益への貢献)
オススメサイト qiita.com