機械学習

機械学習とは、数学的な根拠から予測・分類・クラスタリング・次元削減などを行います。
機械学習の種類として、教師あり学習、教師なし学習、強化学習があります。
教師なし学習で特徴を抽出して教師ありでそのモデルを再学習する方法として、半教師あり学習もあります。

機械学習(Machine Learning)は機械にトレーニングを行って、その機械が学習した内容から判断(関数を使用)して能動的に結果(動作含む)を出力させることです。
機械学習では、特徴量を利用して結果を出力しますが、人の画像であれば目や鼻・口などの特徴を数値化したものです。

機械学習の具体的手法

学習とは、コンピュータが実行するタスクTを性能指標Pで測定して、実行した経験を経験Eから改善することです。
タスクには、分類・回帰・異常検知・密度推定などが含まれます。
性能指標では、分類では混同行列が、回帰では、平均絶対誤差(MAE)・平均二乗誤差(MSE)などが用いられます。
経験は機械学習の種類で大きく分類でき、データ集合を指す場合が多くて特徴量を列に対応したものを計画行列といいます。
学習には、シングルタスク学習とマルチタスク学習があります。
シングルタスク学習は、一つのモデルで一つの問題を解決し、マルチタスク学習では複数の問題を単一のモデルで解決します。
マルチタスク学習は、分類と回帰を同時に解決したい場合や類似のタスクで解きたい場合に有効です。
大まかな機械学習の流れは、次のようになります。

学習モデルとは入力したものに対して機械学習のアルゴリズムで計算した結果(予測)を出力するものです。
例えば、家賃を計算するモデルであれば、入力は部屋の広さや駅からの近さなどが入力になり、そこから家賃を予測して出力するものです。
また、初期値に人が設定するパラメータのことをハイパーパラメータといいます。

データの前処理

機械学習では基本的に数値のみを扱います。
取得したデータが、数値でないや不足しているまたは外れ値が入っているなどで、学習モデルが正しく学習できない可能性があるためデータを確認して必要に応じてデータを整形・加工します。
前処理の手法を以下に記載します。

学習モデルの選定

どのような問題を解決したいのかを考えて教師あり学習・教師なし学習・強化学習のアルゴリズムを選択します。
家賃や株価の予測なら教師ありの回帰を画像の犬または猫などは分類では教師ありの分類で解決します。
教師なしでは次元削減やクラスタリングなどがあります、用途に応じてどのような学習モデルにするか選定します。

教師あり学習

教師あり学習とは、学習させるときに正解であるラベルデータを用意しておき学習時に正解であるデータで予測していく手法です。
主に迷惑メールの判定や株価などの予測に使われます。
学習モデルの学習・検証には、ホールドアウト法と交差検証法があります。
教師あり学習は大きく分けて回帰と分類があり、回帰は入力されたデータ(連続値)から数値を予測することで分類はカテゴリを予測します。
回帰と分類の大きな違いとして目的変数が回帰は連続値を使用して、分類は離散値を使用します。
目的変数とは、予測したいデータの変数で、目的変数を説明する変数に説明変数があります。
そのため、株価の予測なら説明変数に日経平均株価やダウ平均株価などが使われます。
あらゆる問題で良い性能を示す汎用的な手法としてノーフリーランチの定理がありますが、理論上実現は不可能です。

分類問題では情報利得最大化することで判断基準としており、二値分類と多クラス分類があります。
ディープラーニングの分類問題ではデータ件数が多いクラスを優先して学習してしまうためクラスごとのデータ件数の偏りを極力小さくする必要があります。
また、分類問題ではデータが少ない場合にはデータが偏ってしまい学習に致命的な悪影響を及ぼすおそれがあります。

決定木

教師あり学習の一つで、分類問題と回帰問題を解くためのアルゴリズムです。
決定木はツリー上に選択しながら分岐して分析する手法です。
決定木は通常条件分岐が複雑になりやすいため、剪定(過学習を防ぐ)します。
決定木は分析結果が分かりやすくデータの前処理が少なくてすみます。

