今天我想要重新對線性迴歸和邏輯迴歸做一個總結回顧,相比於簡單的調用接口,我希望自己可以更深入的理解本質。只有對算法有了好的理解,再加上數據才能做有意義的事情:
線性迴歸
什麼叫做線性迴歸?就是滿足線性關係的迴歸問題。所謂最難回答的就是定義問題,如果預測結果是連續性數據,那麼就是線性迴歸問題;如果是離散數據,那麼就是分類問題。更加詳細的定義請移步到吳恩達老師的coursera課程。
言歸正傳。
邏輯迴歸
邏輯迴歸,雖然叫做迴歸,但它其實是解決分類問題的算法。之所以叫做邏輯迴歸,是因爲它起源於線性迴歸算法。最大的特點就是它使用一個叫做“激勵函數(Activation function)”的東西,可以將原來的輸出結果做一個處理,使之更加接近於“非0即1”的狀態,即起到了二分類的作用。
公式如下:
這裏的x在實際操作中是上面提到的ax+b
這個是sigmoid函數的python實現:
def sigmoid(x):
a = []
for item in x:
a.append(1/(1+math.exp(-item)))
return a
接下來再說一下softmax函數,它算是sigmoid函數的一個推廣:
(因爲在softmax層會有num=類別數個神經元存在,第i個神經元計算出來的那個數字再和總共的數字之和做一個除法就可以知道這個神經元的“佔比大小”,進而得到是否要被分到這個類裏面。)
因爲sigmoid可以被寫成:
理解起來很簡單,原來計算的時候是計算指定x最後被分爲1的“概率”大小;新的是被分爲某一類的“概率”大小。但這裏的概率不是我們通常意義上的概率,是一個可能性度量。