天天看點

Logistic Regression 分類算法

logistic regression包含三個部分:回歸,線性回歸,logistic方程

logistic regression是線性回歸的一種,線性回歸是一種回歸。那麼回歸是蝦米呢?

回歸其實就是對已知公式的未知參數進行估計。比如已知公式是y=a∗x+b,未知參數是a和b。我們現在有很多真實的(x,y)資料(訓練樣本),回歸就是利用這些資料對a和b的取值去自動估計。估計的方法大家可以簡單的了解為,在給定訓練樣本點和已知的公式後,對于一個或多個未知參數,機器會自動枚舉參數的所有可能取值(對于多個參數要枚舉它們的不同組合),直到找到那個最符合樣本點分布的參數(或參數組合)。(當然,實際運算有一些優化算法,肯定不會去枚舉的)

注意,回歸的前提是公式已知,否則回歸無法進行。而現實生活中哪裡有已知的公式啊(g=m*g 也是牛頓被蘋果砸了腦袋之後碰巧想出來的不是?哈哈),是以回歸中的公式基本都是資料分析人員通過看大量資料後猜測的(其實大多數是拍腦袋想出來的,嗯...)。根據這些公式的不同,回歸分為線性回歸和非線性回歸。線性回歸中公式都是“一次”的(一進制一次方程,二進制一次方程...),而非線性則可以有各種形式(n元n次方程,log方程 等等)。具體的例子線上性回歸中介紹吧。

直接來一個最簡單的一進制變量的例子:假設要找一個y和x之間的規律,其中x是鞋子價錢,y是鞋子的銷售量。(為什麼要找這個規律呢?這樣的話可以幫助定價來賺更多的錢嘛,國小的應用題經常做的呵呵)。已知一些往年的銷售資料(x0,y0), (x1, y1), ... (xn, yn)做樣本集, 并假設它們滿足線性關系:y = ax + b (其中a,b的具體取值還不确定),線性回歸即根據往年資料找出最佳的a,

b取值,使 y = a x + b 在所有樣本集上誤差最小。

也許你會覺得---暈!這麼簡單! 這需要哪門子的回歸呀!我自己在草紙上畫個xy坐标系,點幾個點就能畫出來!(好吧,我承認我們國中時都被這樣的畫圖題折磨過)。事實上一進制變量的确很直覺,但如果是多元就難以直覺的看出來了。比如說除了鞋子的價格外,鞋子的品質,廣告的投入,店鋪所在街區的人流量都會影響銷量,我們想得到這樣的公式:sell = ax + by +

cz + dzz + e。這個時候畫圖就畫不出來了,規律也十分難找,那麼交給線性回歸去做就好。(線性回歸具體是怎麼做的并不重要,對程式員來說,我們就把它當成一條程式指令就好。若看完本文還想了解更多,求解方法可見本文末尾的注1)。這就是線性回歸算法的價值。

需要注意的是,這裡線性回歸能過獲得好效果的前提是y = a*x + b 至少從總體上是有道理的(因為我們認為鞋子越貴,賣的數量越少,越便宜賣的越多。另外鞋子品質、廣告投入、客流量等都有類似規律);但并不是所有類型的變量都适合用線性回歸,比如說x不是鞋子的價格,而是鞋子的尺碼),那麼無論回歸出什麼樣的(a,b),錯誤率都會極高(因為事實上尺碼太大或尺碼太小都會減少銷量)。總之:如果我們的公式假設是錯的,任何回歸都得不到好結果。

logistic方程(也叫sigmoid函數)即:

Logistic Regression 分類算法
Logistic Regression 分類算法

上面我們的sell是一個具體的實數值,然而很多情況下,我們需要回歸産生一個類似機率值的0~1之間的數值(比如某一雙鞋子今天能否賣出去?或者某一個廣告能否被使用者點選? 我們希望得到這個數值來幫助決策鞋子上不上架,以及廣告展不展示)。這個數值必須是0~1之間,但sell顯然不滿足這個區間要求。于是引入了logistic方程,來做歸一化。這裡再次說明,該數值并不是數學中定義的機率值。那麼既然得到的并不是機率值,為什麼我們還要費這個勁把數值歸一化為0~1之間呢?歸一化的好處在于數值具備可比性和收斂的邊界,這樣當你在其上繼續運算時(比如你不僅僅是關心鞋子的銷量,而是要對鞋子賣出的可能、當地治安情況、當地運輸成本

等多個要素之間權重求和,用綜合的加和結果決策是否在此地開鞋店時),歸一化能夠保證此次得到的結果不會因為邊界 太大/太小 導緻 覆寫其他feature 或 被其他feature覆寫。(舉個極端的例子,如果鞋子銷量最低為100,但最好時能賣無限多個,而當地治安狀況是用0~1之間的數值表述的,如果兩者直接求和治安狀況就完全被忽略了)這是用logistic回歸而非直接線性回歸的主要原因。到了這裡,也許你已經開始意識到,沒錯,logistic regression 就是一個被logistic方程歸一化後的線性回歸,僅此而已。

至于是以用logistic而不用其它,是因為這種歸一化的方法往往比較合理(人家都說自己叫logistic了嘛 呵呵),能夠打壓過大和過小的結果(往往是噪音),以保證主流的結果不至于被忽視。具體的公式及圖形見本文的一、官方定義部分。其中f(x)就是我們上面例子中的sell的實數值了,而y就是得到的0~1之間的賣出可能性數值了。(本段 “可能性” 并非 “機率” ,感謝zjtchow同學在回複中指出)

邏輯回歸,是将所有特征經過sigmoid歸一化處理,再用梯度下降法,求線性方程的解

<a target="_blank" href="http://blog.csdn.net/zouxy09/article/details/20319673">http://blog.csdn.net/zouxy09/article/details/20319673</a>

<a target="_blank" href="http://hi.baidu.com/hehehehello/item/40025c33d7d9b7b9633aff87">http://hi.baidu.com/hehehehello/item/40025c33d7d9b7b9633aff87</a>

繼續閱讀