ランダムフォレスト

教師あり学習の一つで、分類問題と回帰問題を解くためのアルゴリズムです。
複数の決定木を使用して、平均などををとって分析する手法です。
バギングと決定木などを利用します。

k-近傍(k-nn)

教師あり学習の一つで、分類問題を解くためのアルゴリズムです。
最近傍のデータをk個取得して、kから最小の距離のクラスになるように分類します。
kが3でその中心から、Aクラスが2つとBクラスが1つならAクラスに分類されます。
最近棒法は1-nnとなります。
kの値が変化すると結果も変動し、kの値が大きくなると決定する境界線も滑らかになります。

バギング

教師あり学習の一つで、複数の学習器を総合的な出力結果を求めるアルゴリズムです。
アンサンブル学習の一つで、ブートストラップサンプリングで得られた学習データを利用して、一度抽出したサンプルを再度抽出します。
アンサンブル学習とは複数のモデルの予測結果から、最終的な予測結果を決めます。(モデルを個別に学習させて複数の出力を平均)
アンサンブル学習にはスタッキング(学習機にランダムフォレストや勾配ブースティングなどを使う)もあります。
ブートストラップサンプリングとはデータセットから重複を許容してランダムに無作為に抽出したデータにします。

ブースティング

教師あり学習の一つで、一部のデータを繰り返し抽出して、そのデータを訂正しながら精度を高めるアルゴリズムです。

バギングよりも精度向上が期待できます。
AdaBoostや勾配ブースティングなどがあります。

教師なし学習

教師なし学習とは、正解であるデータを与えないで学習をさせて特徴をグループ化していく手法です。
主に自動運転や画像認識などに使われます。
教師なし学習ではデータにラベルや答えがなくても特徴を捉えて自動的に分類・要約することができます。
似ているデータをグループに分けることをクラスタリングといい、それには階層ありと階層なしがあります。
グループ(クラスタ)の数は人が決め、グループ分けするときにデータ間の距離を測りますが、正解が存在しないことも多いです。
教師なし学習のキーワードとしては以下があります。

t-SNE(t-distribution Stochastic Neighbor Embedding)

教師なし学習の一つで、高次元データを可視化するのに適した次元削減のアルゴリズムです。
高次元での距離分布が低次元の距離分布にも合致するような非線形型の変換します。

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

教師なし学習の一つで、文書からトピック(話題)を推定するアルゴリズムです。
トピックを推定するアルゴリズムには、潜在的意味解析と呼ばれるLSI (Latent Semantic Index)もあります。

レコメンデーション

教師なし学習の一つです。
レコメンデーションには以下があります。

強化学習

強化学習とは、教師あり・教師なし学習とは異なり、エージェントが環境(状態)に応じて行動(方策)して報酬(価値)を最大化することを目的とした手法です。
環境について学習できていないと未知の行動を起こす必要がありますが、エージェントが得れる報酬は少ないです。
また、エージェントが得れる報酬が高い行動を行うと報酬は多いのですが新たな行動(良い行動)が見つけれず、この2つはトレードオフの関係があります。
学習させるためのデータの準備は少なくても大丈夫ですが、学習モデルを作成するため難易度が非常に高くなります。
主に掃除ロボットやゲームなどに使われます。
強化学習の手法は以下になります。

強化学習の関数と勾配法を以下に記載します。

強化学習の手法には、既に知られている環境を前提に強化学習を行うモデルベース強化学習と未知の環境を前提に強化学習を行うモデルフリー強化学習があります
。 モデルフリーの強化学習では、多くのサンプルが必要になりますので世界モデルとしては教師なし学習で予めモデルを構築させて、その構築したモデルを使用します。
将来期待できる総報酬を問題(総報酬が無限になるなど)なく見積もるために、即時報酬を乗算させる値として割引率(ハイパーパラメータ)を使い、割引率は0から1の間の値を使用します。
強化学習のキーワードとしては以下があります。

