我從線性、函式、影象以及演算法實踐這幾個方面對logistic regression模型進行表述。
正常來說,乙個關於分類的問題可以分成線性可分和線性不可分兩種。(還有一種叫非線性可分,難頂)
1) 線性可分是指能夠使用線性函式正確分類,如在座標軸上y>3的一類,y<3為另一類,那麼y=3就是他們的線性函式。
2) 線性不可分就是不能找到一條能用函式表示的線來將分類問題正確區分。
logistic regression模型就是一種線性分類模型。就拿我舉的y=3這個例子來說,這條y=3的直線就稱作超平面。(也有解釋是二維線性擴充成三維平面,不會作三維模型圖見諒)
那麼在其他不同的情況下呢?我們可以發現有這樣的線性函式,來表達所有超平面:
y =k
x+by =kx+b
y=kx+b
(線性函式)
其中k
kk是權重,b
bb為偏置。在多維的情況下k和b
k和bk和
b均為為向量。在log模型下我們可以通過對樣本進行訓練學習得到超平面,在這個平面下把資料分成正負兩個類別。這時就該使用閾值函式來將輸出的內容進行範圍控制了,將樣本資料對映到不同的類別裡面。常用的閾值函式有sigmoid函式:
f (x
)=11
+e−x
f(x)=\frac1}
f(x)=1
+e−x
1影象如下:
從sigmoid函式影象中可以看出他的值域為(0,
1)(0,1)
(0,1
)(注意不包括0和1)。
通過python(本人的是py3.7)實現的話函式表示式如下:
def sig(x):
return 1.0/(1+np.exp(-x))
對於輸入的向量x
xx,屬於正例的概率為:
p (y
=1∣x
,w,b
)=11
+e−(
wx+b
)p(y=1|x,w,b)=\frac1}
p(y=1∣
x,w,
b)=1
+e−(
wx+b
)1負例的概率為:
p (y
=0∣x
,w,b
)=1−
11+e
−(wx
+b)p(y=0|x,w,b) = 1-\frac1}
p(y=0∣
x,w,
b)=1
−1+e
−(wx
+b)1
對於logistic regression演算法來說,需要求解分割超平面的話,就需要得到權重矩陣w和偏置向量b。要得到模型的這兩個引數,則需要定義損失函式。
假設我們有m個訓練樣本。,運用極大似然函式進行估算後,其似然函式為:
l w,
b=∏i
=0m[
(11+
e−(w
xi+b
))y(
i)∗(
1−11
+e−(
wxi+
b))1
−y(i
)]l_ =\prod_^m [(\frac1})^*(1-\frac1})^]
lw,b=
i=0∏
m[(
1+e−
(wxi
+b)1
)y(
i)∗(
1−1+
e−(w
xi+b
)1)
1−y(
i)]求似然函式的極大值,我們可以用log似然函式,通常是將負的log似然函式作為損失函式,即the negative log-likelihood(nll)作為他的損失函式,這時只要計算nll的極小值(為什麼是極小值而不是最小值,導函式概念該複習了,解決極小值問題就需要涉及到凸優化or非凸優化問題),就可以找到似然函式最大值解,進而得到分割的超平面函式。損失函式l
ll為:
l w,
b=−1
mlog
l=−1
m∑i=
0m(y
i∗lo
g(11
+e−(
wxi+
b))+
(1−y
(i))
∗log
(1−1
1+e−
(wxi
+b))
)]l_ = -\frac1logl =-\frac1 \sum_^m (yi*log(\frac1})+()*log(1-\frac1}))]
lw,b=
−m1
logl
=−m1
i=0
∑m(
yi∗l
og(1
+e−(
wxi+
b)1
)+(1
−y(i
))∗l
og(1
−1+e
−(wx
i+b)
1))
]為了得到函式l
ll的最小值,就需要用到梯度下降的方法了。
梯度下降是一種迭代的優化演算法,根據初始點在每一次迭代過程中選擇下降方法方向,進而改變需要修改的引數,對於優化問題,梯度下降如下:
1.隨機選擇乙個初始點w
ww2.重複下面方法
2.1決定方向:di=
−∂∂w
f(x)
∣wid_i = -\frac\partialf(x)|_
di=−∂
w∂f
(x)∣
wi2.2選擇步長a
aa2.3更新:wi+
1=wi
+a∗d
iw_ = w_i + a * d_i
wi+1=
wi+
a∗di
3條件滿足後停止
(我覺得牛頓法用來入門很不錯)
機器學習 演算法學習3
詞向量 將詞語 嵌入 到乙個n維空間,使得詞語相近的詞語放到相近的位置。機器翻譯類不類似於矩陣的變換?谷歌出品的乙個工具word2vec,用於入門。句向量?段向量?文件向量?很多事情向量化,可以解決很多問題。傳統的one hot 編碼的原來是,有多少個字就有多少個維度.科 1,0,0,0,0,0,0...
演算法學習 1
插入排序是學習演算法時最先學到的乙個演算法,很簡單,也許看一遍就會理解,從而覺得自己掌握這個基本的演算法。但是很多人可能會像我一樣,過了一段時間,提筆來寫一下插入排序的偽 就很難寫出書本上如此優雅的偽 insertion sort a for j 2 to a.length key a j inse...
演算法學習 1
劍指offer演算法題 題目描述 給你一根長度為n的繩子,請把繩子剪成整數長的m段 m n都是整數,n 1並且m 1,m n 每段繩子的長度記為k 1 k m 請問k 1 x xk m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。...