教師あり/なし学習でおさえておくべきことを軽くまとめてみた


備忘録も兼ねて、「教師あり学習」と「教師なし学習」について、概要・利用するクラス・事例・キーワードと、学習する上で参考になったサイトについてまとめておきます。

『教師あり学習』

めちゃザックリ:特徴を表すデータと対応する答えのデータを与えて学習させることで予測モデルを作る。予測には分類問題と回帰問題がある。

各手法

①線形回帰

あらゆる直線のうち、損失関数(誤差関数)の値が最も小さくなるパラメータを求める。

②ロジスティック回帰

二値分類のアルゴリズムで、分類問題に適用される。

③SVM(線形)

決定境界(直線)がデータから離れるように学習するアルゴリズムで、分類と回帰のどちらにでも使える。

④SVM(カーネル法)

カーネル関数により実空間のデータを超平面で分離できる空間に写像してから、データ集合を分離する。

⑤ナイーブベイズ

特徴量がそれぞれ独立であるという仮定のもとで、データがあるラベルである確率を計算する。

⑥ランダムフォレスト

多様性のある複数の決定木から出力を集め、多数決で分類の結果を出す。

⑦ニューラルネットワーク

入力と出力の間に中間層を挟むことで、複雑な決定境界を学習する。

⑧k近傍法

入力データの近傍k個の分類の多数決により判定を行う。

評価方法

  • a. 分類問題の場合
    • a-1. 混同行列
      利用するクラス:sklearn.metrics.confusion_matrix
    • a-2. 正解率
      利用するクラス:sklearn.metrics.accuracy_score
    • a-3. 適合率
      利用するクラス:sklearn.metrics.precision_score
    • a-4. 再現率
      利用するクラス:sklearn.metrics.recall_score
    • a-5. F値
      利用するクラス:sklearn.metrics.f1_score
    • a-6. ROC-AUC
      利用するクラス:sklearn.metrics.roc_curve

 参考サイト:
 scikit-learnで混同行列を生成、適合率・再現率・F1値などを算出
 scikit-learnでROC曲線とそのAUCを算出

  • b. 回帰問題の場合
    • b-1. 平均二乗誤差
      利用するクラス:sklearn.metrics.mean_squared_error
    • b-2. 平均絶対誤差
      利用するクラス:sklearn.metrics.mean_absolute_error
    • b-3. 決定係数
      利用するクラス:sklearn.metrics.r2_score

 参考サイト:scikit-learn で回帰モデルの結果を評価する

過学習を防ぐ方法

  • a. ハイパーパラメータ
    • a-1. グリッドサーチ
      利用するクラス:sklearn.grid_search.GridSearchCV
    • a-2. ランダムサーチ
      利用するクラス:sklearn.grid_search.RandomizedSearchCV

 参考サイト:scikit-learnでモデルのハイパーパラメータチューニングをしよう!

  • b. データ(学習データ&検証データ)の分割
    • b-1. ホールドアウト法
      利用するクラス:sklearn.model_selection.train_test_split
    • b-2. クロスバリデーション法
      利用するクラス:sklearn.model_selection.cross_val_score sklearn.model_selection.KFold
    • b-3. リーブワンアウト法
      利用するクラス:sklearn.model_selection.LeaveOneOut

 参考サイト:機械学習、ディープラーニングでの学習データとテストデータの分割手法について

  • c. 正則化
    • c-1. リッジ回帰
      利用するクラス:sklearn.linear_model.Ridge
    • c-2. ロッソ回帰
      利用するクラス:sklearn.linear_model.Lasso

 参考サイト:最短でリッジ回帰とラッソ回帰を説明(機械学習の学習 #3)

『教師なし学習』

めちゃザックリ:教師あり学習と異なり、目的変数は存在しない。ここでは特徴データに対し、別の形への変形や、部分集合を見つけることで、その構造を抽出する。手法に、次元削減とクラスタリングがある。

①主成分分析(PCA)

多数の量的説明変数を、より少ない指標や合成変数に要約し、データの変数を削減する。

  • 利用するクラス:sklearn.decomposition.PCA
  • キーワード:分散共分散行列、固有値問題、累積寄与率
  • 参考サイト:主成分分析と固有値問題

②K平均法(K-means法)

データを与えられたクラスタ数に分類し、似たもの同士グループに分ける。

  • 利用するクラス:sklearn.cluster.KMeans
  • 事例:マーケティングデータ分析、画像分類
  • キーワード:クラスタ内平方和、エルボー法、シルエット分析、k-means++、k-medoids法
  • 参考サイト:k-meansの最適なクラスター数を調べる方法

③潜在意味解析(LSA)

文章データで、特徴量を単語数から潜在トピック数に削減することで、単語と文章の類似度を求める。

④非負値行列因子分解(NMF)

入出力データの値が全て非負という性質をもつ次元削減手法。

⑤潜在的ディリクレ配分法(LDA)

文書内の単語からトピックを作成し、文書がどのトピックで構成されているかを求める。

⑥混合ガウス分布(GMM)

複数のガウス分布の線型結合によりクラスタリングを行う。

  • 利用するクラス:sklearn.mixture.GaussianMixture
  • キーワード:ガウス分布

⑦局所線形埋め込み(LLE)

非線形なデータに対して、次元削減を行う。

  • 利用するクラス:sklearn.manifold.LocallyLinearEmbedding

⑧t分布型確率的近傍埋め込み法(t-SNE)

高次元データを二次元か三次元に次元削減する方法で、データの可視化などに利用される。

  • 利用するクラス:sklearn.manifold.TSNE