$30 off During Our Annual Pro Sale. View Details »

データマイニングと機械学習-K近傍法 & 機械学習のお作法

データマイニングと機械学習-K近傍法 & 機械学習のお作法

1. K近傍法
2. 教師あり機械学習のお作法

Y. Yamamoto

May 23, 2023
Tweet

More Decks by Y. Yamamoto

Other Decks in Technology

Transcript

  1. 講義のトピック 機械学習 教師あり学習 教師なし学習 強化学習 ・クラスタリング ・データ圧縮 ・分類 ・回帰 …

    … 3 行動情報学科に 特有の応用手法 時系列データ分析 時間経過とともに変化する データに対する分析⼿法 ・K近傍法 ・サポートベクタマシン ・ニューラルネットワーク
  2. 教師あり学習(分類問題)の流れ ⼤量のデータ (正解ラベル付き) 前 処 理 特徴 抽出 学習 (モデル構築)

    機械学習(ML)アルゴリズム 学習済み モデル ML 推論 特徴 抽出 ? 前 処 理 未知データ (ラベルなし) 予測結果 推論フェーズ MLアルゴリズム 学習フェーズ 5
  3. STATLOG results Method Test Misclassification Error 2 4 6 8

    10 12 14 0.0 0.05 0.10 0.15 LVQ RBF ALLOC80 CART Neural NewID C4.5 QDA SMART Logistic LDA DANN K-NN なぜK-近傍法を学ぶのか? 9 単純だが非常に強力な教師あり学習器 470 13. Prototypes and Nearest-Neighbors Spectral Band 1 Spectral Band 2 Spec Spectral Band 4 Land Usage Predicte FIGURE 13.6. The first four panels are LANDSAT images for a area in four spectral bands, depicted by heatmap shading. The r panels give the actual land usage (color coded) and the predicted lan スペクトル画像 農地の地質 Michie, D., Spiegelhalter, D.J. and Taylor, C.C. (1994) Machine Learning, Neural and Statistical Classification. Ellis Horwood, New York. STATLOGデータセットに対する分類精度は第2位
  4. 歴史的に成功事例が多いK-近傍法 10 画像2出典: https://ja.wikipedia.org/wiki/MNISTデータベース 画像3出典: https://www.shinyuri-hospital.com/column/column_202002.html ⼿書き⽂字認識 Spectral Band 4

    Land Usage Predicted Land Usage FIGURE 13.6. The first four panels are LANDSAT images for an agricultural area in four spectral bands, depicted by heatmap shading. The remaining two panels give the actual land usage (color coded) and the predicted land usage using a five-nearest-neighbor rule described in the text. first problem, while 1-nearest-neighbor is best in the second problem by a factor of 18%. These results underline the importance of using an objective, data-based method like cross-validation to estimate the best value of a tuning parameter (see Figure 13.4 and Chapter 7). 13.3.2 Example: k-Nearest-Neighbors and Image Scene Classification The STATLOG project (Michie et al., 1994) used part of a LANDSAT image as a benchmark for classification (82×100 pixels). Figure 13.6 shows 衛星画像認識 ⼼電図の異常パターン検出
  5. K-近傍法アルゴリズムの定式化 16 foreach x’ in S do compute dist(x, x’)

    take the top k nearest neighbors S’ from S foreach ci in C do !! ← # # ∈ %" &'( )*&## # = )! | return argmax #!∈% !! 1 2 3 4 5 6 タスクに応じて設定 K近傍データの中でクラスci に属するデータの数 Input: x: ターゲットデータ Input: S: ラベル付きデータセット Input: C: クラスラベルのリスト Input: k: 閾値 Input: dist: 距離関数
  6. 教師あり学習のための機械学習アルゴリズムの分類 18 ロジスティック回帰 ナイーブベイズ サポートベクターマシン K近傍法 ランダムフォレスト & 決定木 ニューラルネットワーク

    訓練データをすべて記憶して おき,それら全部を使って 予測を⾏う(推論計算が遅い) 訓練データの背後にあるモデル を抽出し,それを予測時に使う (推論計算は速い) インスタンスベース モデルベース
  7. 教師あり学習の流れ ⼤量のデータ (正解ラベル付き) 前 処 理 特徴 抽出 学習 (モデル構築)

    機械学習アルゴリズム 学習済み モデル ML 推論 特徴 抽出 ? 前 処 理 未知データ (ラベルなし) 予測結果 推論フェーズ 学習フェーズ 21
  8. 教師あり学習の流れ ⼤量のデータ (正解ラベル付き) 前 処 理 特徴 抽出 学習 (モデル構築)

    機械学習アルゴリズム 学習済み モデル ML 推論 特徴 抽出 ? 前 処 理 未知データ (ラベルなし) 予測結果 推論フェーズ 学習フェーズ 22 構築したモデルの予測性能を どう評価するか? [分類性能の基本的な考え方] 真の分類結果と同じ分類が できている率が高い Q. A. [回帰性能の基本的な考え方] 真の結果と推定結果の 誤差が小さい
  9. 2クラス分類問題における評価指標(1/4) 23 !""#$%"& = () + (+ () + ,)

    + ,+ + (+ 正例,負例と予測したものが実際にそうだった割合 精度 (accuracy) モデルの予測 Positive Negative 正解 ラベル Positive TP (true positive) FN (false negative) Negative FP (false positive) TN (true negative)
  10. 2クラス分類問題における評価指標(2/4) 24 )$-"./.01 = () () + ,) 正例 (注⽬ラベル)と予測したデータのうち,実際に正例

    であった割合.正例に対する推論の正確さを⽰す. 適合率 (precision) モデルの予測 Positive Negative 正解 ラベル Positive TP (true positive) FN (false negative) Negative FP (false positive) TN (true negative)
  11. 2クラス分類問題における評価指標(3/4) 25 モデルの予測 Positive Negative 正解 ラベル Positive TP (true

    positive) FN (false negative) Negative FP (false positive) TN (true negative) 2-"%33 = () () + ,+ 実際に正例であるデータのうち,モデルが正例であると 予測したデータの割合.取りこぼしの少なさを⽰す. 再現率 (recall)
  12. 2クラス分類問題における評価指標(4/4) 26 2&'()*+' = 2 4 567)8#89' 4 :7)&** 567)8#89'

    + :7)&** 適合率と再現率をバランスよく達成できているかを⽰す F値 モデルの予測 Positive Negative 正解 ラベル Positive TP (true positive) FN (false negative) Negative FP (false positive) TN (true negative)
  13. 評価指標によって⼿法の良し悪しの判断が変わる 27 検査結果 陽性 陰性 実 際 陽性 39 11

    陰性 24 26 ウイルス検査⼿法B 検査結果 陽性 陰性 実 際 陽性 20 30 陰性 5 45 ウイルス検査⼿法A Accuracy = !"#$% !"#%#&"#$% = 0.65 Precison = !" !"#% = 0.80 Recall = !" !"#&" = 0.40 F値 = 0.533 Accuracy = &'#!( &'#!$#))#!( = 0.65 Precison = &' &'#!$ = 0.619 Recall = &' &'#)) = 0.78 F値 = 0.690 ⼀般に適合率と再現率はトレードオフの関係にある ? ? ? ? ? ? ? ?
  14. 不均衡データに対する2クラス分類の評価指標 28 AUC (Area Under Curve) • 横軸に偽陽性率(FPP),縦軸に再現率(TPP)とする曲線が 作る平⾯の⾯積 •

    ラベル分布に偏りがある不均衡データに⽤いる | | 1.0 1.0 0 True Positive Rate (TPP) False Positive Rate (FPP) AUC ・理想はオレンジの点線がなす領域 ・0から1の値をとる
  15. 絶対やってはいけないコト 29 # Python 1 from sklearn.neighbors import KNeighborsClassifier 20

    model_K = KNeighborsClassifier(n_neighbors=5) 21 mode_K.fit(X_train, y_train) # K近傍法で学習 22 score_K = model_K.score(X_test, y_test) … ドキュメントに書いてあった 予測性能のスコアを返す関数 23 print(score_K, score_S) モデルKとモデルSの 「予測性能スコア」を表⽰ >> 0.80, 0.619 # モデルKのスコアの⽅が⾼い!! タスクに応じて適切な評価指標を使うこと!!
  16. 多クラス分類問題における評価指標(1/2) 30 モデルの予測 C1 … Ck 正解 ラベル C1 n11

    n1k … … Ck nk1 nkk 各クラスに対する再現率のマクロ平均 Balanced Accuracy <))=6&6>7(8(9#': = 1 @ A ;<= ; :7)&**; これら再現率 の平均を計算
  17. 多クラス分類問題における評価指標(2/2) 31 モデルの予測 C1 … Ck 正解 ラベル C1 n11

    n1k … … Ck nk1 nkk 正解ラベルとモデル予測したラベルの相関係数 (kは各クラス) マシューズ相関係数 (MCC) ∑ ! ∑ " ∑# (#!! #"# − #!" ##! ) ∑ ! (∑ " #!" )(∑ !!|!!%! ∑ "! #!!"& ) ∑ ! (∑ " #"! )(∑ !!|!!%! ∑ "! #"!!& ) 式は複雑だが,表現しているのは相関係数と理解しよう
  18. 教師あり学習の実践するときの基本的な流れ … データセット(特徴量x & ラベルyのリスト) データを⼀定の割合に分割 訓練データ テストデータ !!! ⋮

    !!" "! !"! ⋮ !#" "# !#! ⋮ !$" "$ … B A B A A … B A B Step 1 訓練データを ⽤いた学習 Step 2 ML A … 推論結果 A B ラベルを隠してテスト データのラベルを推論 Step 3 … A B A …
  19. 教師あり学習の実践するときの基本的な流れ … データセット(特徴量x & ラベルyのリスト) データを⼀定の割合に分割 訓練データ テストデータ !!! ⋮

    !!" "! !"! ⋮ !#" "# !#! ⋮ !$" "$ … B A B A A … B A B Step 1 ラベルを隠してテスト データのラベルを推論 Step 3 … A … 推論結果 B … 隠していたラベル 推論結果と元ラベル との⽐較による性能評価 Step 4 訓練データを ⽤いた学習 Step 2 ML A A B B … A B A
  20. ホールドアウト法 … データセット(特徴量x & ラベルyのリスト) データを⼀定の割合に分割 訓練データ テストデータ !!! ⋮

    !!" "! !"! ⋮ !#" "# !#! ⋮ !$" "$ … B A B A A … B A B Step 1 ラベルを隠してテスト データのラベルを推論 Step 3 A … 推論結果 B … 隠していたラベル 推論結果と元ラベル との⽐較による性能評価 Step 4 訓練データを ⽤いた学習 Step 2 ML A A B B … … A B A
  21. 機械学習の⽬標 39 汎化性能の高い予測モデルの獲得 未知データに対する予測性能が⾼い データセット 訓練データ テストデータ ML 1. 分割

    2. 学習 3. 評価 テストデータは 「未知データ」扱い データセット ML 1. 学習 2. 評価 評価が高く見えるよう 自己最適化しているだけ (学習時と同じ データを使⽤)
  22. 汎化性能、モデルの複雑さ、学習回数 40 モデルの複雑さ、学習回数 予 測 誤 差 訓練データ テストデータ モデルの複雑さや学習回数を増やしぎると

    訓練データを過学習し、未知データに対する汎化性能が下がる 訓練データに対してだけ予測誤差が下がっても意味なし ベスト塩梅
  23. シャッフルしない & ラベル分布を考慮しないデータ分割の問題 42 データセット … A A A B

    B Aは70% Bは30% A A A … 訓練データ (ラベルA=100%) B B … … 先頭から7:3に分割 テストデータ (ラベルB=100%) A … 推論結果 B … 隠していたラベル ML A B A B 偏った学習 偏った 性能評価 汎化性能の低下!!
  24. 汎化性能向上のためのデータ分割⽅法 43 データセット … A A A B B Aは70%

    Bは30% … 訓練データ (全体の50%) テストデータ (全体の50%) A 100% A 40% B 60% 訓練データ (全体の50%) テストデータ (全体の50%) A 70% B 30% A 70% B 30% シャッフル & 層別化分割 安直に前から50:50分割 シャッフル & 層別化(stratification)
  25. 汎化性能向上のためのデータ分割⽅法 44 データセット … A A A B B Aは70%

    Bは30% … シャッフル & 層別化分割 安直に前から50:50分割 シャッフル & 層別化(stratification) # Python 1 train_test_split( 2 X_cancer, y_cancer, 3 test_size=0.3, # 7:3に分割 4 shuffle=True, # シャッフル 5 stratify=y_cancer) # 層別化 # Python 1 train_test_split( 2 X_cancer, y_cancer, 3 test_size=0.3) # 7:3に分割
  26. 汎化性能向上のためのデータ分割⽅法 45 データセット … A A A B B Aは70%

    Bは30% … 訓練データ (全体の50%) テストデータ (全体の50%) A 100% A 40% B 60% 訓練データ (全体の50%) テストデータ (全体の50%) A 70% B 30% A 70% B 30% 安直に前から50:50分割 シャッフル & 層別化分割 ダメ、絶対 シャッフル & 層別化(stratification)
  27. K分割交差検証 (K-fold Cross Validation: CV) 〜 汎化性能評価のため⼯夫 46 訓練データ 1回⽬

    2回⽬ 3回⽬ テストデータ 訓 訓 訓 訓 訓 訓 テ テ テ モデル モデル モデル 0.82 0.76 0.79 平 均 0.79 学 習 性 能 評 価 最終スコア 1. データをK個に分割する 2. 分割データの1個をテスト,K-1個を訓練データとし学習・評価 3. 分割された各データがテストとなるようステップ2を繰り返す 4. ステップ3の評価スコアの平均値を最終スコアとする 訓練/テストデータの選び⽅による過学習・性能評価のブレを防ぐ
  28. 今後の予定 48 回 実施⽇ トピック 1 04/12 ガイダンス 2 04/19

    機械学習の概要 & はじめての機械学習 3 04/26 演習:決定⽊ 4 05/10 クラスタリング1:k-means & 階層的クラスタリング 5 05/17 クラスタリング2:密度ベースクラスタリング 6 05/24 分類1:K近傍法 & 教師あり機械学習のお作法 7 05/31 分類2:サポートベクターマシン 8 06/07 分類3:ニューラルネットワーク⼊⾨
  29. 数学記号(集合) 49 集合 (太字でない⼤⽂字アルファベット) ! 集合の要素 (太字でない⼩⽂字アルファベット) " 4 =

    /!, /", … , /# = 7 7 ∈ 2 ∧ : 7 > 0} 外延表現:要素を並べる書き⽅ 内包表現:要素の条件を指定する書き⽅ (xが実数でかつ f (x)がゼロより⼤きくなるようなxの集合) 集合の書き⽅ 集合の⼤きさ(要素数) |"|
  30. 例 50 + = 0, 1, 2, … @ =

    … , −2, −1, 0, 1, 2, … B = 2n + 1 | n ∈ + (⾃然数) (整数) (奇数) , = りんご, みかん, なし |,| = 3
  31. 数学記号(ベクトル) 51 # ベクトル (太字の⼩⽂字) 断りがない限り,縦ベクトル B > = C=

    > + ⋯ + C& > ベクトルの要素の書き⽅ 実数を成分とする m次元ベクトル B = C= ⋮ C& ∈ :& = C=, … , C& ? ベクトルの⼤きさ ! と書くことも B 4 H = B? H = ∑ C;>; ベクトルの内積 !, # と書くことも
  32. 数学記号(⾏列) 52 ⾏列 (太字の⼤⽂字) F = 7!! ⋯ 7#! ⋮

    7$! ⋱ ⋯ ⋮ 7$# ∈ 2$×# $の各列(縦ベクトル) を使った書き⽅ 実数を成分とする m⾏ n 列の⾏列 = 7&' $×# こんな書き⽅も = J!, … , J# ! ⾏列の 要素の書き⽅
  33. 機械学習でよく⾒かける数学的処理(1/3) 53 A !<= 9 C! = C= + C>

    + ⋯ + C9 J !<= 9 C! = C=C> … C9 K K7( :(J) 数列の和 数列の積 偏微分 @ A = B) C) + B! C! + ⋯ + B* C* 例: F FC* @ A = B*
  34. 機械学習でよく⾒かける数学的処理 (2/3) 54 argmax !∈# )(+) argmin $∈# )(+) max

    $∈# )(+) min $∈# )(+) 関数を最⼤化 関数を最⼩化 実数の範囲でパラメータxを 動かし関数f(x)を最⼤化・最⼩化 関数を最⼤化する パラメータ 関数を最⼩化する パラメータ 関数を最適化する 実数を⾒つける
  35. 機械学習でよく⾒かける数学的処理 (3/3) 55 sign + = 1 1: + >

    0 0: + = 0 −1: + < 0 符号関数 値の符号に応じて ・正なら1 ・負なら-1 ・ゼロなら0 を返す関数と覚える 画像出典: https://ja.wikipedia.org/wiki/符号関数 (sgn * と書くことも)
  36. 機械学習でよく出くわす瞬時に理解すべき数式 56 !!" # = !$ !" !# # =

    #$!$ $ % %% &% = '$( Matrix Cookbook: http://www2.imm.dtu.dk/pubdb/edoc/imm3274.pdf ) )( ( & = ) )( ($( = 2( ) )( +( = +$ ) )( '$( = ' ) )( ( − - & = 2(' − -) ) )( !( − 0 & = 2!$(!( − 0) ! + # # = !$ + #$
  37. ⾏列サイズの⾒積もり 57 ⾏列A はm⾏ k列(m×k),⾏列B はk⾏ n列(k×n), ⾏列 Wはm⾏ m列(m×m),ベクトルxは

    m⾏ 1列(m×1) とする.このとき以下の演算結果のサイズは? Q1. 8%# Q2. #%9# Q3. #%# スカラー スカラー (k×1)の⾏列(k次元ベクトル) (m×k)の⾏列と(k×n)の⾏列の積をとると, (m×n)の⾏列ができあがると覚えておけばよい