pandazx's blog

データ分析など雑多な技術ブログ

第二回 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(イエシル))

https://www.ieshil.com/

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

他の参加者による参加レポート

comonsense.hatenablog.com