Hivemall meetup vol.4

Please download to get full document.

View again

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
 102
 
  1. “カスパーが裏切った!?” ほら吹き野郎のHivemall奮闘記 株式会社ベネッセコーポレーション デジタルビジネス開発課…
Related documents
Share
Transcript
  • 1. “カスパーが裏切った!?” ほら吹き野郎のHivemall奮闘記 株式会社ベネッセコーポレーション デジタルビジネス開発課 久光英太
  • 2. 目次 1. 自己紹介 2. ベネッセについて 3. Hivemall使ってやってみたこと 4. これからやってみたいこと 5. 最後に
  • 3. 1.自己紹介 • 2006年頃よりアクセス解析ツールを用いたデータを活用したウェブマーケティングを実践 • 2009年より株式会社デジタルフォレスト(現:NTTコムオンライン)に入社。商品企画部門 にて各種データ活用ツールの開発等に従事 • 2014年に独立。ハッカソン等にも参加し、色々遊びながらシステム構築・活用支援を展開 • 2017年8月からはベネッセコーポレーションにおいてDMP活用支援業務に従事 • 趣味はトランペット演奏(ほら吹き)、2004年に結成した自身のビッグバンドを中心に演奏 活動を展開
  • 4. 2.ベネッセについて(事業・サービス)
  • 5. 2.ベネッセについて(ライフステージ別一覧) 介護ホーム入居者 1.3万人 赤ペン先生 1.3万人 進研模試等受験者 787万人 0歳~18歳 進研ゼミ+こどもチャレンジ会員 271万人 妊娠・子育て・生活 幼児 小学校 中学校 高校 社会人 シニア 全世代・海外 紙 WEBEC リ ア ル マ ー ケ 年25万人 1.5万人 月60万部 雑誌全部数 通販購入者 年588万uu 新規入会者 モニター組織 8 年60万部 産院ルート 海外の会員 +106万人 世界の拠点 497拠点 キッズ&ファミリー事業本部
  • 6. 2.ベネッセについて(要旨) • メディア運営 ↓ • マネタイズ ↓ • 広告運用 ✓ TreasureDataを昨年導入し運用開始 ✓ DMPとして活用し広告収益の向上を図る ↓ • Hivemallを使って更に収益化を図ろう!!
  • 7. 2.ベネッセについて(DMPとしての活用図)
  • 8. 2.ベネッセについて(DMPとしての活用図)
  • 9. 3.Hivemallを使ってやってみたこと
  • 10. 3.Hivemallを使ってやってみたこと ・会員のデータを使って未知のデータから広告セグメント対象のユーザを掘り起こす ・お題はオーソドックスな二値分類(セグメント対象|非対象)
  • 11. 3.Hivemallを使ってやってみたこと • とりあえず「ランダムフォレスト」でやってみる ① データセット作る ② ランダムフォレスト実施してモデル作成 ③ 作ったモデルで予測実施 ④ 精度評価
  • 12. 3.Hivemallを使ってやってみたこと SELECT auc(prob, label) AS auc FROM( SELECT pd.prob AS prob, ft.label AS label FROM featuretable AS ft JOIN predicted AS pd ON ft.aid = pd.aid ORDER BY prob DESC ) t 正解のラベルと予測結果の probabilityの値、これをユー ザ毎に並べる auc関数の引数に二つのデータ を入れれば結果が出てくる。 簡単!!
  • 13. 3.Hivemallを使ってやってみたこと TreasureDataにはdigdagが「Workflows」というメニューで実装されているので、 必要な処理を順番に書けばあとはいい感じにやってくれる
  • 14. 3.Hivemallを使ってやってみたこと 機械学習タスクの一元管理 GUIで管理、実行結果の確認が出来る シンプルな定義ファイルによる クエリ実行順序指定
  • 15. 3.Hivemallを使ってやってみたこと ① とりあえず何も考えずにデータ入れて実行→失敗 aucが0.99という数値を出して「すっげぇ、俺って天才じゃん!!」と喜ぶも、 油井大先生より「リーク変数入ってるよ、それ」と冷静に返される • 会員データを使ってモデルを作り、会員非会員関係なく予測を実施した • ところが、会員データから出てくるのは会員限定コンテンツの履歴ばかり • 結果、セグメント対象|非対象を当てにいこうと思っていたのに、結果的には会 員か非会員かを当てにいっていた
  • 16. 3.Hivemallを使ってやってみたこと ② 会員に限定して再度検証→失敗 そこで会員に限定して検証するもaucが0.98と下がらない。しかも同じデータを 使ってロジスティック回帰でモデルを作ってみたら、こちらは0.71と数値的にはい い感じの値が出てしまい、どっちが正しいのか迷う
  • 17. 3.Hivemallを使ってやってみたこと • アドバイスに従い、決定木を見てみることにする
  • 18. 3.Hivemallを使ってやってみたこと train_randomforest_classifier( features, label, '-trees 1 -output javascript -disable_compression‘ ) どうやら0.5になって変わった(動かなかった)
  • 19. 3.Hivemallを使ってやってみたこと SELECT model_id, tree_export(model, "-type javascript", array('sepal_length','sepal_width','petal_length','petak_width'), array('Setosa','Versicolour','Virginica')) as js, tree_export(model, "-type graphvis", array('sepal_length','sepal_width','petal_length','petak_width'), array('Setosa','Versicolour','Virginica')) as dot FROM( SELECT train_randomforest_classifier(features, label, "-trees 1 -attrs C,Q,Q,Q,Q,・・・") FROM( SELECT array(k5_2*1.0, em*1.0, am*1.0, pm*1.0, lm*1.0,・・・) AS features, label FROM featuretable WHERE testflag = 1 ORDER BY label ) a WHERE size(features) > 0 ) b ランダムフォ レスト実行 (インプット する特徴量は double型の 配列) tree_export を使って出力、 typeは javascriptと graphvisが 選べる
  • 20. 3.Hivemallを使ってやってみたこと • feature#15が幹に近いと ころで出てきて振り分けし ているが、実はここで大半 が振り分けられている • 重要度はノードの出現回数 に依存する為「ノードとし て出現回数はすごく限られ るが幹に近いところで振り 分けに影響を与えている」 ような変数は重要度は低く 出るものの、振り分けには 過度の影響を与えている? feature#15 がtrueの時は その後も色々 分岐しながら 振り分けが進 む falseの場合 はいきなり振 り分け。実際 はこのルート を辿る数が多 かった
  • 21. 3.Hivemallを使ってやってみたこと ③ リークっぽい変数(k5_2)を除外して実施→失敗 aucは0.76といい感じのところに収まったものの、ビジネス目的である掘り起こ しの数は減ってしまった。 元データではセグメント 対象ではないが、予測の 結果はセグメント対象で ある。この数が重要!!
  • 22. 3.Hivemallを使ってやってみたこと • アドバイスに従い、三種混合(ランダムフォレストのk5_2あり、ランダムフォ レストのk5_2なし、ロジスティック回帰)でやってみる
  • 23. 3.Hivemallを使ってやってみたこと ④ 三種混合で実施→失敗 aucは上がるものの、掘り起し実態は変わらず。
  • 24. 3.Hivemallを使ってやってみたこと
  • 25. 3.Hivemallを使ってやってみたこと 今後に向けて ①ランダムフォレストの実施方法がよくない? ②説明変数がいけてない? ③説明変数が多すぎる? ④っていうか、こんなもの?
  • 26. 4.これからやってみたいこと ① 広告CT推定 • 広告クリックする人かどうか • 実はやってみた • aucは0.5 SELECT feature as feature, CAST(AVG(weight) AS FLOAT) AS weight FROM ( SELECT logress( addBias( array_concat( quantitative_features(array("past_time","sspv",・・・), past_time,sspv,・・・), categorical_features(array("bkfill","host",・・・), bkfill,host,・・・) ) ),CAST(label AS FLOAT)) AS (feature, weight) FROM ( SELECT zscore(CAST(past_time AS int), avg_past_time, std_past_time) AS past_time, zscore(CAST(sspv AS int), avg_sspv, std_sspv) AS sspv, ・・・ label,bkfill,host,itemid,slot_size,area,・・・ FROM zscoremake ) a ) b GROUP BY feature
  • 27. 4.これからやってみたいこと ② コンテンツ分類 • テキストデータを取って、テキスト分類器で分類 • 分類したらMatrix Factorizationでユーザ別のオススメのコンテンツ分類を出す(ユーザ別の押し属性が分 かれば、広告セグメントとして使える?) ユーザーとの接触 が多い(濃い) =精度の高い分析 ができる
  • 28. 4.これからやってみたいこと ウィメンズパークは、妊娠初期から接点がある
  • 29. 4.これからやってみたいこと 話題が具体的で相談者も真剣
  • 30. 5.最後に
  • 31. 5.最後に ベネッセでは データに恋する マニア募集中です
  • 32. 5.最後に 10.6
  • 33. 4.これからやってみたいこと サプライズ・アタック 個人情報の目的外使用によるアプローチ
  • 34. 5.最後に 個人は特定しなくても、 プライバシーポリシーに書いてあっても、 閲覧履歴等は、あらかじめご承諾をいただいた上で取得し利用す る場合がありますが、主にはお客様がサイトを利用されることで cookie等(*1)を通して自動的に記録されます。 これらの閲覧履歴等は、お客様が再度サイトにアクセスされたと き等に閲覧や利用の際の手間を省いたり、サービスの研究開発等 に利用するほか、興味・関心等にあわせた広告やサービスを提供 するために利用します。 https://www.benesse.co.jp/privacy/
  • 35. 5.最後に その広告を見て 泣いている人がいる かもしれない
  • 36. 5.最後に 10.6 妊娠12週以降の1000母体に対する死産数 ※人工中絶含まず(2016年)
  • 37. 5.最後に データの向こう側に 人がいるということを 意識することが大事
  • 38. ご静聴 ありがとう ございました
  • Related Search
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks