目录
1.关于Logistic Regression的一些基本问题
(1) Logistic Regression的名字
虽然字面上Logistic Regression是一种回归方法,但实际上,它是一种分类(Classification) 方法。
(2) 假设 h θ ( x ) h_\theta(\mathbf{x}) hθ(x)的内在含义
在Logistic Regression回归中,假设函数的形式如下:
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(\mathbf{x})=\frac{1}{1+e^{-\theta^T\mathbf{x}}}
hθ(x)=1+e−θTx1
这就是所谓的Logistic函数或者Sigmoid函数。
该函数的值域是(0,1),可以将其输出解释为:对于输入
x
\mathbf{x}
x,
h
θ
(
x
)
h_\theta(\mathbf{x})
hθ(x)是该输入所对应输出
y
=
1
y=1
y=1的概率。
(3) Logistic Regression的梯度下降推导
先说结论:Logistic Regression的参数更新表达式在形式上和线性回归是一样的,只不过假设
h
θ
(
x
)
h_\theta(x)
hθ(x)的形式不同,接下来是推导过程:
θ
j
:
=
θ
j
−
α
∂
J
(
θ
)
∂
θ
j
\theta_j:=\theta_j-\alpha\frac{\partial J(\theta)}{\partial \theta_j}
θj:=θj−α∂θj∂J(θ)
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
J(\theta)=-\frac{1}{m}\sum_{i=1}^m{[y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))]}
J(θ)=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))] # 关于为什么
J
(
θ
)
J(\theta)
J(θ)这样表示,这里就不赘述了,详情参见吴恩达的机器学习课程。
∴
∂
J
(
θ
)
∂
θ
j
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
1
h
θ
(
x
(
i
)
)
∂
h
θ
(
x
(
i
)
)
∂
θ
j
−
(
1
−
y
(
i
)
)
1
1
−
h
θ
(
x
i
)
∂
h
θ
(
x
(
i
)
)
∂
θ
j
]
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
(
1
−
e
−
θ
T
x
(
i
)
)
(
−
x
j
(
i
)
e
−
θ
T
x
(
i
)
(
1
−
e
−
θ
T
x
(
i
)
)
2
)
−
(
1
−
y
(
i
)
)
1
−
e
−
θ
T
x
(
i
)
−
e
−
θ
T
x
(
i
)
(
(
−
x
j
(
i
)
e
−
θ
T
x
(
i
)
(
1
−
e
−
θ
T
x
(
i
)
)
2
)
)
]
=
−
1
m
∑
i
=
1
m
[
−
y
(
i
)
x
j
(
i
)
e
−
θ
T
x
(
i
)
1
−
e
−
θ
T
x
(
i
)
−
(
1
−
y
(
i
)
)
x
j
(
i
)
1
−
e
−
θ
T
x
(
i
)
]
=
−
1
m
∑
i
=
1
m
x
j
(
i
)
(
y
(
i
)
(
1
−
e
θ
T
x
(
i
)
)
−
1
)
1
−
e
θ
T
x
(
i
)
=
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\therefore \frac{\partial J(\theta)}{\partial \theta_j}=-\frac{1}{m}\sum_{i=1}^m{[y^{(i)}\frac{1}{h_\theta(x^{(i)})}\frac{\partial h_\theta(x^{(i)})}{\partial \theta_j}-(1-y^{(i)})\frac{1}{1-h_\theta(x^{i})}\frac{\partial h_\theta(x^{(i)})}{\partial \theta_j}]} \\=-\frac{1}{m}\sum_{i=1}^m{[y^{(i)}(1-e^{-\theta^Tx^{(i)}})(-\frac{x^{(i)}_je^{-\theta^Tx^{(i)}}}{(1-e^{-\theta^Tx^{(i)}})^2})-(1-y^{(i)})\frac{1-e^{-\theta^Tx^{(i)}}}{-e^{-\theta^Tx^{(i)}}}((-\frac{x^{(i)}_je^{-\theta^Tx^{(i)}}}{(1-e^{-\theta^Tx^{(i)}})^2}))]} \\=-\frac{1}{m}\sum_{i=1}^m{[\frac{-y^{(i)}x^{(i)}_je^{-\theta^Tx^{(i)}}}{1-e^{-\theta^Tx^{(i)}}}-\frac{(1-y^{(i)})x_j^{(i)}}{1-e^{-\theta^Tx^{(i)}}}]} \\=-\frac{1}{m}\sum_{i=1}^m{\frac{x_j^{(i)}(y^{(i)}(1-e^{\theta^Tx^{(i)}})-1)}{1-e^{\theta^Tx^{(i)}}}} \\=\frac{1}{m}\sum_{i=1}^m{(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}}
∴∂θj∂J(θ)=−m1i=1∑m[y(i)hθ(x(i))1∂θj∂hθ(x(i))−(1−y(i))1−hθ(xi)1∂θj∂hθ(x(i))]=−m1i=1∑m[y(i)(1−e−θTx(i))(−(1−e−θTx(i))2xj(i)e−θTx(i))−(1−y(i))−e−θTx(i)1−e−θTx(i)((−(1−e−θTx(i))2xj(i)e−θTx(i)))]=−m1i=1∑m[1−e−θTx(i)−y(i)xj(i)e−θTx(i)−1−e−θTx(i)(1−y(i))xj(i)]=−m1i=1∑m1−eθTx(i)xj(i)(y(i)(1−eθTx(i))−1)=m1i=1∑m(hθ(x(i))−y(i))xj(i)
可以看出,Logistic Regression的参数更新表达式在形式上和线性回归是一样的。
2.关于正则化的一些基本问题
(1) 正则化的初衷
我的理解是:因为不知道哪些项会导致过拟合,所以干脆将所有系数变小。(虽然这样的方法比较粗暴,但是管用啊!)(当然,正则化系数也不能太大,否则反而会造成欠拟合)
(2) 关于添加特征和运用正则化后的模型预测效果
这一点是从课程测验里总结出来的:
- 添加一个新特征, h θ ( x ) h_\theta(\mathbf{x}) hθ(x)在训练集数据上会表现得更好(这个很好理解,添加特征能使模型更加拟合训练集数据,但是对于新数据会导致更加严重的过拟合)
- 运用正则化后, h θ ( x ) h_\theta(\mathbf{x}) hθ(x)在预测新数据时表现得不一定更好(说不定本来就拟合得很好,结果用了正则化,所有系数变小,反而不如正则化之前的表现了)
(3) 关于Logistic Regression的cost function正则化表达式
这一条是在我做完本章作业之后加上的,因为自己忘记了一个很重要的细节:
Logistic Regression的正则化cost function如下:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
+
λ
2
m
∑
j
=
1
n
θ
j
2
J(\theta)=-\frac{1}{m}\sum_{i=1}^m{[y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))]}+\frac{\lambda}{2m}\sum_{j=1}^{n}{\theta_j^2}
J(θ)=−m1i=1∑m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
重点就在于后面的正则项!!!
θ
0
\theta_0
θ0不进行正则化所以正则项里并没有包含
θ
0
\theta_0
θ0。但是在matlab的矩阵中是从theta(1)开始的,所以我在参照公式编程的时候忘记正则项里并没有包含
θ
0
\theta_0
θ0 这一点!!!浪费了我好长时间。
一定要记住这个教训!