E検定取得に向けた学習内容② ~機械学習

E検定取得に向けた学習内容② ~機械学習

先日の、応用数学編の続きです。
学んだことを、メモの箇条書きで書いていきます。

<AI導入までの流れ>

・問題設定→データ選定→データの前処理→モデルの選定→モデルの学習→モデルの評価
・問題設定、データ選定の部分が最も重要。以下は自分の中でも業務上求められることが多い。
 ・そもそもAIを使ってお客様がやりたいことは明確になっている?
 ・そもそも機械学習を適用する必要があるのか?(ルールベースでよいのでは?)
 ・そもそもデータは手に入るのか?(使わせてもらえる?大量データは存在する?)
 ・そもそも前提条件はお客様と合意できている?(意識あっている?評価指標も明確になっている?)

AIの業務への導入を推進する上で検討すべき事項・対策を考えるにあたっては、以下のブログも参考になった。
機械学習を社会実装するということ

<線形回帰モデル>

・「バブニック(SVM提唱者)の原理」…回帰問題とランキング問題では、回帰問題のほうが難しい。必要のない難しい問題を解く必要はない。
・ 説明変数が1次元の場合(m=1)を単回帰モデル、 多次元の場合(m>1)を線形重回帰モデル と呼ぶ
・線形回帰モデルの数式
 y(目的変数)=w0(切片)+w1(回帰係数)x1(説明変数)+ε(誤差)
・線形回帰モデルのパラメータは、最小二乗法で推定。
 二乗誤差(MSE)を用いるのはなぜか。絶対値ではだめなの?→ダメではない。関数の設計として、1乗の絶対値は、Huber損失、Tukey損失などが近い。
・二乗誤差の展開式、おさえておきたい。

単回帰モデルの数式

<非線形回帰モデル>

・回帰関数として、基底関数と呼ばれる既知の非線形関数とパラメータベクトルの線型結合を使用
・ よく用いられる基底関数として、多項式関数、ガウス型基底関数、スプライン関数/ Bスプライン関数 など。ここでガウス関数が登場する。正規分布関数は、ガウス関数の一種。

a\exp \left\{-{\frac  {(x-b)^{2}}{2c^{2}}}\right\}
ガウス関数(Wikipediaより)

・未学習と過学習。未学習は単純すぎるモデル、過学習は複雑なモデルで発生する。
・過学習を防ぐには、
 ・学習データの数を増やす
 ・不要な基底関数(変数)を削除して表現力を抑止
 ・正則化法を利用して表現力を抑止
・正則化→Lasso推定 (L1ノルム)とRidge推定(L2ノルム)。Lasso推定ではいくつかのパラメータを0に、Ridge推定では0に近づける。
・行列要素がほぼ並行しているような行列Xについて、パラメータの重みは非常に大きくなってしまう(ビデオの43:07あたり) 。これに対して、重みが大きくなりすぎることに対して罰則を設けるのが正則化(ビデオの43:07あたり)

多項式回帰

上は多項式回帰の例。sinの周りにランダムでおかれた学習データに対して、データにより近い形で推測できていることがわかる。

<ロジスティック回帰モデル>

・2値分類問題に用いられる。
・入力とm次元パラメータの線形結合をシグモイド関数に入力する。出力は1になる確率。

シグモイド関数の数式は以下。(シグモイド関数の微分(Qiita)より)

・sigmoid(z)=1/(1+e^(-z))
・(微分すると)f(z)′=(1−f(z))⋅f(z)

・勾配降下法とSGD(確率的勾配降下法)

ロジスティック回帰による予測

上はロジスティック回帰の例。 sigmoid層の出力が0.5より大きい場合、1と予測する

<主成分分析>

・固有値は必ず0以上、固有ベクトル同士は必ず直行する。
・ k番目の固有値(昇順)並べ、対応する固有ベクトルを第k主成分と呼ぶ
・ 寄与率:第k主成分の分散の全分散に対する割合(第k主成分が持つ情報量の割合)
・累積寄与率:第1-k主成分まで圧縮した際の情報損失量の割合

2次元へのPCA結果の可視化例

上はPCAにより2次元に次元削減をした例。2次元・3次元へ次元削減することで、データの分布および主成分方向などを可視化することができる。

<アルゴリズム>

・ k近傍法(k-NN):分類問題のための機械学習手法
 ・最近傍のデータを個取ってきて、それらがもっとも多く所属するクラスに識別
 ・kを大きくすると決定境界は滑らかになる
・k-means:教師なしクラスタリング手法
 ・初期値をランダムに選ぶため、初期値によってクラスタリングの結果も変わる。
・k-means+
 ・上記のk-meansの弱点をカバーするための手法
 ・初期のクラスタの中心同士は離れていた方がよいという考え方に基づいて設計
 ・初期のクラスタ中心点をデータ点間の距離に基づいて確率的に決定する

k近傍法の例。学習は訓練ステップは明に存在しない。

・予測するデータ点との、距離が最も近いk個の、訓練データのラベルの最頻値を割り当てる
・k-means++の参考→k-means++を理解する

<サポートベクターマシン>

・線形モデルの正負で2値分類を行う機械学習手法
・SVMでは、正しい分類基準を見つけるために、「マージン最大化」という考えを使う。
・マージンとは、「判別する境界とデータとの距離」 。
・サポートベクターとは、境界に最も近いデータ。
・数学的な難しい部分は、SVMを押さえておけば、深層学習はある程度モデルの組み換えがメインでそこまで数学的に難しくない場合が多い 。
・カーネルトリックにより高次元ベクトルの内積をスカラー関数で表現することで、 計算コストを抑えられる
カーネル法、カーネルトリックとは何か?

SVMによる2値分類

<数式を読む上での、暗黙の了解>

・数式を読む上での、暗黙の了解を理解する
・「ベクトルは基本的に太字で書く、1つ1つのスカラーは細字」
・「白抜きのR:実数全体の集合」
・「慣例として予測値にはハットを付ける」
・arg: 入力(例えばarg min~は、~を最小とする入力を求めるということ)

<おすすめ書籍…今度読んでみよう>

・おすすめ書籍「機械学習のエッセンス」
 →数学、最適化、python基礎、機械学習(E資格の範囲とほぼ一致)と、
  scikit-learnなど使わずに、numpyなどだけで書かれており、E資格の内容に近く、おすすめ。
  SMOがしっかり書かれているのは本著くらいか、とのこと。