ささきのブログ

日記、技術メモ、勉強記録など。

第3週:ロジスティック回帰【Coursera Machine Learningコース】

テーマ

分類と表現 (Classification and Representation)

分類 (Classification)

分類問題の例:
f:id:sasakino:20200823135410p:plain:w300

目的変数yが0か1かで判別する
f:id:sasakino:20200823135435p:plain:w400

線形回帰ではデータをうまく2つに分けることができない

また、分類問題では y = 0 or 1 であるべきなのに、
線形回帰の仮説では h _ θ(x) > 1 or  h _ θ(x) < 0 も有り得てしまう

そのため線形回帰は分類問題に適さない

仮説表現 (Hypothesis Representation)

どのような関数を仮説の表現に用いるか

分類問題では 0 < h _ θ(x) ≦ 1 となるような仮説が欲しい

線形回帰の仮説の形は h _ θ(x) = θ ^ {T}x だった
ロジスティクス回帰では、h _ θ(x) = g(θ ^ {T}x) のような形になる

ここで gg(z) = \frac{1}{1 + e ^{-z}}と定義される
この関数はシグモイド関数、またはロジスティクス関数と呼ばれるもの

ロジスティクス関数は以下の図に示すように、 0 ≦ g(z) ≦ 1 になる性質をもつ
そのため、分類問題に求められる仮説の条件を満たす

f:id:sasakino:20200823152032p:plain:w300

この g(z)θ ^ {T}x を代入すると、
\displaystyle{h _ θ(x) = \frac{1}{1 + e ^{-θ ^ {T}x}}} となる
これがロジスティクス回帰の仮説

仮説の出力の解釈について

ロジスティクス回帰の仮説h _ θ(x) の出力は、
入力 x に対する結果 y が 1 になる確率を表している

例えばh _ θ(x) = 0.7 だったら、その入力 x は70%の確率で 1 に分類されるということ

これを形式化すると次の式のように書ける
h _ θ(x) = P(y = 1 | x ; θ)
(θ でパラメータ化された x が与えられたときに y = 1 である確率、と読む)

決定境界 (Decision Boundary)

決定境界と呼ばれるものを知ることでロジスティクス回帰が何を計算しているかを理解する

h _ θ ≧ 0.5 のとき y = 1
h _ θ < 0.5 のとき y = 0
とすると、ロジスティクス回帰では z ≧ 0 のとき必ず y = 1 となる (逆も成り立つ)

f:id:sasakino:20200823155927p:plain:w250

つまり、θ^ {T}x ≧ 0 なら y = 1 , θ ^ {T}x < 0 なら y = 0 となる

ここで、下図のようなデータセットの分布があったとする
f:id:sasakino:20200824200116p:plain:w250

仮説として次のような式を用いる
h _ θ(x) = g(θ _ 0 + θ _ 1x _ 1 + θ _ 2x_2)

このとき、最適なθの値が θ = \begin{bmatrix}{-3  \ 1 \ 1}\end{bmatrix} ^ T だったとする

ロジスティクス回帰では θ ^ {T}{x} ≧ 0 なら y = 1 なので、
この場合は-3 + x _ 1 + x _ 2 ≧ 0
x _ 1 + x _ 2 ≧ 3 のときy = 1 となる

x _ 1 + x _ 2 = 3 という直線を図に加えると以下のようになる
f:id:sasakino:20200824204606p:plain:w250

x _ 1 + x _ 2 ≧ 3 は直線の上の領域を表す
つまり y = 1となる領域
逆に、直線の下の領域は y = 0 の領域となる

このようにy = 1 の領域とy = 0の領域を分ける直線を決定境界と呼ぶ

なお、決定境界はデータセットの性質ではなく、仮説とパラメータの性質である

例としてデータセットの分布が以下の図のような場合、
h _ θ(x) = g(θ _ 0 + θ _ 1x _ 1 + θ _ 2x_2 + θ _ 3{x _ 1} ^ 2 + θ _ 4{x _ 2} ^ 2) のようにしておけば、
パラメータを適切に最適化することにより円の方程式を得ることができる
f:id:sasakino:20200824230528p:plain:w250

