たいさブログ

taisa's engineer blog

機械学習

機械学習におけるアルゴリズム

投稿日:

Pocket

前回のパーセプトロンに引き続きこの勉強会用に仕事ではじめる機械学習を元に機械学習におけるアルゴリズムをまとめる。

AIPy (アイパイ) ハンズオン #3 (2018/07/19 19:30〜)

この勉強会について しばらくは機械学習に特化した勉強会になります。仕事で機械学習などを活用したいけど何からはじめればよいか分からないような方向けのハンズオン形式の勉強会です。ハ ンズオン形式といいつつまず初めは力を養う為に 仕事ではじめる機械学習 の輪読会からはじめます。この会はみんなで集まって意見を交換したり協力したりしながら一気 …

※不適切な内容である場合はすぐに取り下げます。

そもそもどのアルゴリズムを選ぶべきか

機械学習にはどんな種類があるか

  • 分類(Classification):正解となる離散的なカテゴリ(クラス)と入力データの組み合わせで学習し、未知のデータからクラスを予測する
  • 回帰:正解となる数値と入力データの組み合わせで学習し、未知のデータから連続値を予測する
  • クラスタリング:データを何かしらの基準でグルーピングする
  • 次元削減:高次元のデータを可視化や計算量削減などのために低次元マッピングする
  • その他
    • 推薦:ユーザーが好みそうなアイテムや、閲覧しているアイテムに類似しているアイテムを提示する
    • 異常検知:不審なアクセスなど、普段とは違う挙動を検知する
    • 頻出パターンマイニング:データ中に高頻度に出現するパターンを抽出する
    • 強化学習:囲碁や将棋のような局所的には正解が不明確な環境で、とるべき行動の方針を学習する

アルゴリズムを選定するには以下のフローチャートを参考にするとよい。startからはじめて条件によって分類、回帰、クラスタリング、次元削減のどれを選べばよいかが分かる。

アルゴリズムを選定する、scikit-learnのフローチャート
※その他(推薦、異常検知、頻出パターンマイニング、強化学習)は覗く

参考:scikit-learn algorithm cheat-sheet

分類

  • 教師あり学習の1つ
  • 予測対象はカテゴリなどの離散的な値を予測する
  • メールがスパムかどうかや画像が映っているのがどういった物体かなど
  • クラスの数が2の場合を二値分類、3以上の場合を多値分類という

分類については以下のようなアルゴリズムが存在する

  • パーセプトロン
  • ロジスティック回帰
  • SVM (サポートベクターマシン)
  • ニューラルネットワーク
  • k-NN (k近傍方、k-Nearest Neighbor Method)
  • 決定木、ランダムフォレスト、GBDT (Gradient Boosted Decision Tree)
  • ナイーブベイズ
  • HMM (Hidden Markov Model)

本記事では太字の分類アルゴリズムと回帰(少し)について触れる

ロジスティック回帰

ロジスティック回帰の特徴

  • 出力とは別に、その出力のクラスに所属する確率値が出せる
  • 学習はオンライン学習でもバッチ学習でも可能
  • 予測性能はまずまず、学習速度は早い
  • 過学習を防ぐ為の正則化項が加わっている

特に出力の確率値が出せるという特徴のため、広告のクリック予測にもよく使われている。

実践系の参考記事

ロジスティック回帰の決定境界

  • 決定境界は直線

ロジスティック回帰の仕組み

  • 活性化関数シグモイド関数
  • 損失関数交差エントロピー誤差関数

シグモイド関数

  • 入力が0の時は0.5をとる
  • 値が小さくなるほど0に近づく
  • 値が大きくなる程に1に近づく

シグモイド関数を記述するコード

出力yは y= sigmoid(np.dot(w, x)) と表すことが可能で、2値分類時の交差エントロピー誤差関数は、N個のデータに対してyを出力、tを正解ラベル(正しい場合は1、間違っている場合は0とする)、logを底がeの自然対数とすると、次のような書式で表すことができる。

2値分類の時の交差エントロピー誤差関数をコードで書くと以下のようになる

正則化

学習時にペナルティを与えることで境界をなめらかにする(過学習を防ぐ)

SVM (Support Vector Machine)

  • パーセプトロンを拡張したアルゴリズムといわれる

SVMの特徴

  • マージン最大化をすることで、なめらかな超平面を学習できる
  • カーネルと呼ばれる方法を使い、非線形なデータを分離できる
  • 線形カーネルなら次元数の多い疎なデータも学習可能
  • バッチ学習でもオンライン学習でも可能

SVMの決定境界

  • カーネルと呼ばれる方法を使うことで、線形分離可能な問題も非線形分離可能な問題にも適用可能

SVMの仕組み

  • 損失関数はパーセプトロンと同じヒンジ損失
    • 厳密にはパーセプトロンとは横軸の交差の場所が違う

SVMの2つの大きな特徴

マージン最大化

マージンを最大化することで、正則化項と同じように過学習を抑えることができる。マージンの最大化とはマージンが最大になるような超平面の引き方を決めることで既知のデータに対してあそびがうまれる。すなわち、過学習を抑えることができる。

