Logistic Regression|8月更文挑戰

本文簡單介紹一下Logistic Regression的定義和原理。對於(Linear Regression)線性迴歸模型,輸入 x x ,網絡參數爲 w w b b ,輸出值爲 y y ,是個連續值。可是分類問題最終的輸出值應該爲離散的,那麼如何轉化爲分類問題呢?html

能夠考慮增長一個 σ \sigma 函數,變爲 y = σ ( w x + b ) y=\sigma(wx+b) ,這個 σ \sigma 也叫sigmoid函數或logistic函數,這樣輸出的值就能壓縮到 [ 0 , 1 ] [0,1] ,咱們能夠將這個值等效爲probabilitymarkdown

對於Regression問題,其目標是使pred(預測值)近似於輸出的 y y 值,即最小化 dist ( p r e d , y ) \text{dist}(pred,y) ;對於Classification問題,其目標是最大化accuracy,或者說最小化 dist ( p θ ( y x ) , p r ( y x ) ) \text{dist}(p_\theta(y|x), p_r(y|x)) 。二者最主要的區別是traning的目標不一樣,這裏可能會有疑問,why not maximize accuracy?網絡

由於通常acc的計算公式爲: 預測對的數量 總的數量 \frac{預測對的數量}{總的數量} app

a c c = I ( p r e d = y i ) len ( Y ) acc = \frac{\sum I(pred = y_i)}{\text{len}(Y)}

對於一個二分類問題,咱們假設閾值爲0.5,即 p r e d > 0.5 pred>0.5 ,認爲是第一類, p r e d < 0.5 pred<0.5 ,咱們認爲是第二類。一開始確定會有分類不正確的,假設真實類別爲1,預測值爲0.4,則網絡將其歸爲0這一類,在網絡更新後,預測值變大爲0.45,雖然更加靠近1,更加接近真實值,可是因爲沒有發生本質的變化,即仍然沒有大於0.5函數

再比方說,假如一開始一個預測值爲0.499,真實類別爲1,網絡更新後,預測值變爲0.501,預測正確了,可是計算梯度時,可能會致使梯度很是很是大,甚至不連續spa

上面兩個問題總結起來就是:code

  • gradient = 0 if accuracy unchanged but weights changed
  • gradient not continuous since the number of correct is not continuous

最後一個問題,why call logistic regression?logistic好理解,由於使用了 σ \sigma 函數,可是爲何叫regression,而不是classification呢?這個問題的解答網上有不少爭議,其中一個解釋是說,由於一開始作classification的時候,用的就是MSE,因此叫作regression(解決regression問題經常使用的loss就是MSE),可是如今解決classification問題用的是Cross Entropy,只不過叫法以及被你們習慣了,因此沒改orm

相關文章
相關標籤/搜索