Lineage邏輯迴歸分類算法html
線性迴歸和邏輯迴歸參考文章:算法
http://blog.csdn.net/viewcode/article/details/8794401函數
http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html學習
一、概述spa
Lineage邏輯迴歸是一種簡單而又效果不錯的分類算法.net
什麼是迴歸:好比說咱們有兩類數據,各有50十個點組成,當我門把這些點畫出來,會有一條線區分這兩組數據,咱們擬合出這個曲線(由於頗有多是非線性),就是迴歸。咱們經過大量的數據找出這條線,並擬合出這條線的表達式,再有新數據,咱們就以這條線爲區分來實現分類。code
學習過程:htm
下圖是一個數據集的兩組數據,中間有一條區分兩組數據的線。blog
顯然,只有這種線性可分的數據分佈才適合用線性迴歸數學
邏輯迴歸的模型 是一個非線性模型,sigmoid函數,又稱邏輯迴歸函數。可是它本質上又是一個線性迴歸模型,由於除去sigmoid映射函數關係,其餘的步驟,算法都是線性迴歸的。能夠說,邏輯迴歸,都是以線性迴歸爲理論支持的。
只不過,線性模型,沒法作到sigmoid的非線性形式,sigmoid能夠輕鬆處理0/1分類問題。
二、算法思想
Lineage迴歸分類算法就是將線性迴歸應用在分類場景中
在該場景中,計算結果是要獲得對樣本數據的分類標籤,而不是獲得那條迴歸直線
2.一、算法圖示
1) 算法目標()?
大白話:計算各點的y值到擬合線的垂直距離,若是
距離>0, 分爲類A
距離<0, 分爲類B
2) 如何獲得擬合線呢?
大白話:只能先假設,由於線或面的函數均可以表達成
y(擬合)=w1*x1 + w2*x2 + w3*x3 + ...
其中的w是待定參數
而x是數據的各維度特徵值
於是上述問題就變成了 樣本y(x) - y(擬合) >0 ? A : B
3) 如何求解出一套最優的w參數呢?
基本思路:代入「先驗數據」來逆推求解
但針對不等式求解參數極其困難
通用的解決辦法,將對不等式的求解作一個轉換:
從而將問題轉化爲逼近求解的典型數學問題
2.二、sigmoid函數
上述算法思路中,一般使用sigmoid函數做爲轉換函數
函數表達式:
注:此處的x是向量
函數曲線:
之因此使用sigmoid函數,就是讓樣本點通過運算後獲得的結果限制在0~1之間,壓縮數據的巨幅震盪,從而方便獲得樣本點的分類標籤(分類以sigmoid函數的計算結果是否大於0.5爲依據)
三、算法實現分析
3.一、實現思路
算法思想的數學表述:
把數據集的特徵值設爲x1,x2,x3......
求出它們的迴歸係數wi
設z=w1*x1+w2*x2..... ,而後將z值代入sigmoid函數並判斷結果,便可獲得分類標籤
問題在於如何獲得一組合適的參數wi?
經過解析的途徑很難求解,而經過迭代的方法能夠比較便捷地找到最優解
簡單來講,就是不斷用樣本特徵值代入算式,計算出結果後跟其實際標籤進行比較,根據差值來修正參數,而後再代入新的樣本值計算,循環往復,直到無需修正或已到達預設的迭代次數
注:此過程用梯度上升法來實現。
3.二、梯度上升算法
通俗解釋:經過小步前進——》調整方向——》繼續小步前進——》最終逼近最優解
梯度上升是指找到函數增加的方向。在具體實現的過程當中,不停地迭代運算直到w的值幾乎再也不變化爲止。
如圖所示: