機械学習のアルゴリズム

ここでは、代表的な機械学習のアルゴリズムについて、紹介していきます。
機械学習には教師あり学習、教師なし学習、強化学習と3つの手法があり、それぞれで用いるアルゴリズムが存在します。
その中でも、現在主流になっているのは
この2つです。
その他にも、代表的なアルゴリズムとして以下があげられ、モデルが軽量で解釈しやすいことから、ケースによって使い分けられています。
- k近傍法
- 決定木
- ランダムフォレスト
- XGBoost
- サポートベクトルマシン
ニューラルネットワーク
ニューラルネットワークとは、人間の脳神経系であるニューロンを参考にモデル化したアルゴリズムです。このモデルには、教師あり学習と教師なしの学習の2つがあります。
人間の脳はニューロンを相互接続して電気信号を交換したり、複雑な思考を可能にしています。この時、何でもかんでも情報を流すわけではなく、ある閾値以上の電気信号を次のニューロンに渡しています。
こうした情報処理の方法をコンピューターで応用できないかと考え、ニューロンの構造を手本にしたパーセプトロンという単純なモデルを重ね合わせて以下のようなニューラルネットワークとしました。

このように、入力層、隠れ層、出力層の3種類から構成されるモデルをニューラルネットワークといいます。
もちろん人間の脳のように複雑なものは作れないため、一方にしか信号を送れないなどの制限はありますが、それでもニューラルネットワークの登場により技術は各段に向上していったのです。
ディープラーニング

ディープラーニングとは、前述したニューラルネットワークの隠れ層を多層に重ねることで学習能力をさらに高めた機械学習の手法です。
中間層を数十〜数百層重ねたり、結合方法を工夫することで、より処理性能や複雑な問題に対処できるようになりました。
ディープニューラルネットワークは、ジェフリー・ヒントン教授とカナダのトロント大学が考案しました。2012年の「ILSVRC(Imagenet Large Scale Visual Recognition Challenge)」という画像認識の精度を競うコンペでは、それまで26-28%台の誤差率で競われていたのをディープラーニングを用いることで15.3%という驚異的な精度を出したことで瞬く間に世界中に広まりました。
4層以上にしても精度が上がらず煮詰まり違う方法を試す科学者が多い中、この朗報はAIの技術の革命ともいえるものでした。
ディープラーニングは、あくまで機械学習の中の1つに過ぎませんが、今やAIの技術向上のためには不可欠なものになっています。
ディープラーニングについては以下の記事もご参照下さい。
ディープラーニングと機械学習の違いについてもわかりやすく説明しています。
[関連記事]
>> ディープラーニング(深層学習)とは?機械学習との違いなど詳しく解説
k近傍法
k近傍法は、ほぼあらゆる機械学習アルゴリズムの中でも最も単純と言われているシンプルなアルゴリズムです。
考え方としては、ある点をクラス分類する時にその周りの点のクラスの多数決で判断しようというものです。この時、一番近くのk個が所属するクラスで多数決を取ります。

上の例の場合、真ん中の星が所属するグループは、k=3の場合は青、k=5の場合は赤といった具合です。
この動画は、k近傍法が具体的にどのように動いているのかをアニメーションにしたものです。学習を繰り返すにつれてデータが4つに分類されていく様子がわかると思います。
決定木
決定木は、木構造を用いた予測モデルです。木構造とは、木が幹から枝、葉と順々に枝分かれしていくような構造です。
木構造を使って、特徴量ごとに次の枝へ振り分けていくことで上手く分類できるモデルを作成します。フローチャートを想像していただけると分かりやすいかと思います。
例えば、動物を鷹、ペンギン、イルカ、熊に分けようと思ったら、以下のような決定木で上手く分けることができます。

このように決定木は、解釈しやすいのが特徴ですが、過学習(訓練データに過剰適合してしまい、応用が効かない状態)に陥りやすいなどの欠点もあります。
ランダムフォレスト

ランダムフォレストは、先程紹介した決定木をランダムに複数作成し、その多数決や平均を取ることで精度を向上させたモデルであるアルゴリズムです。
決定木を複数作成する方法としては、学習データから何度も復元抽出することで、少しずつ異なる決定木を作る方法で、バギングと呼ばれています。
昔から「三人寄れば文殊の知恵」というように、一つ一つは精度の低い決定木でも、多数決をとることで精度の高いモデルを作ろうという試みです。
ただし、多数決を取ることで、決定木の過剰適合しやすいという問題点を解決することができますが、解釈性は失われてしまいます。
XGBoost

XGBoostもランダムフォレストと同様に、決定木を用いたモデルです。ただし、XGBoostでは、前の決定木の誤差を次の決定木に引き継いで新しい決定木を作ることを繰り返すことで段々と精度の高い決定木を作っていきます。
このようなサンプリング方法をブースティングといいます。このモデルは、特徴量エンジニアリングをしなくても精度の高い結果をだすことから、機械学習のコンペとして有名なKaggleで多用されています。
サポートベクトルマシン

サポートベクトルマシンは、クラス分類において、クラスを最も上手く分割する超平面を引くことで識別します。
ここでいう超平面とは、高次元における平面のようなものをいいます。下の図のように、赤と青の二種類の星を上手く分けたいと考えた時に、サポートベクトルと呼ばれる点からの距離(マージン)を最も大きくできる超平面を引くことを考えます。
なお、直線で分割(線形分離)できない場合ももちろんあるため、ある程度の許容を許したり、非線形に応用できるカーネルトリックと呼ばれる手法が用いられています。
この動画は、サポートベクトルマシンの原理をアニメーションにして解説したものです。データの間に線が引かれ、データが分類されていく様子がわかると思います。
このモデルは識別精度が高く、ディープラーニング登場前までは特に多用されていました。
ここで機械学習のアルゴリズムをまとめると以下のようになります。
▼機械学習のアルゴリズム

ディープラーニングは、機械学習・それもニューラルネットワークの一部に過ぎませんが、近年の台頭で「AI・機械学習=ニューラルネットワーク」というふうに扱われているのも事実です。
機械学習で一括りにされがちですが、手法や種類によって様々な専門用語が出てきますので、最初は混乱してしまうかもしれません。
しかし、このアルゴリズムの違いを知っておくことで、より機械学習についての理解が深まりますのでしっかり確認しておきましょう。