図解即戦力 機械学習&ディープラーニングのしくみと技術がこれ1冊でしっかりわかる教科書 前半(機械学習)
人工知能
定義あいまい
人間と同じような知的処理
分類
強い/弱い
強い
人間の知能を模倣
シンギュラリティ
弱い
人間の行動を模倣し、一部の機能を代替
将棋、画像
汎用/特化型
汎用
設計時には想定されてなかったものも
特化型
限定的な状況・目的
ルンバ
発達段階
単純な制御プログラム
古典的人工知能
MLを取り入れた人工知能
DLを取り入れた人工知能
機械学習(ML)
入力データ→学習モデル→計算結果
教師データとモデルが出した結果を比べて修正
最終的なモデル
分類と回帰
分類
入力データがいくつかのグループに分けられる
グループ内の細かい違いは無視
グラフの線でグループを分ける
「A派 or B派」という分類
回帰
データの傾向を見る
入力データを1グループとして見る
グループ内の違いを分析
グラフの線はプロットと重なる
「A派になる確率はn%」という回帰
ディープラーニング(DL)
ニューラルネットワークを利用
入力層→隠れ層(深い)→出力層
隠れ層
特徴量を自動で抽出
歴史について
教師あり学習
未知のデータに対して正しい回答をする
ラベル = こたえ
ラベル付きデータ・訓練データ = こたえ付きデータで学習
テストデータを分類する
分類(識別)
離散値
交差エントロピー誤差で修正
回帰
連続値
平均二乗誤差で修正
教師なし学習
データの特徴を捉える
クラスタリング
階層的クラスタリング
特徴が似ているものを1つずつ結合させていく
非階層的クラスタリング
はじめにクラスタ数を設定
クラスタ数が適用できるようクラスタリングする
次元削減
重要な情報を抜き出し不要な情報を削除する
データの可視化
人間は3次元までしか視認できない
縦軸が数学 横軸が国語
縦軸が数学 + 物理 横軸が国語 + 英語
強化学習
正解を与えなくても試行錯誤で最適な行動を選べる
正解はないが報酬を与え最大化させる
用語(あとで見直そう)
状態 State
行動 Action
エージェント Agent
報酬 Reward
方策 Policy
収益 Return
Q値 Q-Value
V値 V-Value
エピソード Episode
統計と機械学習
統計
データを説明
機械学習
データを予測
機械学習と特徴量
機械学習は演繹的思考ではなく統計的思考
特徴量
色の濃淡や重量などの情報を数値化
人間が決める
ボトルネック
人間が取捨選択しなければならない = 設計
DL の利点は自動化されていること
機械学習の得手不得手
過去にデータが存在するか
データが十分にあるか
データが定量的であるか
推論の過程が分からなくても良いか
機械学習のプロセスとコア技術
基本ワークフロー
全体設計
問題の定式化
ex. 収益を増やしたい→商品をおすすめしたい→商品を買う可能性を予測
システム設計
データをどこから取得し、どういった形で利用するのか
データ収集
自前
役所や企業の公開データ
ネット
機械学習の設計とシステム運用
機械学習アルゴリズムの選択
データの整形・特徴量エンジニアリング
モデルの学習
予測結果の検証と評価
ハイパーパラメータのチューニング
システムの運用
データの収集
十分なデータ量か
条件は変わってないか
データの整形
カテゴリデータの整形
性別、住んでいる地域など
ラベルエンコーディング
各カテゴリに数値を割り当てる
カウントエンコーディング
カテゴリデータの出現回数を割り当てる
One-Hot エンコーディング
列の名前をカテゴリ名
一致したら1 不一致なら0
カテゴリを明確に分けることができる
メモリを食う
数値データの整形
離散化
対数変換
スケーリング
Min-Max スケーリング
最小値を0最大値を1
標準化
平均を0分散を1
モデルの作成
「関数」的なイメージ
訓練誤差
パラメータを更新していく
繰り返し学習する = イテレーション
バッチ学習
一括学習
全データを何度も学習し直す
ミニバッチ学習
オンライン学習
逐次学習
学習率
大: 新しいデータ重視、古い学習の情報は失われやすい
アウトオブコア学習
バッチ学習を行うにはデータが大きすぎる場合
テストデータによる予測結果の修正
汎化性能
未知のデータに対する予測・分類精度
テストデータで検証する
学習データとテストデータを分ける
ホールドアウト検証
データを学習/テストに分割
2:1, 4:1, 9:1
K-分割交差検証
学習/テストに分割するパターンを複数用意
別々に学習と検証
総合的に決める
全データが検証に使われる
ホールドアウトの10倍程度の計算資源
現在もっとも使われている
Leave-one-out交差検証
全データから1データずつ抜き出し検証用に、あとは学習用
データが多くない場合
学習結果に対する評価基準
回帰
R^2(決定係数)
予測誤差を正規化(0~1)
RMSE(平方平均二乗誤差)
正規分布の誤差に対して正確
局所的な誤差に左右されやすい
MAE(平均絶対誤差)
多くの外れ値の存在するデータセットに対する評価
分類
混合行列
T: True(予測が正解)
F: False(予測が不正解)
P: Positive(結果が+)
N: Negative(結果が-)
正解率 = (TP+TN)/(TP+FP+FN+TN)
再現率 = TP/(TP+FN)
ただしく + と判定できたものの割合
偽陰性の方が偽陽性より危険
適合率 = TP/(TP+FP)
F値 = 2*再現率*適合率/(再現率 + 適合率)
再現率と適合率はトレードオフ
調和平均を取ることでより良い指標に
ハイパーパラメータとモデルのチューニング
パラメータ
1次関数でいうと直線の傾きや切片
ハイパーパラメータ
何次式にするか(直線/二次曲線/......)
未熟な場合
未学習
学習が十分でない
「真のモデルが3次曲線であるのに直線を提示してしまった」
近似誤差
学習データとモデルの間の誤差
過学習
学習データに対する精度向上を重視しすぎ
未知のデータに対する精度が下がる
「真のモデルが3次曲線であるのに8次曲線を提示してしまった」
学習データに追従しすぎて汎用性を失う
推定誤差
テストデータとモデルの間の誤差
ハイパーパラメータのオートチューニング
人力では厳しい(あとで調べる)
グリッドサーチ
ランダムサーチ
焼きなまし
ベイズ最適化
遺伝的アルゴリズム
能動学習
大量のラベル付は煩雑
教師データの数を絞る能動学習
ラベル選び
= 効率化手法
紛らわしいデータを選ぶ
学習者
機械学習システム
判別者
人間
質問者
ラベル付けと同義
手法
Membership Query Synthesis
紛らわしいデータを作り出したあと判別者に質問
Stream-Based Selective Sampling
未ラベル付けデータを1つ取り出し、紛らわしければ質問
Pllo-Based Sampling
大量のラベルなしデータの紛らわしさを計算、役に立ちそうなものに質問
相関・因果
疑似相関
因果関係がありそうな関係
50m走のタイムと計算力
交絡変数(見えない要員)は学年
ランダム化比較試験
回帰分断デザイン
フィードバックループ
コードだけではなくデータに依存する振る舞い
システムの振る舞い→環境→次に観測するデータ
ex. 予測警備
過去の犯罪多発地帯を重点的にパトロール
検挙数が多い
さらに強化される
さらに……
確証バイアスの自動化
隠れたフィードバックループ
独立した複数の機械学習システム間
バグの結果を学習し合う
機械学習のアルゴリズム
回帰分析
単回帰
原因1 : 結果1
1次関数的なやつ
誤差関数(損失関数)
最小二乗法
重回帰
複数の説明変数
係数 = 影響の重さ
多重共線性
相関の強いもの同士を説明変数にすると回帰出来ない
降水量と降水日など
多項式回帰
重回帰の一部なのでは?
次数 = 最大で何乗まで考えるか
大きすぎると過学習が起きる
誤差関数(損失関数)
最小二乗法
ロバスト(頑健)回帰
最小二乗法は外れ値があった場合に回帰結果が的外れになる
RANSAC
一部の点を抽出して回帰→繰り返す→正常値の高いもの
他に Theil-Sen 推定量, Huber 損失 など
過学習を抑える正則化
罰則項(正則化項)
回帰係数が大きすぎることに対する罰則を与える
誤差関数 = 誤差の二乗和 + 罰則項 (= 正則化最小二乗法)
L1正則化
ラッソ回帰
回帰係数の絶対値の和を基準
L2正則化
リッジ回帰
回帰係数の2条和を基準
こっちのほうが予測性能が高いと言われる
サポートベクターマシン(SVM)
教師あり学習で回帰・分類・外れ値検出
サポートベクター(ベクトル)
境界に最も近い点
サポートベクトルと境界との距離をマージン
SVMはマージンを最大化
ソフトマージン SVM
誤差を認めると線形分離できるデータ
データがマージンに入ったときにペナルティ
ペナルティを最小化する
カーネル法
線形分離可能な高次元特徴空間に写像する
サポートベクトル回帰(SVR)
決定木
ノード(根ノード・葉ノード)
Y/n
Pros
条件分岐の様子を記述できる
理解しやすい
ブラックボックス化しない
前処理が少なくて済む
計算量がデータ数に対して少ない
ビッグデータに強い
数値/カテゴリ両方のデータに使える
統計的検定を行える
Cons
条件分岐が複雑になり過学習になりがち
データが少し変わっただけで決定木がかわる
NP完全問題
最もふさわしい決定木を選ぶのは困難
現在は近似解
データにおける派閥(クラス)の割合を均す必要がある
アンサンブル学習で短所を補える
分割の基準
分割のきれいさ
情報エントロピー
ジニ不純度
剪定(枝刈り)
過学習を防ぐ
事後剪定
訓練データを過学習させたあとに剪定して予測精度を上げる
REP
精度が悪化しないなら精度が悪化しないならノードを最も割合の高い葉ノードに入れ替える
アンサンブル学習
低精度のモデルを組み合わせる
弱学習器
複雑なモデルの学習はできない
計算が早い
データが比較的少なくても可能
DLは不可能
多数決
平均
加重平均
バギング
ブートストラップ法
母集団から重複込みでランダムにデータを取り出す
ノイズの受け方が異なる集団を作れる
ブースティング
訓練データを1つめのモデルに学習させ予実比較
次のモデルでは間違って学習したデータを重視
次の……
アンサンブル学習の応用
ランダムフォレスト
バギングとほぼ同じ
決定木を分岐させる特徴量もランダム
決定木が似るのを防ぐ
スタッキング
学習を2段階以上に分ける
1: ブートストラップ法
2-: 予測結果を入力値
勾配ブースティング
1: 決定木
誤差を出す
誤差を正解データとして決定木
結果を定数倍して足す
ロジスティック回帰
教師あり学習
y/nを確率として推測
ロジスティック関数(シグモイド関数)
0<=y<=1 のS字曲線
Yes か No かの2択なので確率は0%か100%かに集中する = S字
非線形データに弱い
ベイジアンモデル
最尤推定(↑これまでやったもの)
最もふさわしい
2番目、3番目にふさわしい情報は捨てる
ベイズ推定
推定結果 = (値, その値が推定結果である確率) のペア
事前分布(予想、主観的でも良い)→事後分布
ベイズ更新
ベイズの定理
結果から原因を求める手法
推定にデータ以外の知識を反映できる
機械学習におけるベイジアンモデル
機械学習
ツールボックスによるアプローチ
何らかのデータに特化しない
決定木, 回帰分析, K近傍法, ランダムフォレスト, ...
モデリングによるアプローチ
ベイジアンモデル
データの発生構造の候補を予め設計
データから修正してモデルを推計
高度な数学的知識が必要
MCMC(マルコフ連鎖モンテカルロ法)
確率的プログラミング言語
時系列分析
自己相関がある
例: 今年のツバメの数は去年以前のツバメの数に影響を受ける
回帰分析はデータ同士が独立でないと使えない
時系列モデルを使う
自己回帰(AR)モデル
基本
回帰分析(単回帰・重回帰)に近い
事故の過去の値を用いる点が違う
あまり使わない
移動平均(MA)モデル
過去の移動平均
あまり使わない
自己回帰移動平均(ARMA)
AR + MA
自己回帰和分移動平均(ARIMA)
トレンドに階差で対応
季節自己回帰和分移動平均(SARIMA)
週月年ごとの周期変化を差し引く
状態空間モデル
時系列モデルのひとつ
観測されるのは本当の状態ではない
観測モデル
状態モデル
観測誤差
k 近傍法(k-NN)
k 平均法(k-means)