(整理自AndrewNG的課件,轉載請注明。整理者:華科小濤@http://www.cnblogs.com/hust-ghtao/)
雖然叫做“回歸”,但是這個算法是用來解決分類問題的。回歸與分類的區別在於:回歸所預測的目標量的取值是連續的(例如房屋的價格);而分類所預測的目標變量的取值是離散的(例如判斷郵件是否為垃圾郵件)。當然,為了便於理解,我們從二值分類(binary classification)開始,在這類分類問題中,y只能取0或1。更好的理解問題,先舉個小例子:假如我們要制作一個垃圾郵件過濾系統,如果一封郵件是垃圾系統,y=1,否則y=0 。給定訓練樣本集,當然它們的特征和label
都已知,我們就是要訓練一個分類器,將它們分開。
不要用線性回歸問題去解決分類問題,這是AndrewNG給出的一個忠告!原因很簡單,看下圖:
,不靠譜吧,只是多了幾個正類的點而已,分類線就發生了很大的變化。
為了解決這個問題,我們提出了新的假設函數:
,
其中:
,圖像:
,我們把這個函數叫做logistic函數,或者sigmoid函數。我們可以發現,當z趨向無窮時,g(z)趨向於1;當z趨向於負無窮時,g(z)趨向於0 ,即當z從負無窮到正無窮的變化時,現在看來,g(z)從0變化到1 ,且g(0)=0.5 。我們要預測的值為0或1,g(z)的變化范圍恰好為(0,1),我們想到概率的取值也為(0,1)哈,那索性就用g(z)表示一概率值吧,所以我們假設:
下面我們就要用到極大似然原理:一件事情已經發生了,我們就認為這件事情發生的概率最大,用關於參數的函數來表示出這個概率,求出其最大值所對應的參數值就是我們的目的。在們問題中,給出一個訓練集(大小為m),其和
都已知,也就是這件事情已經發生,那我們就求其概率,令其最大:
似然函數:
便於計算,要對其取對數:
,接下來的問題就是要求這個函數的極大值了,很簡單,梯度下降法啦:
,注意其實應該叫做梯度上升法,梯度下降法是“-”,但這里求極大值,所以是“+”。
其中求偏導的部分由:
最終,我們得到參數的更新法則:
看着很眼熟把,和Linear Regression的是不是特別像,沒錯!就差中間一個符號。。。但兩個可不是一個算法哦,因為是不同的。記住這個形式!它們相同的形式恰恰體現了數學的美!