カーネル

線形分離不可能なデータでも、カーネルと呼ばれる関数を使って特徴量を擬似的に追加してデータをより高次元のベクトルにすることで、線形分離可能にする方法

カーネルを使った決定境界の例

ニューラルネットワーク

多層パーセプトロンとお呼ばれ、パーセプトロンを1つのノードとして階層上に重ねたもののこと

ニューラルネットワークの特徴

  • 非線形なデータを分離できる
  • 学習に時間がかかる
  • パラメータの数が多いので、過学習しやすい
  • 重みの初期値に依存して、局所最適解にはまりやすい

ニューラルネットワークの決定境界

  • 直線でない決定境界も取ることが可能

ニューラルネットワークの仕組み

  • softmax関数
  • 活性化関数
    • 近年ではReLU(Rectified Linear Unit)がよく使われている

k-NN

未知の1個のデータが入力された時、そのデータのクラスを近くのk個の既知データの所属するクラスの多数決で決めるという、最近傍探索アルゴリズムの1つ

k-NNの特徴

  • データを1つずつ逐次学習する
  • 基本的に全データとの距離計算をする必要があるため、予測計算に時間がかかる
  • kの数によるがそこそこの予測性能

k-NNの決定境界

  • 直線でない決定境界も取ることが可能

k-NNの仕組み

多く用いられるのは2つの点を結んだ直線の長さであるユークリッド距離だが、あるクラスのデータ郡の平均からの近さでなく、データの散らばる方向をこうりょすることができるマハラノビス距離と呼ばれる距離が用いられることもある
マハラノビス距離

決定木、ランダムフォレスト、GBDT

ツリー型アルゴリズムの代表である

決定木の特徴

  • 学習したモデルを人間が見て解釈しやすい
  • 入力データの正則化がいらない
  • カテゴリ変数やその欠損値(計測漏れなどで値が存在しない)などを入力しても内部で処理してくれる
  • 特定の条件下では過学習しやすい傾向にある
  • 非線形分離可能だが、線形分離可能な問題は不得意
  • クラスごとのデータ数に偏りのあるデータは不得意
  • データの小さな変化に対して結果が大きく変わりやすい
  • 予測性能はまずまず
  • バッチ学習でしか学習できない

決定木の決定境界

決定境界は直線にはならない

決定木の仕組み

教師データから条件式を作り、予測の際には木の根から順番に条件分岐をたどっていき、葉に到達すると予測結果を返すアルゴリズム。不純度と呼ばれる基準を使って、できるかぎり同じクラスがまとまるように条件分岐を学習していく。具体的には情報ゲインジニ係数などの基準を不純度として使い、不純度がさがるようにデータを分割する

線形回帰

教師あり学習の1つで、ある入力データから連続値を予測する。

回帰について各アルゴリズムのおおよその傾向

  • 線形回帰、多項式回帰
  • Lasso回帰、Ridge回帰、Elastic Net
  • 回帰木
  • SVR

それぞれの概要

  • 線形回帰はデータを直線で、多項式回帰は曲線で近似したもの
  • Ridge回帰は学習した重みの2乗を正則化項に、Lasso回帰は学習した重みの絶対値を正則化項に、Elastic Netはその両方を線形回帰に正則化項を追加したもの
  • Lasso回帰やElastic Netは、L1正則化によりいくつかの重みが0になり、特徴を絞り込む性質がある
  • 回帰木は決定木ベースの回帰で、非線形なデータに対してフィッティングできる
  • SVRはSVMベースの回帰で、非線形なデータに対してもフィッティングできる

用語(あとで更新)

  • 活性化関数
    • ステップ関数
    • シグモイド関数
  • 損失関数
    • 交差エントロピー誤差関数

参考記事

Pocket

-機械学習
-,

執筆者:

関連記事

「AIPyハンズオン#1」開催レポート

第1回AIPyハンズオン勉強会を開催したのでその開催レポート AIPy (アイパイ) ハンズオン #1 (2018/04/12 19:30〜) この勉強会について 仕事で機械学習などを活用したいけど何 …

「Chainerで学習した対話用のボットSlackで使用Twitterから学習データを取得してファインチューニング」を試してみる

本記事は以下の勉強会用に作成した記事で現時点では最後まで動作確認できていない箇所があるのでご注意ください。問題解決したら更新します。 AIPy (アイパイ) ハンズオン #4 (2018/09/20 …

「仕事ではじめる機械学習」の「映画の推薦システムをつくる」を実践してみる

「仕事ではじめる機械学習」の映画の推薦システムをつくるを実践してみる 本書のソースコートは以下にあがっている。本記事はchap07が対象。 https://github.com/oreilly-jap …

パーセプトロン – 機械学習におけるアルゴリズム

機械学習におけるアルゴリズムの一つであるパーセプトロンについて、仕事ではじめる機械学習を元に学習していく。 そもそもどのアルゴリズムを選ぶべきか 機械学習にはどんな種類があるか 分類(Classifi …