学習モデルの学習と検証

学習モデルの学習と検証について記載します。
学習モデルの目的は、汎化性能が高い学習モデルを作成することです。
これは、学習モデルを学習するために使用した学習データに強いモデルにさせるのではなく、まだ使用したことのない未知のデータに対応できることを意味しています。
そのため、作成した学習モデルが出力するものが、未知のデータに対して正しく評価・予測が行えているかを確認する必要があります。
未知のデータを使用して学習モデルとの誤差を調べる関数として誤差関数があります。
学習モデルを作成するために自身が集めた学習データを訓練データ・検証データ・テストデータに分けます。
それぞれの学習データは以下にあります。

学習データの訓練データ・検証データを使用して、学習モデルを訓練させて重みやバイアスなどのパラメータを調整して学習モデルを作成します。
学習モデルの学習と検証の手法として以下があります。

学習と検証時にパラメータを最適化する手法に勾配降下法(最急降下法)や確率的勾配降下法(SGD)があり、勾配降下法(最急降下法)では目的関数が最小になるパラメータを見つけます。
確率的勾配降下法(SGD)以外の手法を使用する場合には目的関数の勾配の値が次元ごとに大きく異なることがあります。
学習モデルが訓練データで訓練した内容を再現力できることを表現力といいます。
学習データの数が増えれば、不要な変数を削除しても表現力を抑止できます。
表現力が大きくなると一般的にバイアスは小さくなり、バリアンスは大きくなります。
バリアンスは予測値がどれだけ散らばっているかを示す度合いでバイアスは実際値と予測値との誤差の平均のことでノイズは観測したときの誤差になります。
バリアンスとバイアスは、単純なモデルではバリアンスが低くバイアスは高く、複雑なモデルでバリアンスが高くバイアスが低くなるトレードオフの関係があります。
回帰の学習モデルでは誤差関数を二乗誤差とした場合に汎化誤差は、バリアンス、バイアス、ノイズの3つの要素に分解できます。

学習モデルの評価

学習モデルを作成して訓練を実施したら、テストデータを利用して評価を行います。
訓練誤差とは訓練に用いたデータに対する誤差で、汎化誤差とは訓練に用いていない未知のデータに対する期待値の誤差です。
訓練データに対する誤差は少ないがテストデータによる誤差が大きいことを過剰適合といい、訓練データとテストデータによる誤差が大きいことを過少適合といいます。
訓練データに適合しすぎず、未知のデータに対応が行える汎用的な学習モデルが良いモデルです。
過剰適合では、学習モデルが過学習をしている可能性が高く途中で学習を打ち切ったり、正則化項を導入して対応します。
過学習とは訓練データに適合しずぎてしまい未知のデータでは正しく評価・予測ができない状態のことです。
過小適合では、学習モデルが訓練が行えていない未学習の可能性が高く、訓練データを増やして対応します。
未学習とは訓練誤差も汎化誤差も小さくならないため、全体の汎化性能が低い状態です。

学習モデルが複雑になるとなぜそのようになったかを説明するのが難しくなります。
学習モデルを説明する手法としてLIME・SHAPがあり、CNNやアンサンブルツリーなどの機械学習モデルに適用できます。
ある事柄を説明するのに必要以上に多くの仮定をすべきではないオッカムの剃刀がラッソなどのスパースモデリング手法があります。

ハイパーパラメータ探索

学習モデルの最初に人が設定するパラメータなどのことをハイパーパラメータといいます。
機械学習もこのハイパーパラメータに依存して、適切に設定する必要があります。
ハイパーパラメータを自動で探索する手法にはランダムサーチ、グリッドサーチ、ベイズ最適化があります 。
以下に詳細を記載します。