線性迴歸與邏輯迴歸

      迴歸算法是一種通過最小化預測值與實際結果值之間的差距,而得到輸入特徵之間的最佳組合方式的一類算法。對於連續值預測有線性迴歸等,而對於離散值/類別預測,我們也可以把邏輯迴歸等也視作迴歸算法的一種。線性迴歸主要用來解決連續值預測的問題,邏輯迴歸用來解決分類的問題,輸出的屬於某個類別的概率,工業界經常會用邏輯迴歸來做排序。在SVM、GBDT、AdaBoost算法中都有涉及邏輯迴歸,迴歸中的損失函數、梯度下降、過擬合等知識點也經常是面試考察的基礎問題。因此很重要的兩個內容,需要仔細體會~      

1. 線性迴歸

1.1 線性迴歸問題,適用於有監督學習的預測。 
  一元線性迴歸分析:y=ax+b,只包括一個自變量和一個因變量,且二者的關係可用一條直線近似表示。 
  多元線性迴歸分析:hθ(x)=θ0+θ1x1+...+θnxn,包括兩個或兩個以上的自變量,並且因變量和自變量是線性關係。 

1.2 損失函數

  損失函數:通俗地說,損失函數用來衡量參數選擇的準確性。損失函數定義爲: 

J(θ0,θ1,...,θn)=12mi=1m(hθ(x(i))y(i))2

       這個公式計算的是線性迴歸分析的值與實際值的距離的平均值。顯然,損失函數得到的值越小,損失也就越小。

1.3 梯度下降

  怎樣最小化損失函數?損失函數的定義是一個凸函數,就可以使用凸優化的一些方法: 
1) 梯度下降:逐步最小化損失函數的過程。如同下山的過程,找準下山方向(梯度),每次邁進一步,直至山底。如果有多個特徵,對應多個參數θ,需要對每一個參數做一次迭代θj:=θjαθjJ(θ0,θ1),做完以後再求J函數。 
  學習率:上段公式中的α就是學習率。它決定了下降的節奏快慢,就像一個人下山時候步伐的快慢。α過小會導致收斂很慢,α太大有可能會導致震盪。如何選擇學習率呢,目前也有好多關於學習率自適應算法的研究。工程上,一般會調用一些開源包,包含有一些自適應方法。自己做的話會選擇相對較小的α,比如0.01。下圖展示了梯度下降的過程。 
   
2) 牛頓法:速度快適用於小數據,大數據比較耗內存。

1.4 過擬合與正則化

  迴歸與欠/過擬合: 
1) 欠擬合:函數假設太簡單導致無法覆蓋足夠的原始數據,可能造成數據預測的不準確。 
2) 擬合問題:比如我們有很多的特徵,假設的函數曲線對原始數據擬合的非常好,從而喪失一般性,導致對新給的待預測樣本,預測效果差。下圖就是一個例子,一個複雜的曲線,把所有點都擬合進去了,但是泛化能力變差了,沒有得到一個規律性的函數,不能有效的預測新樣本。 
  這裏寫圖片描述

  過擬合解決方法: 
1) 減少特徵個數:手工選擇保留特徵、模型選擇的算法選擇特徵。 
2) 正則化:在原來的損失函數中加入θ的平方項,來防止波動太大。 

J(θ0,θ1,...,θn)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθ2j]

即L2正則化。留下所有的特徵,但是減少參數的大小。

2. 邏輯(斯特)迴歸

2.1 應用分析

  與線性迴歸不同,邏輯迴歸主要用於解決分類問題,

2.2 Sigmoid函數

  邏輯迴歸首先把樣本映射到[0,1]之間的數值,這就歸功於sigmoid函數,可以把任何連續的值映射到[0,1]之間,數越大越趨向於0,越小越趨近於1。Sigmoid函數公式如下: 
  

g(z)=11+ez

  函數的圖像如下圖,x=0的時候y對應中心點。 
  這裏寫圖片描述

  判定邊界:對多元線性迴歸方程求Sigmoid函數hθ(x)=g(θ0+θ1x1+...+θnxn),找到一組θ,假設得到3+x1+x2=0的直線,把樣本分成兩類。把(1,1)代入g函數,概率值<0.5,就判定爲負樣本。這條直線就是判定邊界,如下圖: 
  這裏寫圖片描述 
  除了線性判定邊界,還有較複雜的非線性判定邊界。

2.3 邏輯迴歸的損失函數

  線性迴歸的損失函數對邏輯迴歸不可用,因爲邏輯迴歸的值是0或者1,求距離平均值會是一條不斷彎曲的曲線,不是理想的凸函數。聰明的數學家找到了一個適合邏輯迴歸的損失定義方法: 
  

Cost(hθ(x),y)={log(hθ(x)),log(1hθ(x)),if y=1if y=0

  其中hθ(x)是一個概率值,y=1表示正樣本,y=0表示負樣本。當y是正樣本時,如果給定的概率特別小(預測爲負樣本),損失就會很大;給定的概率很大(預測爲正樣本),損失就會接近0。損失值的函數如圖: 
  這裏寫圖片描述 
  帶L2正則項的損失函數: 
  
J(θ)=[1mi=1my(i)log(hθ(x(i))+(1y(i))log1hθ(x(i))]+λmj=1nθ2j

 這個函數依然可以用梯度下降求解。

2.4 多分類問題

  剛纔講述的都是二分類的問題,那如果是多分類的問題,又該怎麼做呢?其實可以套用二分類的方法,根據特徵,一層層細化類別。比如下圖中有三種形狀: 
  這裏寫圖片描述 
  ①:可以先用一個分類器區分“正方形”和“非正方形”,使用一個分類器對三角形與非三角形區分,再使用一個分類器對×進行區分,選擇這三個分類器中 概率最高的那個。

       ②:可以先用一個分類器區分“正方形”和“非正方形”, 再用一個分類器對非正方形區分,得到“三角形”和“非三角形”,然後再用一個分類器區分叉。

3. 工程應用經驗

  邏輯斯特迴歸(LR)是個比較基礎的算法,在它只會有很多算法SVM/GBDT/RandomForest。複雜的算法比較難以把握,工業界更偏向於用簡單的算法。

3.1 LR優點與應用

  LR的優點: 
1) LR是以概率的形式輸出結果,不只是0和1的判定; 
2) LR的可解釋強,可控性高; 
3) 訓練快,feature engineering之後效果贊; 
4) 因爲結果是概率,可以做ranking model; 
5) 添加feature簡單。 
  LR的應用場景很多哈: 
1) CTR預估、推薦系統的learning to rank; 
2) 一些電商搜索排序基線; 
3) 一些電商的購物搭配推薦; 
4) 新聞app排序基線。

怎麼使樣本平衡? 
1) 如果樣本不均衡,樣本充足的情況下可以做下采樣——抽樣,樣本不足的情況下做上採樣——對樣本少的做重複; 
2) 修改損失函數,給不同權重。比如負樣本少,就可以給負樣本大一點的權重; 
3) 採樣後的predict結果,用作判定請還原。

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