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.
株式会社メドレー
徐 聖博
第2回メドレー読書会
1
自己紹介
2
経歴
• 2014/04 - 2015/06
• グリー株式会社
• 2015/07 -
• 株式会社メドレー
• 2014/04 -
• ターゲットスポーツ(※ダーツメーカー)
3
http://2013.rl-competition.org...
特集3:データの特性を理解する
• ビジネスに導入する機械学習
➡ 第1章 ビジネスデータのクラスタリング
➡ 第2章 予測モデルの構築
本日のメニュー(徐担当分)
4
読書会スタート!
5
6
特集3
データの特性を理解する
ビジネスに導入する機械学習
7
第1章
ビジネスデータのクラスタリング
既存の統計手法とビジネスデータのギャップ
8
自然データの分布
ほとんどが平均値に近いデータ
離れ値を取るデータがほぼない
➡ データが「等質」と呼ぶ
ビジネスデータの分布
平均値が中心となっていない
離れた値が多い
➡ データの「異質性」が高...
ビジネスデータ特有の例
9
• ビジネスにおいて、売上の8割は全顧客の2割が生み出している
• 商品の売上の8割は、全商品銘柄のうちの2割で生み出している
• 売上の8割は、全従業員のうちの2割で生み出している
• 仕事の成果の8割は、費やした...
ビジネスデータにおいて
等質なデータを作る方法が
機械学習適用のポイント
10
ビジネスデータの例
Web広告のクリック数分布
11
ビジネスデータから等質なデータを抽出
12
© 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
ビジネスデータから等質なデータを抽出
13
ライトミドルヘビー
➡ セグメントで分けることで、ある程度等質になる
© 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
2種類のセグメンテーション手法
教師なし学習によるセグメンテーション
教師あり学習によるセグメンテーション
14
教師なし学習による
セグメンテーション
15
ビジネスでは、正解データは存在しない
➡ 何が正解かわからない時は、教師なし学習が適する
➡ 本質的な構造を見つけだす
教師なし学習によるセグメンテーション
16
セグメンテーションの視点
1. 大きさ
2. 形
3. 特徴的な傾向
➡ どの視点を用いるかは、ドメイン依存
➡ 筆者の経験的には、「3.」を用いると良いらしい
教師なし学習によるセグメンテーション
17
プログラムは一緒に動かして、
挙動を観察してみましょう
18
https://github.com/shengbo-medley/MiscForStudy/tree/master/20151115
kmeans(x, variable.names, target.name, k.list, n)
• x: データフレーム
• variable.names: クラスタリング時の説明変数名
• target.name: クラスタリング間比較の...
melt(data, id.vars, measure.vars, variable.name,
value.name, na.rm, factorsAsStrings, …)
• data: データフレーム
• id.vars: そのまま列と...
procomp(x, center = TRUE, scale = FALSE)
• x: データフレーム
• center: 正規化するための平均扱い
• scale: 正規化するための分散の扱いを指定
➡ 主成分分析を行う
➡ 固有値ベクト...
教師あり学習による
セグメンテーション
22
主観が入りそうな観点
• どの視点を持つか
• いくつに分けるか
➡ 可能な限り、視点とクラスタ数を試して、機械的に
一番当てはまり、いいものを選ぶ
➡ なるべく客観的な形で提示する
教師あり学習によるKPIに寄与するセグメントの抽出
23
良いセグメント分けとは?
• KPIに差がでること
➡ どんな行動をしたユーザが売上増加しているか
➡ どんな行動をしたユーザが再度アクセスするのか
KPIを目的として予測モデルを構築する
24
プログラムは一緒に動かして、
挙動を観察してみましょう!!
25
https://github.com/shengbo-medley/MiscForStudy/tree/master/20151115
※例32は訂正済み
26
第2章
予測モデルの構築
• 予測モデルを構築する際は、セグメントごとに作成
• 似たモデル同士をまとめると、予測モデルを作り易くなる
• モデルは2つ種類「分類モデル」・「回帰モデル」
• どのモデルを使うかは、問題設定に合わせて選ぶ
セグメントごとに予測モデルを構築...
分類モデル(判別分析)とは?
• 分類されるクラスが既知のデータを分類
• 教師あり学習の1つ
分類モデルを構築する
28
実際に、分類モデルを作ってみる
29
分類モデル(判別分析)とは?
• 分類されるクラスが既知のデータを分類
• 教師あり学習の1つ
分類モデルを構築する
30
分類モデルを構築する
31
➡ このデータをサポートベクターマシン(SVM)を利用して分類
© 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
サポートベクターマシンとは
32
• 判別分析や回帰分析に適用できる手法の1つ
• 非線形のデータに対しても、カーネル法で分類する
• 高次元空間への写像を利用して分類が可能となる
© 2015 技術評論社 データサイエンティスト養成読本 機械...
サポートベクターマシンの特徴
33
• 利点
• 特徴となる要素の数が多くなっても精度が良い
• 比較的少数の訓練データでも良い結果となりやすい
• 欠点
• 訓練データの数が増えると、実際に非常に時間がかかる
次に、回帰モデルを作ってみる
34
回帰モデル(回帰分析)とは?
• 目的変数と説明変数の間の関係を定式化
• 未知の目的変数を与えた際の説明変数を予測する
分類モデルを構築する
35
1つの説明変数で、目的変数の数値を予測する
➡ 例:売上予測の式は以下のようになる
➡ xを年数、yを売上とし、1年経過するごとに売上がA円増加
線形回帰モデル
36
y = Ax + B
x: 説明変数 y: 目的変数
実際に、R言語標準のlm()を使い
回帰モデルを構築!
37
https://github.com/shengbo-medley/MiscForStudy/blob/master/20151121/rei6.R
https://github.c...
38
> summary(lm_result)
Call
lm(formula = freeny.y time(freeny.y))
Residuals:
Min 1Q Median 3Q Max
-0.051305 -0.014040 0.0...
39
> summary(lm_result)
Call
lm(formula = freeny.y time(freeny.y))
Residuals:
Min 1Q Median 3Q Max
-0.051305 -0.014040 0.0...
40
> summary(lm_result)
Call
lm(formula = freeny.y time(freeny.y))
Residuals:
Min 1Q Median 3Q Max
-0.051305 -0.014040 0.0...
41
決定係数によるモデルの評価
決定係数 意味
0.8 ∼ 1.0 非常に強い関係性がある
0.6 ∼ 0.8 かなりの関係性がある
0.4 ∼ 0.6 ある程度の関係性がある
∼ 0.4 あまり関係性がない
42
ランダムフォレスト
ランダムフォレストとは?
• 決定木モデルの集団学習による、判別・回帰分析手法
• 高精度なモデル構築が可能
• 線形回帰ではできない複雑な問題に対応可能
• 参考:http://www.slideshare.net/...
randomForestパッケージを使い
実際に、予測してみる!
43
https://github.com/shengbo-medley/MiscForStudy/blob/master/20151121/rei8.R
https://git...
44
> print(rf_result)
Call:
randomForest(formula = freeny.y ., data = df, mtry =
1, ntree = 500, type = "regression")
Type...
45
> print(rf_result)
Call:
randomForest(formula = freeny.y ., data = df, mtry =
1, ntree = 500, type = "regression")
Type...
この章で出てきたグラフを比較
46
実線が
実際のデータ
破線の直線が
線形回帰モデル
破線の曲がった線が
ランラムフォレスト
第3章はここまで
47
Upcoming SlideShare
Loading in …5
×