さらに高次の多項式では、より複雑な決定境界を得ることも可能
f:id:sasakino:20200824231915p:plain:w300
f:id:sasakino:20200824231901p:plain:w250

ロジスティック回帰モデル (Logistic Regression Model)

目的関数 (Cost Function)

今まで見てきたコスト関数を次のように変形する(1/2の場所を移動)
\displaystyle{J(θ) = \frac{1}{m}\sum _ {i=1} ^ {m}\frac{1}{2}(h _ θ(x ^ {(i)}) - y ^ {(i)}) ^ 2}

ここで、二乗誤差の項を次のようにおく
Cost(h _ θ(x ^ {(i)}), y ^ {(i)}) = \frac{1}{2}(h _ θ(x ^ {(i)}) - y ^ {(i)}) ^ 2

代入すると以下のようになる
\displaystyle{J(θ) = \frac{1}{m}\sum _ {i=1} ^ {m}Cost(h _ θ(x ^ {(i)}), y ^ {(i)})}

Cost() は文字通り、学習アルゴリズムが値を出力する際、
予測が h _ θ(x) で実際のラベルが y だった場合に発生するコスト(費用)であると解釈する

線形回帰の場合は二乗誤差をコストとして用いることができたが、
ロジスティクス回帰の場合、二乗誤差を使うと目的関数は下図のように非凸関数になってしまい、
勾配降下法で最適解を求めることが困難になってしまう(勾配降下法は凸関数の場合に効果を発揮する)
f:id:sasakino:20200825230832p:plain:w250

そこで、ロジスティクス回帰では次のようなコスト関数を用いる
f:id:sasakino:20200825233546p:plain:w350

それぞれの関数では h _ θ(x)0 ≦ h _ θ(x) ≦ 1 の範囲に収まるため、以下の図のようなプロットになる
f:id:sasakino:20200825233916p:plain:w250
f:id:sasakino:20200825234134p:plain:w250

y = 1 のときは h _ θ(x) が 0 に近くほど、
またy = 0 のときは h _ θ(x) が 1 に近くほど、
コストが無限大に近づいていることがわかる

簡素化された目的関数と勾配降下法 (Simplified Cost Function and Gradient Descent)

f:id:sasakino:20200825233546p:plain:w350

この式は、以下のように1行にまとめることができる
Cost(h _ θ(x ^ {(i)}), y ^ {(i)}) = -y ^ {(i)}\log{h _ θ(x ^ {(i)})} - (1 - y ^ {(i)})\log{(1 - h _ θ(x ^ {(i)})})

よって、ロジスティクス回帰の目的関数は以下のようになり、
パラメータ θ を最適化するにはこの J(θ) を最小化すればいい
\displaystyle{J(θ) = -\frac{1}{m}[\sum _ {i=1} ^ {m}y ^ {(i)}\log{h _ θ(x ^ {(i)})} + (1 - y ^ {(i)})\log{(1 - h _ θ(x ^ {(i)})})]}

J(θ) を最小化には勾配降下法を用いる
勾配降下法のアルゴリズムは以下のようなもの
\displaystyle{θ _ j := θ _ j - α\frac{∂}{∂θ _ j}J(θ)}

偏微分項を計算すると、線形回帰のときと同様の形になる
h _ θ(x ^ {(i)})ロジスティクス回帰のもの)
\displaystyle{θ _ j := θ _ j - α\sum _ {i=1} ^ {m}(h _ θ(x ^ {(i)}) - y ^ {(i)})x _ j ^ {(i)}}

高度な最適化 (Advanced Optimization)

勾配降下法ではJ(θ)J(θ)偏微分を計算するが、
この2つを用いることで、別の(より高度な)最適化アルゴリズムも利用できる

これらに共通する特徴として、以下がある - 学習率αを手動で求める必要がない - 多くの場合、勾配降下法より高速

