不忘初心,方得始终
学习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=θ0∗x0+θ1∗x1+...+θn∗xn=θT∗X
可以自己划定一个值 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=∑θi∗xi 取值 [ − ∞ , + ∞ ] [-\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+e−z1
现在我们将问题转换为:根据已知的训练集 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 yi∈class0, σ ( z i ) < 0.5 \sigma(z_i) < 0.5 σ(zi)<0.5,
y i ∈ c l a s s 1 y_i \in class1 yi∈class1, σ ( z i ) > 0.5 \sigma(z_i) > 0.5 σ(zi)>0.5。其中 z i = θ T ∗ X i z_i=\theta^T*X_i zi=θT∗Xi
举例来说:
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⇐⇒σ(θT∗Xi)=1+e−(θ0∗x0i+θ1∗x1i+...+θn∗xni)1=1+e−(θT∗Xi)1>0.5
第二个问题
使用极大似然估计:
现有已知结果的集合 Y = { y 0 . . . y m } Y = \{ y_0...y_m\} Y={y0...ym}
将 σ ( θ T ∗ X i ) \sigma(\theta^T*X_i) σ(θT∗Xi) 记为 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=1∣Xi;θ)=1−h(Xi)
p ( y i = 0 ∣ X i ; θ ) = h ( X i ) p(y_i =0|X_i;\theta)=h(X_i) p(yi=0∣Xi;θ)=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(yi∣Xi;θ)=(1−h(Xi))1−yi∗(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(yi∣Xi;θ)=(1−h(Xi))1−yi∗(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=0∏m(p(yi∣Xi;θ)=i=0∏m(1−h(Xi))1−yi∗(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=0∑m(yilog(h(Xi))+(1−yi)∗log(1−h(Xi)))
求解 l ( θ ) l(\theta) l(θ)
梯度上升算法:其实就是求导,不过是多次求导而已(也许是这样吧)
##未完(不一定续)。。。