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

More Related Content

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