ただし、勾配降下法と比べて複雑なため、理解しようとすると難しい
これらを使うときは自前で実装するのではなく、機械学習ライブラリを使うべき

最適化手法のOctaveによる実装方法解説あり
Ovtaveのインデックスは1オリジンなので注意

多クラス分類 (Multiclass Classification)

one-vs-all (one-vs-rest) 分類というアルゴリズム →多クラス分類をいくつかの2クラス分類に分割して考える

例:クラスA, B, Cという3クラスに分類する問題 → 以下の3種類の2クラス分類に分割する ・クラスAとそれ以外の2クラス分類 ・クラスBとそれ以外の2クラス分類 ・クラスCとそれ以外の2クラス分類

実際に推測を行うときは、入力に対して、上記で得られた各分類器でそれぞれ推測を行い、もっとも確率の高い分類器の結果を返す

Solving the Problem of Overfitting

The Problem of Overfitting

オーバーフィッティング(過学習)問題とは

学習モデルが、データセットにはよく適合するが、データの予測には適さない状態になってしまうこと

このような状態をハイバリアンスとも表現する

線形回帰の例(3枚目がオーバーフィッティング):
f:id:sasakino:20200829130251p:plain:w500

ロジスティック回帰の例(3枚目がオーバーフィッティング):
f:id:sasakino:20200829160601p:plain:w500

オーバーフィッティングが起きてしまったときの対応策

  • 特徴量の種類を減らす
    • 手動でどの特徴量を残すか選別する
    • モデル選別アルゴリズムを使う (後のコースで紹介)
  • 正則化
  • 特徴量の種類は維持しつつ、θを小さくすることで特徴量の影響を減らす

特徴量の種類を減らすデメリットとして、事前に重要な特徴量を知ることはできないため、重要な特徴量まで除外してしまう可能性があること

目的関数 (Cost Function)

パラメータθを小さく保つことで、よりシンプルな仮説となり、オーバーフィッティングしにくくなる

例えば下図のように、線形回帰の目的関数に正則化項を加えることで、θを小さく保つことができる→正則化
f:id:sasakino:20200830195235p:plain:w500

目的関数を最小化するには、正則化項が小さくなければならず、
正規化項を小さくするには、θを小さくしなけらばならない
→θを小さく保つことができる

ただし、正則化項のλがあまりに大きすぎると、各θはほぼゼロになる
すると、仮説が特徴量の影響をほぼ受けなくなってしまい、アンダーフィッティング状態に陥る
その場合、仮説はh _ {θ}(x) = θ _ 0の形に近づき、プロットは下図のようになる
f:id:sasakino:20200830200404p:plain:w250

正則化された線形回帰 (Regularized Linear Regression)

正則化を取り入れた目的関数を勾配降下法で最適化する際は、以下のようにθ _ 0の場合とそれ以外とで場合分けをする
後者は正則化項が含まれた目的関数を偏微分しているので式の形が一部変わっている
f:id:sasakino:20200830220718p:plain:w450

また、θ _ jに関わる項をひとつにまとめると以下のようになる
f:id:sasakino:20200830221720p:plain:w450

(1-α\frac{λ}{m}) は通常 1 よりやや小さい値になる
なぜなら、学習率 α は正の小さな値を設定し、m は大きな値をとるから
1 より少しだけ小さい数字を θ _ j に乗じるので、 θ _ j の値は少しだけ小さくなる

なので、正則化項のある目的関数の勾配降下法では、各イテレーション毎に θ _ jを少しだけ小さくし、あとは正則化項がない場合と同様のアップデートを施す

正規方程式の場合は、θ を求める式が以下のように変わる
f:id:sasakino:20200830223317p:plain:w400

正則化されたロジスティック回帰 (Regularized Ligistic Regression)

ロジスティック回帰に正則化を適用する場合も、だいたいは線形回帰の場合と同じ

目的関数は以下のようになる
f:id:sasakino:20200830224317p:plain:w400

勾配降下法は以下のようになる
f:id:sasakino:20200830224411p:plain:w400