inglow Blog

Tech Blog
エンジニアブログ

機械学習で知るべきアルゴリズム

2020.07.30

このエントリーをはてなブックマークに追加

こんにちは!今回も機械学習について必要な知識を紹介したいと思います!前回(下のブログ記事で)紹介した人の顔認知の機械学習のアルゴリズムはadaBoostと呼ばれるものですが、機械学習には様々なアルゴリズムが存在しているので、それらを紹介していきたいと思います。


今回紹介するアルゴリズムは下記の全部で10種類です。

  • 決定木
  • ランダムフォレスト
  • ロジスティック回帰
  • サポートベクターマシン(SVM)
  • ナイーブベイズ分類器
  • k近傍法
  • k平均法
  • アダブースト
  • ニューラルネットワーク
  • マルコフ連鎖

決定木

決定木は、条件分岐によってグループを分割して分類する手法です。その際にグループがなるべく同じような属性で構成されるように分割します。条件分岐を繰り返すことで、データはツリー状に次々に展開され、解くべき最小単位に分割されていきます。

リスクマネジメントなどの決定理論においてよく使われる手法で、意思決定の補助として作られます。

ランダムフォレスト

ランダムフォレストとは、分類や回帰に使える機械学習の手法です。決定木をたくさん作って多数決する(または平均を取る)ような手法です。ランダムフォレストは大量のデータを必要としますが、精度の高い予測/分類を行えるという特徴があります。ランダムフォレストは、バギング(bootstrap aggregatingの略です)を使って、データセットを3つのサブセットに分割し、サブセットからデータをランダムに選択して3つの決定木を作成することができます。最終出力は多数決(分類の場合)または平均値(回帰の場合)を決定します。

長所として、学習と評価が高速にできることと、決定木と完全に独立していて並列に処理可能なこと、説明変数の重要度(寄与度)を算出可能なことなどが挙げられます。

ロジスティック回帰

ロジスティック回帰は、ベルヌーイ分布に従う変数の統計的回帰モデルの一種です。予測対象の確率Pが0<P<1であれば、普通の線形モデルでは満たすことができません。 定義域が一定のレベル内にない場合、その範囲は指定された間隔を超えます。

ロジスティック回帰は一般に以下のような場面で実際に使われています。
・クレジットスコアリング
・マーケティングキャンペーンの成功率の測定
・特定の製品の収益予測
・特定の日に地震が起こるか否かの予測

サポートベクターマシーン(SVM)

サポートベクターマシンは、教師あり学習を用いるパターン認識モデルの一つで、線形入力素子を利用して2クラスのパターン識別器を構成する手法です。
SVMでは、2つのグループ間の最も距離の離れた箇所(最大マージン)を見つけ出し、その真ん中に識別の線を引きます。

適切に実装されたSVMが解決できる問題は、ディスプレイ広告、人間スプライスサイト認識、画像ベースの性別検知、大規模な画像分類などとされています。

ナイーブベイズ分類器

ナイーブベイズ分類器は特徴間に強い(ナイーブな)独立性を仮定した上でベイズの定理を使う、確率に基づいたアルゴリズムです。

ナイーブベイズは主にテキスト分類などに使われ、メールのスパム/非スパム判定、テキストの肯定的/否定的な感情チェックやWebに投稿された記事のタグ付けなどに活用されます。

k近傍法

k近傍法は、特徴空間における最も近い訓練例に基づいた分類の手法であり、パターン認識でよく使われます。k近傍法は、機械学習アルゴリズムの中でも簡単なアルゴリズムと言われております。理由は、インスタンスの分類を、その近傍のオブジェクト群の多数決で行うことで決定するからです。

1.既知のデータ(学習データ)を赤の三角形と青の四角形としてプロットしておく。
2.Kの数を決めておく。K=1とか。
3.未知のデータが得られたら、近い点から1つ取得する。
4.その1つのクラスの多数決で、属するクラスを推定。

Kの数次第で結果が変わるので注意してください。わかりやすいイメージは、Kの値がくくるグループの大きさを表していて、その中で多数決をとり、優勢なグループに分類されるというものです。

k平均法

k平均法は、クラスタリングと呼ばれる、データを性質の近い分類同士でグループ分けするためのアルゴリズムのひとつです。クラスタリングの最も簡単な手法の一つであり,教師なし学習です。ここではk平均法の原理を少し説明します。
ステップ1:クラスターの「核」となるk個のサンプルを選ぶ。
ステップ2:全てのサンプルとk個の「核」の距離を測る。
ステップ3:各サンプルを最も近い「核」と同じクラスターに分割する。(この時点で全てのサンプルがk種類に分けられた)
ステップ4:k個のクラスターの重心点を求め、それを新たな核とする。
ステップ5:重心点の位置が変化したら、ステップ2に戻る。(重心が変化しなくなるまで繰り返す)
ステップ6:重心が変化しなくなったので終了する。

アダブースト(adaBoost)

アダブーストはランダムよりも少し精度がいいような弱い識別機を組みわせて、強い識別機を作成しようとする機械学習モデルです。
作り方の流れは、まず、弱い識別機の適用させ、誤分類してしまったものの重みを増やし、そして、次にその重みがついたものを優先的にみて、分類する。ということを繰り返します。詳しくは、本記事、上部で紹介したブログ記事を参考にしてください。

ニューラルネットワーク

ニューラルネットワークとは、人間の脳神経系のニューロンを数理モデル化したものの組み合わせのことです。人工のニューラルネットワークは生物学的な脳とは異なり、データの伝達方法は事前に層、接続、方向について個別に定義され、それと異なる伝達はできません。一つの層のすべてのニューロンが次の層のニューロンに接続するような一連のニューロンの層で構成されています。

計算は次の順に行われます。入力層から開始し、そこから値を隠れ層に渡してから、隠れ層は出力層に値を送り最終出力となります。

マルコフ連鎖

マルコフ連鎖は、一連の確率変数 X1, X2, X3, … で、現在の状態が決まっていれば、過去および未来の状態は独立であるものです。
マルコフ連鎖の具体例として,以下のようなモデルを考えます(確率はかなり適当ですがマルコフ連鎖の理解には役立ちます)。
昨日以前の天気は翌日の天気に影響しない。
今日晴れ→翌日晴れる確率は 0.7,曇の確率は 0.3,雨の確率は 0
今日曇→翌日晴れる確率は 0.4,曇の確率は 0.4,雨の確率は 0.2
今日雨→翌日晴れる確率は 0.3,曇の確率は 0.3,雨の確率は 0.4

最後に

このようなアルゴリズムを理解していなくても、すでにパッケージ化されているものを利用するのであれば使うことはできますが、自分が使いたいように改良したり、うまく行かない時などに中身がわからないと困るので機械学習を用いたいと考えている人は使っているアルゴリズムについてはしっかりと理解したいですね!

Related Blog
関連記事

2020.08.06
[Django]初心者のためのDatabase
2020.08.05
Djangoのテンプレート機能を使ってページを作成する
2020.08.03
DjangoとjQueryで全選択と削除
2020.07.31
PythonでPDF編集をしてみよう
2020.07.29
関数について【Python入門】戻り値や引数についても解説