1簡介:
邏輯迴歸是一個分類算法,本質是對線性迴歸做了一個變換。將值域壓在0~1的空間。從而可以未每一個特徵,估算出一個概率。作預測問題。二分類。
邏輯迴歸問題,本質上就變成,求解變換後的每個特徵的權重。
ax1+bx2+cx3 = (0~1);
求解模型參數θ:
(a b c)權重。
的問題。
2 算法細節:
分類算法模型:
y = f(x)
y:用戶對系統的反饋,1或者0.(label)。有監督的學習,我們需要收集大量的樣本。並且要帶有預測目標的label值。同時也是作爲我們要預測的值。
x:特徵向量。(id:6,name:kesalin,salary : 6000),輸入的特徵。
f:算法模型,邏輯迴歸模型。
邏輯迴歸算法:
y = { 0 , 1} 。二值
x = ( 125, 367, 756 , ... , n)。n維實數向量
樣本 : (x , y) = ( 125, 367, 756 , ... , n,0 / 1}
邏輯迴歸模型:
logistics 變化 σ(x)= 1 / (1 + e^-x) 。 是一個非線性的模型
線性模型 g(x) = 2 x1 + 3 x2 + ... + 643 xn + 865 = θΤ x + b 。 是一個線性模型
邏輯迴歸模型 就是對線性模型 g(x) 作爲 x ,代入 logistics 變化 σ(x)。將值域壓縮到 0 到 1 之間。
1 / ( 1 + e^ - g(x))
= 1 / (1 +
e ^ - (θΤ x + b)
)
邏輯迴歸的決策邊界0.5時, a = 0 = 》 θΤ x + b = 0.因爲決策邊界θΤ x + b是線性的。所以邏輯迴歸也是線性模型。
結論:
y = 1 時的概率:1 / (1 + e ^ - (θΤ x + b))
y = 0時的概率: 1 - 1 / (1 + e ^ - (θΤ x + b))
y發生的概率簡寫 = p(yn | 0) = 1 / (1 + e ^ - (θΤ x + b)) (yn)
* [ 1 - 1 / (1 + e ^ - (θΤ x + b)) ] ^ (1-yn);
場景
用戶點擊率預估。在一個用戶帶有特徵向量(name:mosi,age :25,salary:666)。用來預估用戶是否點擊廣告。(id:19,type:鞋類)。將點擊設置爲 y = 1。預測用戶的點擊率問題。就轉換爲:
1 / (1 + e ^ - (θΤ x + b))
= 1 /(1 + e ^ (
θΤ(name:mosi,age :25,salary:666,....其他特徵.....,id:19,type:鞋類)+b
))
整個概率的表達式,只有θ 和 b 不知道。所以點擊概率的問題。就變成θ和b的求解問題。這兩個參數,可以通過大量的歷史數據做參數估算。
而參數估算的過程,就是我們邏輯迴歸的機器學習訓練的過程。
p(yn | 0) = 1 / (1 + e ^ - (θΤ x + b)) (yn)
* [ 1 - 1 / (1 + e ^ - (θΤ x + b)) ] ^ (1-yn);
估算這個θ。2.4參數預估
最大似然估計MLE 原理。(預測概率)
y = f (x) = f (θ)
似然函數:L = Πp( xi ) = Π f (θ) 。求L最大時,θ的值。
邏輯迴歸 每個樣本的函數是
p(yn | 0) = 1 / (1 + e ^ - (θΤ x + b)) (yn)
* [ 1 - 1 / (1 + e ^ - (θΤ x + b)) ] ^ (1-yn);
那麼對於所有歷史數據。的似然函數P(D) = Π 【
1 / (1 + e ^ - (θΤ x + b)) (yn)
* [ 1 - 1 / (1 + e ^ - (θΤ x + b)) ] ^ (1-yn)
】
對似然函數取對數 log P(D)
log P(D) = Σ yn log1 / (1 + e ^ - (θΤ x + b)) + (1-yn)log
[ 1 - 1 / (1 + e ^ - (θΤ x + b)) ] ^ (1-yn)
2.1目標函數 (min Loss + 正則項降低複雜性):
min f(θ) + λ g(θ)
最優解的求解過程(凸函數的局部最優解,是求導=0的點。)。
凸函數的快捷證明方法
二階導數 >=0
凸函數的組合也是凸函數
凸函數的負數也是凸函數
海森矩陣是半正定的
2.2優化算法
邏輯迴歸的本質就是求解θ b,在損失函數最小的解。可以通過兩種迭代算法來求。
2.2.1 隨機梯度下降(一階求偏導 )
θ n +1 = θ n - η f (θ n)/ τ θ n。
因爲是下降過程,所以是 - 號
反覆迭代直到 f (θ n)/ τ θ n = 0,收斂。這個點,就是函數的局部最優解。或者,當 θ的變化很小時,也可近視收斂。
1:η 是步長,超參數,步長太大會發生震盪不穩定,太小則需要更長的迭代次數,性能變差。可以通過交叉驗證,尋求一個最好的步長。
邏輯迴歸的目標函數
f(θ ,b)= - Σ yn log 1 / (1 + e ^ - (θΤ x + b)) + (1-yn)log [ 1 - 1 / (1 + e ^ - (θΤ x + b)) ] ^ (1-yn)
需要估算兩個參數,所以對2個參數都做梯度下降。則
f(x)對θ 求偏導 得到
θ 的梯度 =Σ【1 / (1 + e ^ - (θΤ x + b)) - yn 】 x n
f(x)對b 求偏導 得到 b 的梯度 = Σ【1 / (1 + e ^ - (θΤ x + b)) - yn 】
將θ和b的梯度,代入梯度下降公式裏。
θ n +1 = θ n - η * 梯度 = θn - η Σ【1 / (1 + e ^ - (θΤ x + b)) - yn 】 x n
θ b +1 = θ b - η * 梯度 = θn - η Σ【1 / (1 + e ^ - (θΤ x + b)) - yn 】
每一次迭代,都需要代入所有的樣本。因爲Σ 是連加,每一次更新,參數 θ,b都需要所有的樣本。性能消耗太大。顯然不科學。所以引入了隨機梯度下降來解決這個問題。
隨機梯度下降
每次迭代估算參數的時候,都隨機選取一個樣本 xn,yn。x是一個特徵向量。yn是label。
從而幹掉連加,解決性能問題。
θ n +1 = θ n - η * 梯度 = θn - η 【1 / (1 + e ^ - (θΤ x + b)) - yn 】 x n
θ b +1 = θ b - η * 梯度 = θn - η 【1 / (1 + e ^ - (θΤ x + b)) - yn 】
爲什麼隨機梯度每次迭代只選取一個樣本,也可以求解最優解
現在情況裏,我們收集到的樣本,其實只是所有的存在樣本的一小部分。所以我們的樣本集也只是一個真實的一個部分而已。
因爲真實的梯度 :
= (1/ N) * Σ 1~N f(θ,b,xn,yn)
所以真正的loss Function,其實是一個算數平均值。
N是樣本的個數。如果N = 所有的樣本值的時候,算出來的越準確。
N = 1 時,就是隨機梯度下降。有很大的噪音。但是因爲朝着梯度的反方向前進,總的來說,還是在逼近最優解的路上。並且他的計算成本低。
1<N <所有樣本,批量隨機梯度下降,在梯度下降和隨機梯度下降之間,取了個綜合。
所以,隨機梯度算法,是很適合做在線學習的。因爲邏輯迴歸在迭代的過程中,是不依賴整體的歷史數據的。
mtkl 採樣:分詞采樣,對每一層結果做一個算數平均值。
2.2.2 擬牛頓法(二階求偏導)
2.3 正則化
L1
L2