Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PySpark を分析用途に使っている話

1,312 views

Published on

LINE株式会社 DataLabs 丸尾大貴
PyData.Tokyo Meetup #17 - データ分析の現場
での発表資料です。
https://pydatatokyo.connpass.com/event/77008/

Published in: Technology
  • Be the first to comment

PySpark を分析用途に使っている話

  1. 1. © LINE Data Labs Pyparkを分析用途に使っている話 LINE株式会社 DataLabs 丸尾大貴
  2. 2. © LINE Data Labs 話すこと/話さないこと 話さないこと 🙅PySpark/Sparkの中身のはなし(正直全くわからない) 🙅高度な分析 話すこと 🙆PySparkが日常の統計分析業務をカバーできること
  3. 3. © LINE Data Labs 分析とその活用のプロセス 現状把握 仮説の立案 データ分析 施策の 策定・実行 効果測定
  4. 4. © LINE Data Labs 例題:架空のサブスクリプションサービスの分析 ・2週間単位で契約するものとする ・プランは一つしかなくて定額制=ARPPUは不変とする ・以下のテーブルが登場
  5. 5. © LINE Data Labs 現状把握:KPIツリーの作成 Subscriber # of New user Conversion rate Subscriber× × Retention rate Revenue ARPPU×
  6. 6. © LINE Data Labs 現状把握:可視化の例 ある日のsubscriberの数を計算する簡単なクエリ SQLで工夫できる?かもしれないが、 普通にやるならデイリーバッチ回したい
  7. 7. © LINE Data Labs 現状把握:可視化の例
  8. 8. © LINE Data Labs 仮説の立案:KPI向上のための仮説立案 hypo Zhypo Yhypo A …… Subscriber # of New user Conversion rate # of Continue user× × Revenue ARPPU Retention rate
  9. 9. © LINE Data Labs データ分析:データマートの作成 user_no is_ret feature1 … feature200 200 1 200 … A 664 0 40 … C
  10. 10. © LINE Data Labs データ分析:データマートの作成
  11. 11. © LINE Data Labs データ分析:データマートの作成 ・pysparkで同様の判定をすることもできる ただし、lead/when/isnull/otherwiseの組み合わせで、結構しんどい ・しかも、joinと順番を入れ替えるとバグる(あたりまえだがハマる) ・SQLのほうが総合的には楽な場合もある(コードは短い?)
  12. 12. © LINE Data Labs データ分析:データマートの作成 ・さっきと同じ集計もできる
  13. 13. © LINE Data Labs データ分析:データマートの作成 ・for文で回せそうな処理がある場合はpysparkが便利 SQLベタ書きするとメンテ性がすこぶる悪化する場面を避けられる
  14. 14. © LINE Data Labs データ分析:モデルの訓練 user_no is_ret feature1 … feature200 200 1 200 … A 664 0 40 … C
  15. 15. © LINE Data Labs データ分析:モデルの訓練 ・scikitともうほとんど変わらないレベルでお手軽にかける ただ、特定の形式しか受け付けないなどでけっこうハマる ハマったらまず前処理のAPIを見ることを推奨(ml.feature)
  16. 16. © LINE Data Labs データ分析:モデルのcross validation ・cv用のモジュールも充実。CrossValidatorに3つ渡すだけ、シンプル。
  17. 17. © LINE Data Labs データ分析:重要な特徴量の検証 ・よくある重要度plotもお茶の子さいさい sum(action)
  18. 18. © LINE Data Labs 効果測定:A/Bテストの集計
  19. 19. © LINE Data Labs 効果測定:比率の差の検定 ・Pandasで受けてstatsmodelsにわたして検定もできる
  20. 20. © LINE Data Labs Tips1:SQLで書けるのでレビューが楽 python派 R派 tableau派 ・SQLが実質的にチームの共通言語となっている 🙅pandas 🙆dplyr 👩SQL 🙆pandas 🙅dplyr 👩SQL 🙅pandas 🙅dplyr 🙆SQL
  21. 21. © LINE Data Labs Tips2:df.cache()を使ってgroupbyしまくろう ・分析用のテーブルを作ってからキャッシュする ・その後様々な切り口でorder_all.groupby()することができる ・探索的分析の速度・確度が上がる
  22. 22. © LINE Data Labs Tips3:RDD/udfはやめよう ド ラ イ バ ー ド ラ イ バ ー DataFrame API RDD/Python UDF エグゼキューター ・UDFを書いちゃうとjavaとpythonインタプリタの間でデータのやり取り が起きて性能劣化。改善の取り組みもあるが、改善されるまではオススメ しない。(世の中のUDF書きまくりのspark本をそのままpythonにしては🙅)
  23. 23. © LINE Data Labs Tips4:cross validation周辺が賢くなるぞ ・現状Cross Validatorが賢くない パラメータとデータセットに対して直列にtrainしていく (つまりパラメータの組み合わせ数×CVの分割数だけ直列に時間がかかる) Model1-param1 Model3-param1 Model2-param1 Model4-param1 Model1-param2 Model3-param2 Model2-param2 Model4-param2 Train1 Train2 Train3 Train4
  24. 24. © LINE Data Labs Tips4:cross validation周辺が賢くなるぞ ・2.2.0 ・2.3.0では引数一つでパラメータに対してはパラレルに!(最高 🙏)
  25. 25. © LINE Data Labs 他のツールとのpros/cons pyspark R+sparklyr Hive/Tez/presto 集計 最高 最高という人もいる 最高
  26. 26. © LINE Data Labs 他のツールとのpros/cons pyspark R+sparklyr Hive/Tez/presto 集計 最高 最高という人もいる 最高 特徴量/ データ マート 最高に自由度高い 最高という人もいる 大量に特徴量つくりたい ときは不向き
  27. 27. © LINE Data Labs 他のツールとのpros/cons pyspark R+sparklyr Hive/Tez/presto 集計 最高 最高という人もいる 最高 特徴量/ データ マート 最高に自由度高い 最高という人もいる 大量に特徴量つくりたい ときは不向き 分析用の 機械学習 最高にお手軽 sparklyR使ったことない のでわからない 🙅バッドノウハウ ※決してSQLで協調フィルタなどを実装することを批判するものではあり ません
  28. 28. © LINE Data Labs おわりに  PySpark -> なんでもできて最高
  29. 29. © LINE Data Labs おわりに  PySpark -> なんでもできて最高 PySparkで大規模データをゴリゴリ分析して 事業に貢献したいあなたはLINEへ!!

×