Loading [MathJax]/jax/output/HTML-CSS/jax.js

2017年9月18日 星期一

Week3

Classification


  • Binary classification problem
    • y只考慮是0或1,即y∈{0,1}
      • 0又稱為negative class,可用"-"表示
      • 1又稱為positive class,可用"+"表示

Hypothesis Representation

  • hθ(x)的形式改成如下形式
0hθ(x)1

  • 新的形式稱為Sigmoid FunctionLogistic Function
hθ(x)=g(θTx)z=θTxg(z)=11+ez


  • 下圖是Sigmoid Function的樣子



  • hθ(x)代表的是output為1的機率
    • 假設hθ(x)=0.7,代表有70%的機率output會是1
    • 而output是0的機率就是1-70%=30%

Decision Boundary

  • 為了要把結果做0跟1的分類,可以把hypothesis function的output轉譯成如下:
hθ(x)0.5y=1hθ(x)<0.5y=0
  • 從前面Sigmoid Function的圖可知當z > 0時,g(z) >= 0.5
  • 若z為θTX則代表:
  • hθ(x)=g(θTx)0.5whenθTx0
  • 所以
  • θTx0y=1θTx<0y=0
  • Decision Boundary就是用來區分y=0跟y=1區域的那條線
    • 它不一定要直線,可以是圓形線或任何形狀

Cost Function

  • 若Logistic Function使用Linear Regression的Cost Function,則會是波浪的形狀有很多Local Optima
  • Logistic Regression的Cost Function如下
  • J(θ)=1mmi=1Cost(hθ(x(i)),y(i))Cost(hθ(x),y)=log(hθ(x))if y = 1Cost(hθ(x),y)=log(1hθ(x))if y = 0
  • 當y=1時會得到J(θ)hθ(x)的圖


  • 當y=0時會得到J(θ)hθ(x)的圖

  • 整理如下:
  • Cost(hθ(x),y)=0 if hθ(x)=yCost(hθ(x),y) if y=0andhθ(x)1Cost(hθ(x),y) if y=1andhθ(x)0

Simplified Cost Function and Gradient Descent

  • 我們可以把上面的Cost()整合成一條式子
    • Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))
  • 整體的Cost Function如下表示:
    • J(θ)=1mmi=1[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]
  • 用vector的方式實作如下:
  • h=g(Xθ)J(θ)=1m(yTlog(h)(1y)Tlog(1h))

Gradient Descent

  • Gradient Descent的表示式跟Linear Regression一樣
  • Repeat{θj:=θjαmmi=1(hθ(x(i))y(i))x(i)j}
  • 用vector的方式實作如下:
  • θ:=θαmXT(g(Xθ)y)

Advanced Optimization

  • 除了Gradient Descent之外有其他更好的方法
    • Conjugate gradient
    • BFGS
    • L-BFGS
  • 但是建議不要自己實做這些複雜的演算法,而是找已經最佳化過的Library
  • 我們需要提供一個Function去計算下面兩個結果
  • J(θ)θjJ(θ)
  • 首先寫一個單一Function回傳這兩個結果
function [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
  gradient = [...code to compute derivative of J(theta)...];
end


  • 接著用下面的function算出最佳解
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);


Multiclass Classification: One-vs-all

  • 當類別超過兩類時,定義 y = {0,1...n}
  • 把這個問題分成n+1個Binary Classification Problem,將最大的結果當成預測值
  • y{0,1...n}h(0)θ(x)=P(y=0|x;θ)h(1)θ(x)=P(y=1|x;θ)h(n)θ(x)=P(y=n|x;θ)prediction=maxi(h(i)θ(x))
   

Regularization

  • 為了避免overfitting,可以在cost function中加上對weight的懲罰,所以cost function改寫如下:
    • minθ 12m mi=1(hθ(x(i))y(i))2+λ nj=1θ2j
  • Regularized Linear Regression
    • Gradient Descent
      • 演算法改寫如下,要注意的是並沒有對θ0做懲罰
      • Repeat {    θ0:=θ0α 1m mi=1(hθ(x(i))y(i))x(i)0    θj:=θjα [(1m mi=1(hθ(x(i))y(i))x(i)j)+λmθj]          j{1,2...n}}
      • 在經過整理後如下:
        • θj:=θj(1αλm)α1mmi=1(hθ(x(i))y(i))x(i)j
        • 由於1αλm 永遠會小於1,而後面的項目跟沒做regularization前一樣,所以weight會減小的範圍就決定在1αλm
    • Normal Equation
      • 式子改寫如下:
      • θ=(XTX+λL)1XTywhere  L=[0111]
      • 前面提過若m<n則XTX是不可逆的,但在改寫後XTX + λ⋅L是可逆的。
  • Regularized Logistic Regression
    • 和Regularized Linear Regression的方法一樣

沒有留言:

張貼留言