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.

機械学習によるデータ分析まわりのお話

332,336 views

Published on

某所で機械学習の講習会(?)のようなものをしたときの資料です.
機械学習によるデータ分析について,アルゴリズムやツールの使い方*以外*の部分で
重要だと思うことを重点的にまとめたつもりです.

Published in: Technology
  • はじめまして、笹本と申します。 とても良い資料を公開頂いてありがとうございます。 Facebookでシェアさせて頂きました。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

機械学習によるデータ分析まわりのお話

  1. 1. による データ分析まわりのお話 @canard0328 機 械 学 習
  2. 2. データサイエンティスト 2 今世紀でもっともセクシーな職業 ハーバード・ビジネス・レビュー 2013年年2⽉月号 2018年年までに⽶米国で14〜~19万⼈人不不⾜足 マッキンゼー 2011年年5⽉月 求められるスキル ビジネススキル,機械学習/ビッグデータ, 数学/OR,プログラミング,統計 Analyzing the Analyzers, O’reilly 2013
  3. 3. 機械学習ツール・書籍の充実 3 ツール 書籍 書籍やWebの隙間を埋めるようなお話ができれば
  4. 4. 本⽇日お話すること 4 1. データのこと Keywords: ダミー変数,⽋欠損値,正規化,次元の呪い 2. 機械学習のこと Keywords: 機械学習の分類,アルゴリズム,注意点 3. 評価のこと Keywords: 混同⾏行行列列,適合率率率,再現率率率,F値,ROC曲線 4. 分析のこと Keywords: 過学習,交差検証,学習曲線,バイアス・バリアンス 教師あり学習(後述)寄りの内容が多いです
  5. 5. ターゲットにしている⽅方 5 1. 分析を始めようとしている⼈人 基本的な分析⼿手順を知ることができます 2. 分析結果を受け取る⼈人 分析の妥当性を判断することができます 3. 分析を依頼する⼈人 基礎検討を⾃自前で⾏行行うことができます
  6. 6. 本⽇日お話しないこと 6 1. 統計のこと 検定とか,有意差がどうとか 2. アルゴリズムの詳細 数式とか 3. ツールの使い⽅方 Webや書籍が充実しています 4. ビッグデータ関連 データベースとか分散処理理とか
  7. 7. 本⽇日お話すること 7 1. データのこと Keywords: ダミー変数,⽋欠損値,正規化,次元の呪い 2. 機械学習のこと Keywords: 機械学習の分類,アルゴリズム,注意点 3. 評価のこと Keywords: 混同⾏行行列列,適合率率率,再現率率率,F値,ROC曲線 4. 分析のこと Keywords: 過学習,交差検証,学習曲線,バイアス・バリアンス
  8. 8. ⼀一般的なデータ形式 8 年年齢 性別 加⼊入⽇日 加⼊入プラン 地区 解約 23 男 2012/03/03スタンダード 東京 0 34 ⼥女女 2014/11/23スタンダード 埼⽟玉 1 49 男 2000/05/11プレミアム 千葉葉 0 19 男 2013/12/05ライト ⼤大阪 0 60 ⼥女女 2011/03/28シニア 東京 0 ・ ・ ・ 説明変数,特徴量量 ⽬目的変数
  9. 9. 特徴量量の分類 9 名義尺度度 名前,電話番号など 順序尺度度 レースの着順など 間隔尺度度 摂⽒氏,華⽒氏など(乗除不不可) ⽐比例例尺度度 質量量,⻑⾧長さなど
  10. 10. 特徴量量の分類 10 数値データ(量量的変数) ⽐比例例尺度度,(間隔尺度度) カテゴリデータ(質的変数) 名義尺度度,順序尺度度,(間隔尺度度) 機械学習アルゴリズムは数値データを 前提としているものが多い. カテゴリデータを数値データへ変換
  11. 11. ダミー変数(1-of-K表現) 11 カテゴリデータを数値データへ変換 加⼊入プラン スタンダード スタンダード プレミアム ライト シニア ・ ・ ・ ライト スタンダード シニア 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 ・ ・ ・
  12. 12. Feature hashing / Hashing trick 12 ダミー変数はカテゴリの種類が多いと 特徴量量の次元数が⼤大きくなりすぎる Feature hashingにより任意の次元に削減 Nの値がある程度度⼤大きければ精度度への影響⼩小 x := new vector[N] for f in features: h := hash(f) x[h mod N] += 1 http://en.wikipedia.org/wiki/Feature_hashing
  13. 13. ⽋欠損値の扱い 13 捨てる ⽋欠損値が少数,データが⼤大量量 置換する 最頻値,中央値,平均値 補間する 時系列列データ ⽋欠損値の⽣生じ⽅方が完全にランダムでない限り 分析に影響を与える 完全情報最尤推定法,多重代⼊入法
  14. 14. 正規化 14 xの値を10倍しただけでK-meansの 結果が変わってしまう
  15. 15. 正規化 15 必要であれば特徴量量ごとに正規化 (Normalization)を⾏行行う σ µ− = x z σ µ :xの平均 :xの標準偏差 平均0,標準偏差1にする変換が⼀一般的
  16. 16. 次元の呪い 16 次元の呪い(Curse of dimensionality) 特徴量量(説明変数)の数が増えると汎化性能※を 向上させることが難しくなる 使えそうなデータはなんでも特徴量量に加えて しまえ,は危険 特徴選択や次元削減により特徴量量の数を減らす データを⽤用意する段階で特徴量量を吟味することが⾮非常に重要 次元の呪いについて,詳しくは「球⾯面集中現象」を検索索 ※未知のデータを予測する性能
  17. 17. 特徴選択 17 特徴選択(Feature selection) 特徴量量の中から有⽤用なものを選び出す 全ての特徴量量の組み合わせを試すのは困難 前向き法(Forward stepwise selection) 有⽤用な特徴量量を1つずつ選択していく 後ろ向き法(Backward stepwise selection) 不不要な特徴量量を1つずつ削除していく 特徴選択機能を含む機械学習アルゴリズム 決定⽊木,ランダムフォレスト,Lasso
  18. 18. 次元削減 18 次元削減(dimension(ality) reduction) できるだけ元の情報量量を損なわないように 低次元(少特徴量量)のデータに変換する 主成分分析(Principal component analysis (PCA)) データ全体の分布を近似する部分空間を求める (線形)判別分析(Linear discriminant analysis (LDA)) ラベルごとの分布の分離離度度が最⼤大になる部分空間を求める
  19. 19. 次元削減 19 x1 x2 主成分分析による次元削減のイメージ
  20. 20. 次元削減 20 x1 x2 判別分析による次元削減のイメージ
  21. 21. 醜いアヒルの⼦子定理理 21 醜いアヒルの⼦子定理理(Ugly duckling theorem) 醜いアヒルの⼦子と普通のアヒルの⼦子の類似性は 2⽻羽の普通のアヒルの⼦子の類似性と等しい 問題から独⽴立立した万能な特徴量量は存在しない 特徴量量の設計が重要
  22. 22. 1章のまとめ 22 データの前処理理 ダミー変数,⽋欠損値処理理,正規化 次元の呪い 特徴量量が多いと分析が困難に 特徴選択や次元削減 醜いアヒルの⼦子定理理 万能な特徴量量は無い 特徴量量の決定が重要
  23. 23. 本⽇日お話すること 23 1. データのこと Keywords: ダミー変数,⽋欠損値,正規化,次元の呪い 2. 機械学習のこと Keywords: 機械学習の分類,アルゴリズム,注意点 3. 評価のこと Keywords: 混同⾏行行列列,適合率率率,再現率率率,F値,ROC曲線 4. 分析のこと Keywords: 過学習,交差検証,学習曲線,バイアス・バリアンス
  24. 24. 機械学習とは 24 “Machine learning is the science of getting computers to act without being explicitly programmed.” Andrew Ng ⼀一般的にはコンピュータの振る舞い⽅方(モデル)を (⼤大量量の)データから学習することにより獲得する.
  25. 25. 機械学習の分類 25 教師あり学習(supervised learning) データが⼊入⼒力力と出⼒力力のペアから成る • 分類(識識別)(classification):出⼒力力がラベル • 回帰(regression):出⼒力力が数値 教師なし学習(unsupervised learning) データは⼊入⼒力力のみ • クラスタリング • 頻出パタンマイニング • 外れ値検出(outlier detection)
  26. 26. 機械学習の分類 26 その他の分類 • 半教師あり学習(semi-supervised learning) • 強化学習(reinforcement learning) • 能動学習(active learning) • 逐次学習(online learning) • 転移学習(transfer learning) ・・・
  27. 27. 機械学習のアルゴリズム 27 教師あり学習 • 線形モデル(単/重回帰) • ロジスティック回帰 • 判別分析 • k近傍法 • 決定⽊木 • サポートベクターマシン • ニューラルネットワーク • ナイーブベイズ • ランダムフォレスト
  28. 28. 機械学習のアルゴリズム 28 教師なし学習 • K-means クラスタリング • 階層的クラスタリング • Apriori • One-class SVM
  29. 29. アルゴリズム利利⽤用時の注意点 29 アルゴリズムによっては データの分布などに仮定を おいているものがある. 仮定に合わないデータを分析した場合 適切切な結果が得られないことも
  30. 30. アルゴリズム利利⽤用時の注意点 30 線形モデル(単/重回帰分析) x y εββββ +++++= ii xxxy L22110 線形モデルは誤差が等分散 正規分布であることを仮定 ⼀一般化線形モデル (generalized linear model) ※ロジスティック回帰はこの⼀一種 ⼀一般化 (ポアソン分布,⼆二項分布, ガンマ分布,・・・)
  31. 31. アルゴリズム利利⽤用時の注意点 31 K-meansクラスタリング K-meansクラスタリングは 各クラスタが同じ⼤大きさの 超球であることを仮定して いる 混合正規分布 (Gaussian mixture model) クラスタの⼤大きさに 差がある場合
  32. 32. アルゴリズム利利⽤用時の注意点 32 ノーフリーランチ定理理 あらゆる問題で性能の良良い 万能な学習アルゴリズムは存在しない ⽬目的に適したアルゴリズムを選択しましょう とは⾔言っても,実⽤用上,上⼿手くいくことの多いアルゴリズムがあるのも事実
  33. 33. 2章のまとめ 33 教師あり学習 データが⼊入⼒力力と出⼒力力のペア 分類(識識別),回帰 教師なし学習 データが⼊入⼒力力のみ クラスタリング,頻出パタンマイニング,外れ値検出 注意点 データの分布などに仮定をおいているアルゴリズムもある ノーフリーランチ定理理:万能なアルゴリズムは無い
  34. 34. 本⽇日お話すること 34 1. データのこと Keywords: ダミー変数,⽋欠損値,正規化,次元の呪い 2. 機械学習のこと Keywords: 機械学習の分類,アルゴリズム,注意点 3. 評価のこと Keywords: 混同⾏行行列列,適合率率率,再現率率率,F値,ROC曲線 4. 分析のこと Keywords: 過学習,交差検証,学習曲線,バイアス・バリアンス
  35. 35. 回帰モデルの評価基準 35 平均絶対誤差(Mean absolute error) ⼩小さいほど良良い 平均⼆二乗誤差(Mean square(d) error) ⼩小さいほど良良い Root Mean Square(d) Errorもよく使われる 決定係数R2(Coefficient of determination) 説明変数が⽬目的変数をどれくらい説明するか 0(悪い)〜~1(良良い) 特徴量量が多いほど⼤大きな値に ⾃自由度度調整済み決定係数 ( ) Nyy N i ii∑= −= 1 ˆMAE ( )( ) Nyy N i ii∑= −= 1 2 ˆMSE
  36. 36. 分類(識識別)モデルの評価基準 36 精度度(Accuracy) 正解数÷データ数 誤差率率率(Error rate) 1-精度度 1万⼈人のデータの内100⼈人が陽性の場合, 常に陰性と判定するモデルの精度度は99% これはよいモデルといえるだろうか?
  37. 37. 分類(識識別)モデルの評価基準 37 混同⾏行行列列(Confusion matrix) 予測値 陽性 (Positive) 陰性 (Negative) 正 解 陽性 真陽性 (True positive : TP) 偽陰性 (False negative : FN) 陰性 偽陽性 (False positive : FP) 真陰性 (True  negative  :  TN) ※予測したい事象が⽣生じている状態が「陽性」 病気を判別したければ,病気の状態が「陽性」で健康な状態が「陰性」
  38. 38. 分類(識識別)モデルの評価基準 38 適合率率率(Precision) TP/(TP + FP) 陽性と予測したものの正解率率率 再現率率率(Recall) TP/(TP + FN) 陽性のうち正しく予測できた率率率 F値(F1 score, F-measure) 2・(適合率率率・再現率率率) / (適合率率率+再現率率率)
  39. 39. 分類(識識別)モデルの評価基準 39 真陽性率率率(True Positive Rate) TP/(TP + FN) 陽性のうち正しく予測できた率率率(ヒット率率率) 偽陽性率率率(False Positive Rate) FP/(FP + TN) 陰性のうち誤って陽性と予測した率率率(誤報率率率)
  40. 40. 分類(識識別)モデルの評価基準 40 1万⼈人のデータの内100⼈人が陽性のとき 常に陰性と判定するモデル 予測値 陽性(Positive) 陰性(Negative) 正 解 陽性 0 100 陰性 0 9900 精度度:0.99 適合率率率:0 再現率率率:0 F値:0
  41. 41. 脱線:不不均衡データの分析 41 ラベルに偏りのあるデータは予測が困難 重みづけ ライブラリを利利⽤用する場合,簡単に重みづけ可能な 場合が多い サンプル数の調整 少ない⽅方を増やす,多い⽅方を減らす,両⽅方 SMOTEアルゴリズム 実際にはどちらも決め⼿手とならないことも多い...
  42. 42. 分類(識識別)モデルの評価基準 42 真陽性率率率と偽陽性率率率はトレードオフ 陽性の取りこぼしが無いよう閾値を設定すると, 真陽性率率率は⾼高くなるが,偽陽性率率率も⾼高くなる. ROC曲線 モデルのパラメータを変化させながら,偽陽性率率率と 真陽性率率率をプロットしたもの AUC ROC曲線の下側の⾯面積.1.0が最良良
  43. 43. 分類(識識別)モデルの評価基準 43 ROC曲線とAUC
  44. 44. 3章のまとめ 44 精度度 精度度が⾼高ければよいのか? 適合率率率,再現率率率,F値 精度度以外にも様々な評価基準 ROC曲線,AUC 真陽性率率率と偽陽性率率率のトレードオフを可視化
  45. 45. 本⽇日お話すること 45 1. データのこと Keywords: ダミー変数,⽋欠損値,正規化,次元の呪い 2. 機械学習のこと Keywords: 機械学習の分類,アルゴリズム,注意点 3. 評価のこと Keywords: 混同⾏行行列列,適合率率率,再現率率率,F値,ROC曲線 4. 分析のこと Keywords: 過学習,交差検証,学習曲線,バイアス・バリアンス
  46. 46. 分析時の注意点 46 適切切にデータを前処理理して, 適切切なアルゴリズムを選んで分析した. 誤差が⼤大きい,このアルゴリズムは 使えない! 本当ですか? > clf = SVC().fit(X, y)
  47. 47. ハイパーパラメータ 47 アルゴリズムはハイパーパラメータを 調整することで性能が⼤大きく変化 ハイパーパラメータの調整法は? > clf = SVC(kernel=‘rbf’, C=1.0 gamma=0.1).fit(X, y)
  48. 48. グリッドサーチ 48 各パラメータを適当な範囲で変化させ,最も性能の よいパラメータの組み合わせを選択する 良良 ← 性 能 → 悪
  49. 49. グリッドサーチ 49 パラメータの変化幅,刻み幅 経験に依るところ⼤大 物理理量量的なもの(例例:決定⽊木の深さ)は常識識的な範囲で そうでないものは桁を変えて(10-2,10-1,100,101,102) 2段(多段)グリッドサーチ 初めは広く,荒く 範囲を絞って狭く,細かく
  50. 50. 分析時の注意点 50 適切切にデータを前処理理して, 適切切なアルゴリズムを選んで分析した. 誤差0.0(回帰)/F値1.0(分類)だ! 完璧なモデルができた! 本当ですか?
  51. 51. 分析時の注意点 51 このモデル(誤差0.0)は未知のデータを 正しく予測できるでしょうか?
  52. 52. 過学習 52 過学習(Over fitting) 与えられたデータに(ノイズも含めて)過度度に適合 してしまい,訓練誤差は⼩小さいが,未知データに対 する性能が低下してしまう状態. 汎化性能 未知のデータに対する性能(汎化性能)を定量量化し た汎化誤差を⼩小さくすることが重要 表現⼒力力の⾼高いアルゴリズム使⽤用時,特徴量量が多いとき,与えられたデータが少な いときに過学習しやすい.
  53. 53. 過学習対策 53 正則化(Regularization) モデルを学習する際に,複雑さが増すことに対する ペナルティを設け,過学習を防ぐ 複雑さの指標:L2ノルム,L1ノルム,etc. 正則化を考慮した線形モデル ・リッジ回帰(Ridge regression):L2ノルム ・Lasso:L1ノルム 正則化しすぎても性能がでない(Under fitting)
  54. 54. 過学習対策 54 交差検証(Cross validation) データを学習⽤用と評価⽤用に分割する 1. B〜~Eで学習,Aで評価 2. A,C〜~Eで学習,Bで評価 3. A,B,D,Eで学習,Cで評価 4. A〜~C,Eで学習,Dで評価 5. A〜~Dで学習,Eで評価 6. 1〜~5の平均を算出 5分割交差検証(5-fold cross validation)
  55. 55. 過学習対策 55 データの分割の仕⽅方 ランダムにK分割 1サンプルとそれ以外に分割 Leave-one-out cross validation(LOOCV) ラベルの⽐比率率率を保ったまま分割 Stratified cross validation ラベルの⽐比率率率に偏りのある場合に有効
  56. 56. 過学習対策 56 先頭から順にK分割 時刻 温度度 湿度度 天気 8:00 23.2 63.0 曇 8:05 23.5 65.1 曇 8:10 24.0 68.0 曇 8:15 24.1 69.3 ⾬雨 8:20 24.2 70.1 ⾬雨 8:25 24.2 70.2 ⾬雨 8:30 23.9 69.6 曇 … 時系列列データでは,前後の データの関連が強いことが ある. これをランダムに学習⽤用と 評価⽤用に分けてしまうと, 汎化誤差が不不当に⼩小さくな る.
  57. 57. 過学習対策 57 何らかの属性に応じて分割 新たな被験者に対するモデ ルの性能を評価する場合, データを被験者ごとに分割 すると良良い. 学習データと評価データの両⽅方に同じ被験 者のデータが含まれると,汎化誤差が不不当 に⼩小さくなる. 名前 x y 姿勢 A 23.2 63.0 ⽴立立 A 23.5 65.1 ⽴立立 A 24.0 68.0 座 B 24.1 69.3 座 B 24.2 70.1 座 B 24.2 70.2 ⽴立立 C 23.9 69.6 寝 …
  58. 58. 誤差について 58 真のモデル 得られたサンプル 推定したモデル 誤差 ε=N(0, σ2) 差=σ2+Bias2+Variance Bias(バイアス) モデルの能⼒力力に起因する差 Variance(バリアンス) サンプルに起因する差
  59. 59. バイアスとバリアンス 59 真のモデル 誤差 ε 得られたサンプルたち 推定したモデルたち 真の モデル バイアス バリアンス
  60. 60. バイアスとバリアンス 60 誤差 ε 得られた サンプルたち 推定した モデルたち 真のモデル 差は⼤大きいが,差のばらつきは⼩小さい → ハイバイアス/ローバリアンス 1次式でモデリング
  61. 61. バイアスとバリアンス 61 誤差 ε 得られた サンプルたち 推定した モデルたち 真のモデル サンプルによる差が⼤大きい → ローバイアス/ハイバリアンス 多項式でモデリング
  62. 62. バイアスとバリアンス 62 バイアスとバリアンスはトレードオフの関係 柔軟性の⾼高いモデル(アルゴリズム) バイアス⼩小,バリアンス⼤大 ハイバリアンス 過学習(Over fitting) 柔軟性の低いモデル(アルゴリズム) バイアス⼤大,バリアンス⼩小 ハイバイアス Under fitting 現在のモデルの状態を確認するには?
  63. 63. 学習曲線 63 データサイズを変えながら訓練スコア(誤差) 汎化スコア(誤差)をプロット
  64. 64. 学習曲線 64 ハイバイアスの⽬目安 訓練スコア(誤差)が低い(⼤大きい) 訓練スコアと汎化スコアの差が⼩小さい ハイバリアンスの⽬目安 訓練スコアと汎化スコアの差が⼤大きい 汎化スコアの改善がサチっていない
  65. 65. 学習曲線 65 ハイバイアス ハイバリアンス スコアが低い スコアの差が⼩小さい スコアの差が⼤大きい
  66. 66. 学習曲線 66 ハイバイアスの場合 (有効な)特徴量量を増やす アルゴリズムを(柔軟性の⾼高いものに)変更更する ハイバリアンスの場合 データを増やす (不不要な)特徴量量を削除する
  67. 67. 4章のまとめ 67 過学習 汎化性能を評価する必要有 交差検証 データ,⽬目的に応じて⼿手法を選択 バイアス,バリアンス モデルがどういう状態なのか,学習曲線で確認
  68. 68. 本⽇日お話したこと 68 1. データのこと Keywords: ダミー変数,⽋欠損値,正規化,次元の呪い 2. 機械学習のこと Keywords: 機械学習の分類,アルゴリズム,注意点 3. 評価のこと Keywords: 混同⾏行行列列,適合率率率,再現率率率,F値,ROC曲線 4. 分析のこと Keywords: 過学習,交差検証,学習曲線,バイアス・バリアンス
  69. 69. 宣伝 69 機械学習⽀支援システム MALSS (Machine Learning Support System) 機械学習によるデータ分析の⼀一部を⾃自動化する Pythonライブラリ 機能 • ダミー変数⽣生成,⽋欠損値補間,正規化 • アルゴリズム⾃自動選択 • 交差検証,グリッドサーチ • 分析結果レポート • サンプルコード⽣生成
  70. 70. 宣伝 70 機械学習⽀支援システム MALSS インストール 利利⽤用⽅方法 > pip install –U malss > from malss import MALSS > clf = MALSS('classification‘, lang=‘jp’) > clf.fit(X, y, ‘report_output_dir') > clf.make_sample_code('sample_code.py')
  71. 71. 宣伝 71 機械学習⽀支援システム MALSS レポート
  72. 72. 宣伝 72 機械学習⽀支援システム MALSS レポート
  73. 73. 参考⽂文献 73 戦略略的データサイエンス⼊入⾨門 F. Provost他/オライリー・ジャパン Coursera: Machine Learning Andrew Ng/https://www.coursera.org/course/ml scikit-learn Tutorials http://scikit-learn.org/stable/tutorial/ Tutorial: Machine Learning for Astronomy with Scikit-learn http://www.astroml.org/sklearn_tutorial/ データ解析のための統計モデリング⼊入⾨門 久保 拓拓弥/岩波書店 朱鷺鷺の杜Wiki http://ibisforest.org/
  74. 74. 参考⽂文献 74 MALSS (Machine Learning Support System) https://pypi.python.org/pypi/malss/ https://github.com/canard0328/malss Pythonでの機械学習を⽀支援するツール MALSS(導⼊入) Qiita/http://qiita.com/canard0328/items/fe1ccd5721d59d76cc77 Pythonでの機械学習を⽀支援するツール MALSS(基本) Qiita/http://qiita.com/canard0328/items/5da95ff4f2e1611f87e1 Pythonでの機械学習を⽀支援するツール MALSS(応⽤用) Qiita/ http://qiita.com/canard0328/items/3713d6758fe9c045a19d
  75. 75. 本⽇日お話したこと 75 1. データのこと Keywords: ダミー変数,⽋欠損値,正規化,次元の呪い 2. 機械学習のこと Keywords: 機械学習の分類,アルゴリズム,注意点 3. 評価のこと Keywords: 混同⾏行行列列,適合率率率,再現率率率,F値,ROC曲線 4. 分析のこと Keywords: 過学習,交差検証,学習曲線,バイアス・バリアンス

×