邏輯回歸LR


邏輯回歸算法相信很多人都很熟悉,也算是我比較熟悉的算法之一了,畢業論文當時的項目就是用的這個算法。這個算法可能不想隨機森林、SVM、神經網絡、GBDT等分類算法那么復雜那么高深的樣子,可是絕對不能小看這個算法,因為它有幾個優點是那幾個算法無法達到的,一是邏輯回歸的算法已經比較成熟,預測較為准確;二是模型求出的系數易於理解,便於解釋,不屬於黑盒模型,尤其在銀行業,80%的預測是使用邏輯回歸;三是結果是概率值,可以做ranking model;四是訓練快。當然它也有缺點,分類較多的y都不是很適用;對於自變量的多重共線性比較敏感,所以需要利用因子分析或聚類分析來選擇代表性的自變量;另外預測結果呈現S型,兩端概率變化小,中間概率變化大比較敏感,導致很多區間的變量的變化對目標概率的影響沒有區分度,無法確定閾值。下面我先具體介紹下這個模型。

一、邏輯回歸LR介紹

首先要搞清楚當你的目標變量是分類變量時,才會考慮邏輯回歸,並且主要用於兩分類問題。舉例來說醫生希望通過腫瘤的大小x1、長度x2、種類x3等等特征來判斷病人的這個腫瘤是惡性腫瘤還是良性腫瘤,這時目標變量y就是分類變量(0良性腫瘤,1惡性腫瘤)。顯然我們希望像保留像線性回歸一樣可以通過一些列x與y之間的線性關系來進行預測,但是此時由於Y是分類變量,它的取值只能是0,1,或者0,1,2等等,不可能是負無窮到正無窮,這個問題怎么解決呢?此時引入了一個sigmoid函數,這個函數的性質,非常好的滿足了,x的輸入可以是負無窮到正無窮,而輸出y總是[0,1],並且當x=0時,y的值為0.5,以一種概率的形式表示. x=0的時候y=0.5 這是決策邊界。當你要確定腫瘤是良性還是惡性時,其實我們是要找出能夠分開這兩類樣本的邊界,叫決策邊界。

而通過sigmoid函數,可以將我們喜歡的線性表示的函數嵌入其中,當theta*x得到的值大於0,則h(x)得到的概率值大於0.5時,表明屬於該分類;當theta*x得到的值小於0,則h(x)小於0.5時表示不屬於該分類。這樣也就形成了我們看到的邏輯回歸,具體如下:

 其中theta是向量,

 二、邏輯回歸估計(最小化損失函數loss function

 損失函數是在機器學習中最常出現的概念,用於衡量均方誤差[(模型估計值-模型實際值)^2/ n]最小,即預測的准確性,因而需要損失函數最小,得到的參數才最優。(線性回歸中的最小二乘估計也是由此而來)但因為邏輯回歸的這種損失函數非凸,不能找到全局最低點。因此,需要采用另一種方式,將其轉化為求最大似然,如下,具體的推導求解過程可參見博客http://blog.csdn.net/suipingsp/article/details/41822313 另一種較為好理解的方式是,如果Y=1,你膽敢給出一個h(x)很小的概率比如0.01,那么損失函數就會變得很大:

此時的損失函數變成了凸函數,Theta的求解,就是梯度下降法求最小值,此時加入的正則化項,是解決過擬合問題。(過擬合問題:如果我們的模型有非常多的特征,模型很復雜,模型對原始數據的擬合效果很好,但是喪失一般性,對新的待預測變量預測效果很差。(聽過寒小陽老師舉過一個很好理解的例子,就是這個學生只是強硬的記住題目,並沒有掌握規律,高考不一定考的好)怎么解決呢?限制參數寺塔,損失函數加上關於theta的限制,即如果theta太多太大,則就給予懲罰。L2正則化。)

該公式將一直被迭代執行,直至達到收斂()在每一步迭代中都減小,如果某一步減少的值少於某個很小的值()(小於0.001), 則其判定收斂)或某個停止條件為止(比如迭代次數達到某個指定值或算法達到某個可以允許的誤差范圍)。 轉換為向量的處理方法同樣可參見上文博客:http://blog.csdn.net/suipingsp/article/details/41822313

三、LR應用經驗

  如果連續變量,注意做SCALING,縮放單位即標准化。LR對樣本分布敏感,所以要注意樣本的平衡性(y=1不能太少)樣本量足的情況下采用下采樣,不足的情況用上采樣。

  LR對於特征處理非常重要,常用處理手段包括,通過組合特征引入個性化因素(FM,FFM);注意特征的頻度;聚類、HASH。但LR不怕特征大,GBDT比較怕。對於連續變量的離散化,可以用CART查看離散的結果,生成新的特征,再用LR。

  LR和FM對於稀疏高維特征處理是無壓力的,GBDT對於連續值自己會找到合適的切分點,xgboost也可以處理category類型的feature,無需one-hot,平展開的高維稀疏特征對它沒好處。

  算法調優方面,選擇合適的正則化,正則化系數,收斂閾值e,迭代輪數,調整loss function給定不同權重;bagging或其他方式的模型融合;最優算法選擇(‘newton-cg’,’lbfgs’, ‘liblinear’);bagging或其他模型融合。Sklearn中的LR實際上是liblinear的封裝。

 LR和SVM對於線性切分都有着比較好的表現,對於非線性切分,必須在原始數據上做一些非線性變換。LR必須做feature mapping,比如把X做個平方項,X1*X2等;SVM則需要利用核函數

  模型的評價主要用ROC曲線。ROC(接受者操作特征)曲線實際上是對概率輸出設置了一個門檻D,當P(C|x)>D時,事件C為真,  而ROC曲線反映了,在一系列可能門檻值下,真正率( TPR)和假正率(FPR)的值,一個好的模型必須在一個高的真正率( TPR)和一個低的假正率(FPR)中取得一個折衷水平,ROC曲線下的面積越大越好,最大為1. 

 

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM