邏輯迴歸是一個形式是Y=1/(1+E(-X))的函數,它的特色是:算法
1, 當X>0,隨着X增大,Y很快的接近1;機器學習
2,當x<0,隨着X的減少,Y很快的接近0;函數
3,當X=0時,Y=1/2。學習
因爲邏輯迴歸的這種特性(在0-1之間連續),它被用來判斷一個學習算法是否正確。spa
除了正確和不正確的結果以外,使用邏輯迴歸的好處在於,它還能告訴你,你離正確的結果還差多少,從而引導你向正確的方向前進。所以它經常和梯度上升的算法結合起來。下面的代碼體現了這樣的例子:ci
輸入參數1是100行,2列的矩陣; table 輸入參數2是100行,1列的矩陣,取值都是0或1; class def gradAscent(dataMatIn, classLabels): |
因爲每次迭代都會致使weights朝labelMat的方向靠近,所以通過500次的循環,最終能獲得較好的結果,能很好的肯定weights的兩個參數。數據類型
固然上述代碼存在一個問題,它每次循環都要掃描dataMatrix中全部的行,這對大型的數據是不可容忍的,所以,有了另一種隨機梯度上升的算法。它每次只看一行數據,看它的估算與結果的距離,根據距離調整weights。
這個算法仍然存在問題,由於它受每一個訓練數據影響是同樣的,因此能夠經過設置,讓後面的實例對數據的影響逐漸變小,從而確保學習的快速收連。
如何處理缺失數據是機器學習中的重要課題,它也嚴重影響邏輯迴歸的準確性。
----
總之,若是隻是要判斷一個學習算法是否準確,有無數種方法,爲何必定要選擇邏輯迴歸這個奇怪的函數。個人理解是,邏輯迴歸函數它能反映出一種方向,可以把「是否正確」轉變成「有多麼正確或者多麼錯誤」,正由於這個轉變,可讓機器不斷的向正確的方向前進,最終實現準確的預測。