ML實踐——邏輯迴歸logistic regression

原理

從圖中可以看出與perceptron的異同:

logistic regression model:
迴歸模型

perceptron:
這裏寫圖片描述

簡單地說把Sigmoid function用作activation function。

ϕ(z)=11+ez
ϕ(z)=z

Advantages:
1. Sigmoid function的收斂性更好
2. 邏輯迴歸是用通過計算一件事情發生的概率來預測事件是否發生

cost function

具體公式推導參見:鏈接
爲什麼cost function不再用平方差,而是用對數損失函數?這個問題我糾結了好久,最終在這裏
看到一句話

“而在已知模型和一定樣本的情況下,估計模型的參數,在統計學中常用的是極大似然估計方法”

所以說,選擇的cost function與模型是有一定關係的。我們的log-likelihood function是極大似然函數的對數,我們要取對數?
1. 好求導
2. 防止numerical underflow發生(就是超出編譯器裏數值表示範圍)

log-likelihood function
l(w)=ni=1log(ϕ(z(i)))+(1y(i))log(1ϕ(z(i)))

我們的目標是,爲了Maximum 對數損失函數,找到最優的ϕ ,也就是去找最優的weight

然而我們實際常用的是cost function是:
Min(-對數損失函數)+ L2regularation
其中L2 是爲了防止過擬合:
J(w)=ni=1log(ϕ(z(i)))+(1y(i))(log(1ϕ(z(i))))+γ2||w||2

測試

>>> from sklearn.linear_model import LogisticRegression
>>> lr = LogisticRegression(C=1000.0, random_state=0)
>>> lr.fit(X_train_std, y_train)
>>> plot_decision_regions(X_combined_std,
... y_combined, classifier=lr,
... test_idx=range(105,150))
>>> plt.xlabel('petal length [standardized]')
>>> plt.ylabel('petal width [standardized]')
>>> plt.legend(loc='upper left')
>>> plt.show()

這裏寫圖片描述

其中

>>> lr = LogisticRegression(C=1000.0, random_state=0)

裏面的 C=1γ


線性迴歸、邏輯迴歸、一般迴歸
http://blog.csdn.net/viewcode/article/details/8794401

  1. 線性迴歸:以 高斯分佈 爲誤差分析模型

  2. 邏輯迴歸:以 伯努力分佈 爲誤差分析模型
    邏輯迴歸的模型 是一個非線性模型,sigmoid函數,又稱邏輯迴歸函數。但是它本質上又是一個線性迴歸模型,因爲除去sigmoid映射函數關係,其他的步驟,算法都是線性迴歸的。可以說,邏輯迴歸,都是以線性迴歸爲理論支持的。
    只不過,線性模型,無法做到sigmoid的非線性形式,sigmoid可以輕鬆處理0/1分類問題。

  3. 一般迴歸:以 指數分佈 爲誤差分析模型
    高斯分佈、伯努力分佈 屬於 指數分佈。softmax迴歸就是 一般線性迴歸的一個例子。有監督學習迴歸,針對多類問題(邏輯迴歸,解決的是二類劃分問題),如數字字符的分類問題,0-9,10個數字,y值有10個可能性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章