自己學習機器學習,看到邏輯回歸中梯度更新時,始終無法理解更新公式。那個看起來很莫名的公式長這樣:
weights = weights + alpha * datamatrix.transpose() * error
為什麼要轉置,為什麼要用乘法將這個矩陣和差異向量相乘,下面就來詳細講講吧。
首先,設樣本集i行j列: x=
⎛⎝⎜⎜
⎜⎜x11
x21…x
i1x12
x22…x
i2……
……x1
jx2j
…xij
⎞⎠⎟⎟
⎟⎟對應結果標籤y=
⎛⎝⎜⎜
⎜⎜y1
y2…y
i⎞⎠⎟
⎟⎟⎟
根據梯度演算法: w:=
α∗∇w
f(w)
有: ⎛⎝
⎜⎜⎜w
1w2…
wj⎞⎠
⎟⎟⎟ =⎛⎝
⎜⎜⎜w
1_ol
dw2_
old…
wj_o
ld⎞⎠
⎟⎟⎟ +α∗
∂f(w
)/∂w
; 其中,α
為步長;f(
z)為損失函式,
z 為計算得出的標籤值; z=
w0+w
1x1+
w2x2
+…+w
jxj
設平方損失函式:f(
z)=1
/2∗∑
i1(y
i−zi
)2則:∂f
(w)/
∂w=1
/2∗∑
i1(y
i−z(
w)i)
∗2∗z
′(w)
因為:z(w
1)=z(w
2)=z(w
3)=z(w
j)且:z′
(w1)
=x1 , z′
(w1)
=x2 , z′
(wj)
=xj
∂f(wj)/
∂wj=
∑i1(
yi−z
(w)i
)∗xj
i 由於
∂f(w
j)/∂
wj需要與⎛⎝
⎜⎜⎜w
1w2…
wj⎞⎠
⎟⎟⎟ 相加,所以∂f
(wj)
/∂wj
計算的結果應該是乙個j行的向量。
由矩陣相乘公式am
n∗bn
l=cm
l ,將∂f
(wj)
/∂wj
轉換為xt
∗(y−
z(w)
)→,x
t 為j行i列,(y
−z(w
))→ 為i行1列,兩者相乘得到j行1列的向量,滿足要求。而(y
i−z(
w)i)
即為樣本i的誤差er
rori
。最終得到: we
ight
s→:=w
eigh
ts→+
α∗da
tama
trix
.tra
nspo
se()
∗err
or→
邏輯回歸代價函式及其梯度下降公式
cost函式形式 簡單回顧一下幾個變數的含義 表1 cost函式解釋 x i 每個樣本資料點的特徵值 y i 每個樣本資料的所屬類別標籤 m樣本資料點的個數 h x 樣本資料的概率密度函式,即某個資料屬於1類 二分類問題 的概率 j 代價函式,估計樣本屬於某類的風險程度,越小代表越有可能屬於這類 我...
softmax回歸梯度公式推導及實現
推導如下 實現使用的是鳶尾花資料集,該資料集有3種鳶尾花,資料集剛開始長下面這個樣子 data pd.read csv iris.data header none 一共有150個樣本 對資料進行預處理,首先把3種鳶尾花名稱編碼成0,1,2,然後還要插入一列,使資料x變成 1,x 方便算theta 1...
邏輯回歸 損失函式與梯度下降
由於二分類結果是1或者0,這與數學的階躍函式很類似,但是階躍函式在x 0的位置會發生突變,這個突變在數學上很難處理。所以一般使用sigmoid函式來擬合 g z 1 1 e z 1 具體應用到邏輯回歸演算法中 z 0 1x1 2x2 nxn i 0n i xi tx 2 其中x i 表示樣本屬性 對...