第2回メドレー読書会

289 views

Published on

http://medley.connpass.com/event/22209/

で使用した勉強会資料です。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

第2回メドレー読書会

  1. 1. 株式会社メドレー 徐 聖博 第2回メドレー読書会 1
  2. 2. 自己紹介 2
  3. 3. 経歴 • 2014/04 - 2015/06 • グリー株式会社 • 2015/07 - • 株式会社メドレー • 2014/04 - • ターゲットスポーツ(※ダーツメーカー) 3 http://2013.rl-competition.org/results 保有資格 ダーツプロライセンス ジグソーパズル検定1級 大学院時代の研究 人工知能(進化計算) ICML RL Competition 1位
  4. 4. 特集3:データの特性を理解する • ビジネスに導入する機械学習 ➡ 第1章 ビジネスデータのクラスタリング ➡ 第2章 予測モデルの構築 本日のメニュー(徐担当分) 4
  5. 5. 読書会スタート! 5
  6. 6. 6 特集3 データの特性を理解する ビジネスに導入する機械学習
  7. 7. 7 第1章 ビジネスデータのクラスタリング
  8. 8. 既存の統計手法とビジネスデータのギャップ 8 自然データの分布 ほとんどが平均値に近いデータ 離れ値を取るデータがほぼない ➡ データが「等質」と呼ぶ ビジネスデータの分布 平均値が中心となっていない 離れた値が多い ➡ データの「異質性」が高い © 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
  9. 9. ビジネスデータ特有の例 9 • ビジネスにおいて、売上の8割は全顧客の2割が生み出している • 商品の売上の8割は、全商品銘柄のうちの2割で生み出している • 売上の8割は、全従業員のうちの2割で生み出している • 仕事の成果の8割は、費やした時間全体のうち2割の時間で生 み出している • 故障の8割は、全部品のうちの2割に原因がある
  10. 10. ビジネスデータにおいて 等質なデータを作る方法が 機械学習適用のポイント 10
  11. 11. ビジネスデータの例 Web広告のクリック数分布 11
  12. 12. ビジネスデータから等質なデータを抽出 12 © 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
  13. 13. ビジネスデータから等質なデータを抽出 13 ライトミドルヘビー ➡ セグメントで分けることで、ある程度等質になる © 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
  14. 14. 2種類のセグメンテーション手法 教師なし学習によるセグメンテーション 教師あり学習によるセグメンテーション 14
  15. 15. 教師なし学習による セグメンテーション 15
  16. 16. ビジネスでは、正解データは存在しない ➡ 何が正解かわからない時は、教師なし学習が適する ➡ 本質的な構造を見つけだす 教師なし学習によるセグメンテーション 16
  17. 17. セグメンテーションの視点 1. 大きさ 2. 形 3. 特徴的な傾向 ➡ どの視点を用いるかは、ドメイン依存 ➡ 筆者の経験的には、「3.」を用いると良いらしい 教師なし学習によるセグメンテーション 17
  18. 18. プログラムは一緒に動かして、 挙動を観察してみましょう 18 https://github.com/shengbo-medley/MiscForStudy/tree/master/20151115
  19. 19. kmeans(x, variable.names, target.name, k.list, n) • x: データフレーム • variable.names: クラスタリング時の説明変数名 • target.name: クラスタリング間比較の変数名 • k.list: クラスタ数候補 • n: 試行回数 ➡ xのデータをk個のグループに分割する 関数の説明 19 出典:http://d.hatena.ne.jp/yokkuns/20140316/1394975943
  20. 20. melt(data, id.vars, measure.vars, variable.name, value.name, na.rm, factorsAsStrings, …) • data: データフレーム • id.vars: そのまま列として維持したい列名 • … ➡ data.frame の複数列の値を、カテゴリ変数1列 と値1列の組に変換する。 関数の説明 20 出典:http://meme.biology.tohoku.ac.jp/students/iwasaki/rstats/reshape2.html
  21. 21. procomp(x, center = TRUE, scale = FALSE) • x: データフレーム • center: 正規化するための平均扱い • scale: 正規化するための分散の扱いを指定 ➡ 主成分分析を行う ➡ 固有値ベクトルの数、主成分が求まる 関数の説明 21 出典:itbc-world.com/home/rfm/rの統計関数/主成分分析/
  22. 22. 教師あり学習による セグメンテーション 22
  23. 23. 主観が入りそうな観点 • どの視点を持つか • いくつに分けるか ➡ 可能な限り、視点とクラスタ数を試して、機械的に 一番当てはまり、いいものを選ぶ ➡ なるべく客観的な形で提示する 教師あり学習によるKPIに寄与するセグメントの抽出 23
  24. 24. 良いセグメント分けとは? • KPIに差がでること ➡ どんな行動をしたユーザが売上増加しているか ➡ どんな行動をしたユーザが再度アクセスするのか KPIを目的として予測モデルを構築する 24
  25. 25. プログラムは一緒に動かして、 挙動を観察してみましょう!! 25 https://github.com/shengbo-medley/MiscForStudy/tree/master/20151115 ※例32は訂正済み
  26. 26. 26 第2章 予測モデルの構築
  27. 27. • 予測モデルを構築する際は、セグメントごとに作成 • 似たモデル同士をまとめると、予測モデルを作り易くなる • モデルは2つ種類「分類モデル」・「回帰モデル」 • どのモデルを使うかは、問題設定に合わせて選ぶ セグメントごとに予測モデルを構築 27
  28. 28. 分類モデル(判別分析)とは? • 分類されるクラスが既知のデータを分類 • 教師あり学習の1つ 分類モデルを構築する 28
  29. 29. 実際に、分類モデルを作ってみる 29
  30. 30. 分類モデル(判別分析)とは? • 分類されるクラスが既知のデータを分類 • 教師あり学習の1つ 分類モデルを構築する 30
  31. 31. 分類モデルを構築する 31 ➡ このデータをサポートベクターマシン(SVM)を利用して分類 © 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
  32. 32. サポートベクターマシンとは 32 • 判別分析や回帰分析に適用できる手法の1つ • 非線形のデータに対しても、カーネル法で分類する • 高次元空間への写像を利用して分類が可能となる © 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
  33. 33. サポートベクターマシンの特徴 33 • 利点 • 特徴となる要素の数が多くなっても精度が良い • 比較的少数の訓練データでも良い結果となりやすい • 欠点 • 訓練データの数が増えると、実際に非常に時間がかかる
  34. 34. 次に、回帰モデルを作ってみる 34
  35. 35. 回帰モデル(回帰分析)とは? • 目的変数と説明変数の間の関係を定式化 • 未知の目的変数を与えた際の説明変数を予測する 分類モデルを構築する 35
  36. 36. 1つの説明変数で、目的変数の数値を予測する ➡ 例:売上予測の式は以下のようになる ➡ xを年数、yを売上とし、1年経過するごとに売上がA円増加 線形回帰モデル 36 y = Ax + B x: 説明変数 y: 目的変数
  37. 37. 実際に、R言語標準のlm()を使い 回帰モデルを構築! 37 https://github.com/shengbo-medley/MiscForStudy/blob/master/20151121/rei6.R https://github.com/shengbo-medley/MiscForStudy/blob/master/20151121/rei7.R
  38. 38. 38 > summary(lm_result) Call lm(formula = freeny.y time(freeny.y)) Residuals: Min 1Q Median 3Q Max -0.051305 -0.014040 0.006104 0.014610 0.034788 Coefficients: Estimate Std. Error t value Pr(>¦t¦) (Intercept) -2.080e+02 2.298e+00 -90.53 <2e-16 *** time(freeny.y) 1.105e-01 1.168e-03 94.57 <2e-16 *** --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 Residual standard error: 0.02053 on 37 degrees of freedom Multiple R-squared: 0.9959, Adjusted R-squared: 0.9958 F-statistic: 8944 on 1 and 37 DF, p-value: < 2.2e-16 実行結果
  39. 39. 39 > summary(lm_result) Call lm(formula = freeny.y time(freeny.y)) Residuals: Min 1Q Median 3Q Max -0.051305 -0.014040 0.006104 0.014610 0.034788 Coefficients: Estimate Std. Error t value Pr(>¦t¦) (Intercept) -2.080e+02 2.298e+00 -90.53 <2e-16 *** time(freeny.y) 1.105e-01 1.168e-03 94.57 <2e-16 *** --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 Residual standard error: 0.02053 on 37 degrees of freedom Multiple R-squared: 0.9959, Adjusted R-squared: 0.9958 F-statistic: 8944 on 1 and 37 DF, p-value: < 2.2e-16 lm()関数を読み解く y = ax + bの bにあたる y = ax + bの aにあたる
  40. 40. 40 > summary(lm_result) Call lm(formula = freeny.y time(freeny.y)) Residuals: Min 1Q Median 3Q Max -0.051305 -0.014040 0.006104 0.014610 0.034788 Coefficients: Estimate Std. Error t value Pr(>¦t¦) (Intercept) -2.080e+02 2.298e+00 -90.53 <2e-16 *** time(freeny.y) 1.105e-01 1.168e-03 94.57 <2e-16 *** --- Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 Residual standard error: 0.02053 on 37 degrees of freedom Multiple R-squared: 0.9959, Adjusted R-squared: 0.9958 F-statistic: 8944 on 1 and 37 DF, p-value: < 2.2e-16 lm()関数を読み解く 決定係数という、 1に近いほど 2つの変数間に関連性が強い
  41. 41. 41 決定係数によるモデルの評価 決定係数 意味 0.8 ∼ 1.0 非常に強い関係性がある 0.6 ∼ 0.8 かなりの関係性がある 0.4 ∼ 0.6 ある程度の関係性がある ∼ 0.4 あまり関係性がない
  42. 42. 42 ランダムフォレスト ランダムフォレストとは? • 決定木モデルの集団学習による、判別・回帰分析手法 • 高精度なモデル構築が可能 • 線形回帰ではできない複雑な問題に対応可能 • 参考:http://www.slideshare.net/teppeibaba5/ ss-37143977
  43. 43. randomForestパッケージを使い 実際に、予測してみる! 43 https://github.com/shengbo-medley/MiscForStudy/blob/master/20151121/rei8.R https://github.com/shengbo-medley/MiscForStudy/blob/master/20151121/rei9.R
  44. 44. 44 > print(rf_result) Call: randomForest(formula = freeny.y ., data = df, mtry = 1, ntree = 500, type = "regression") Type of random forest: regression Number of trees: 500 No. of variables tried at each split: 1 Mean of squared residuals: 0.0006837185 % Var explained: 99.3 実行結果
  45. 45. 45 > print(rf_result) Call: randomForest(formula = freeny.y ., data = df, mtry = 1, ntree = 500, type = "regression") Type of random forest: regression Number of trees: 500 No. of variables tried at each split: 1 Mean of squared residuals: 0.0006837185 % Var explained: 99.3 randomForestを読み解く %Var exlpainedにより評価できる 100に近いほど、対象のことを説明できているモデル
  46. 46. この章で出てきたグラフを比較 46 実線が 実際のデータ 破線の直線が 線形回帰モデル 破線の曲がった線が ランラムフォレスト
  47. 47. 第3章はここまで 47

×