Logistic 回归浅析()

不忘初心,方得始终

学习Logistic回归,看了许多讲解一直不知所云,或者看不下去。

第一部分

目的:根据 y 的特征值 x 1 . . . x n x_1...x_n x1...xn,判断 y 属于class1 还是class0
方法:给每一个特征值分配一个权重,根据得分来判断 y 是属于 0,1类,即
z = θ 0 ∗ x 0 + θ 1 ∗ x 1 + . . . + θ n ∗ x n = θ T ∗ X z=\theta_0*x_0 + \theta_1*x_1+...+\theta_n*x_n = \theta^T*X z=θ0x0+θ1x1+...+θnxn=θTX
可以自己划定一个值 N,N取决于 θ 0 . . . θ n \theta_0...\theta_n θ0...θn
当 y > N 时,y ∈ \in class1
当 y < N 时,y ∈ \in class0

也就是说,当我们有了 θ 0 . . . θ n \theta_0 ... \theta_n θ0...θn 之后,当每次来一个 y i y_i yi 根据它的 x 0 . . . x n x_0 ... x_n x0...xn 带入公式,即可求得 y i y_i yi 的类别。

其中有两个问题
1、 z = ∑ θ i ∗ x i z=\sum \theta_i * x_i z=θixi 取值 [ − ∞ , + ∞ ] [-\infty , +\infty] [,+],我们希望 z 的取值在 [ 0 , 1 ],并且这个函数有较好的阶跃的性质,即在短距离内从 0 跳转到1。这样在代入公式的时候得到的值就在0-1之间,并且大部分情况下都远离0.5。(原则上,我认为这不是一个问题)

2、如何得到 [ θ 0 . . . θ n ] [\theta_0...\theta_n] [θ0...θn]


第二部分

关于第一个问题
Sigmoid函数:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1+e^{-z}} σ(z)=1+ez1
现在我们将问题转换为:根据已知的训练集 Y = { y 0 . . . y m y_0...y_m y0...ym},求一组 [ θ 0 . . . θ n ] [\theta_0...\theta_n] [θ0...θn] 使得求出的 z 代入上式后,对于
y i ∈ c l a s s 0 y_i \in class0 yiclass0 σ ( z i ) < 0.5 \sigma(z_i) < 0.5 σ(zi)<0.5
y i ∈ c l a s s 1 y_i \in class1 yiclass1 σ ( z i ) > 0.5 \sigma(z_i) > 0.5 σ(zi)>0.5。其中 z i = θ T ∗ X i z_i=\theta^T*X_i zi=θTXi

举例来说:
y i = [ x 0 i , x 1 i , x 2 i , . . . , x n i ] ∈ c l a s s 1 ⇐ ⇒ σ ( θ T ∗ X i ) = 1 1 + e − ( θ 0 ∗ x 0 i + θ 1 ∗ x 1 i + . . . + θ n ∗ x n i ) = 1 1 + e − ( θ T ∗ X i ) > 0.5 y_i=[x_0^i,x_1^i,x_2^i,...,x_n^i] \in class1\Leftarrow \Rightarrow \sigma(\theta^T*X_i)=\frac{1}{1+e^{-(\theta_0 * x_0^i + \theta_1 * x_1^i +...+ \theta_n * x_n^i)}} = \frac{1}{1+e^{-(\theta^T*X_i)}} > 0.5 yi=[x0i,x1i,x2i,...,xni]class1σ(θTXi)=1+e(θ0x0i+θ1x1i+...+θnxni)1=1+e(θTXi)1>0.5

第二个问题
使用极大似然估计:
现有已知结果的集合 Y = { y 0 . . . y m } Y = \{ y_0...y_m\} Y={y0...ym}
σ ( θ T ∗ X i ) \sigma(\theta^T*X_i) σ(θTXi) 记为 h ( X i ) h(X_i) h(Xi)

p ( y i = 1 ∣ X i ; θ ) = 1 − h ( X i ) p(y_i =1|X_i;\theta)=1-h(X_i) p(yi=1Xi;θ)=1h(Xi)
p ( y i = 0 ∣ X i ; θ ) = h ( X i ) p(y_i =0|X_i;\theta)=h(X_i) p(yi=0Xi;θ)=h(Xi)

∴ p ( y i ∣ X i ; θ ) = ( 1 − h ( X i ) ) 1 − y i ∗ ( h ( X i ) ) y i \therefore p(y_i|X_i;\theta)=(1-h(X_i))^{1-y_i}*(h(X_i))^{y_i} p(yiXi;θ)=(1h(Xi))1yi(h(Xi))yi

现在再次重述一遍问题:
已知集合 Y = { y 0 . . . y m } Y = \{ y_0...y_m \} Y={y0...ym} 中任意的 y i = [ x 0 i , x 1 i , x 2 i , . . . , x n i ] = X i y_i=[x_0^i,x_1^i,x_2^i,...,x_n^i] =X_i yi=[x0i,x1i,x2i,...,xni]=Xi 的类别,其中 p ( y i ∣ X i ; θ ) = ( 1 − h ( X i ) ) 1 − y i ∗ ( h ( X i ) ) y i p(y_i|X_i;\theta)=(1-h(X_i))^{1-y_i}*(h(X_i))^{y_i} p(yiXi;θ)=(1h(Xi))1yi(h(Xi))yi,求 θ \theta θ 的极大似然分布。

L ( θ ) = ∏ i = 0 m ( p ( y i ∣ X i ; θ ) = ∏ i = 0 m ( 1 − h ( X i ) ) 1 − y i ∗ ( h ( X i ) ) y i ) L(\theta)=\prod_{i=0}^m(p(y_i|X_i;\theta)=\prod_{i=0}^m(1-h(X_i))^{1-y_i}*(h(X_i))^{y_i}) L(θ)=i=0m(p(yiXi;θ)=i=0m(1h(Xi))1yi(h(Xi))yi)

l ( θ ) = l o g ( θ ) = ∑ i = 0 m ( y i l o g ( h ( X i ) ) + ( 1 − y i ) ∗ l o g ( 1 − h ( X i ) ) ) l(\theta)=log(\theta)=\sum_{i=0}^m(y_ilog(h(X_i)) + (1-y_i)*log(1-h(X_i))) l(θ)=log(θ)=i=0m(yilog(h(Xi))+(1yi)log(1h(Xi)))

第三部分

求解 l ( θ ) l(\theta) l(θ)
梯度上升算法:其实就是求导,不过是多次求导而已(也许是这样吧)
##未完(不一定续)。。。

你可能感兴趣的:(算法与数据结构)