引入
可以看到我们在右边再加上一个样例值时,拟合线发生了偏转,这导致原本的决策边界发生了很大的变动,使得原本正确的判断被错误分类。可见之前的线性回归算法是有问题的,我们将学习一种新的算法-逻辑回归来处理这种分类问题。
介绍
我们不再采用一条拟合直线而是采用一条
S
S
S型的曲线,也就是右边的
s
i
g
m
o
i
d
sigmoid
sigmoid函数也称为
l
o
g
i
s
t
i
c
logistic
logistic函数。
我们仍然会使用一条直线
z
=
w
→
⋅
x
→
+
b
z=\overrightarrow{\mathrm{w}}\cdot\overrightarrow{\mathrm{x}}+b
z=w⋅x+b,然后将这个
z
z
z作为自变量带入
s
i
g
m
o
i
d
sigmoid
sigmoid函数继续计算,求出最终的结果。
f
w
⃗
,
b
(
x
⃗
)
=
P
(
y
=
1
∣
x
⃗
;
w
⃗
,
b
)
f_{\vec{w},b}(\vec{\mathrm{x}})=P(y=1|\vec{\mathrm{x}};\vec{\mathrm{w}},b)
fw,b(x)=P(y=1∣x;w,b),表示在给定特征向量为
x
⃗
\vec{x}
x的情况下输出类别
y
=
1
y=1
y=1的条件概率。
决策边界
我们看到了一个线性的决策边界,我们选择阈值为
0.5
0.5
0.5。因此,当
z
=
0
z=0
z=0就是一个判断条件,我们通过带入
w
,
b
w,b
w,b的参数值就可以得到一个决策边界。
这是一个非线性的决策边界,带入合适的参数值我们可以看到一个圆形的决策边界。
代价函数
如果我们仍然使用之前的最小二乘法进行计算,那么得到的代价函数将会是一个非凸函数。我们引入一个新的概念-损失函数,也就是单个样本的误差,而我们之前提到的代价函数则是在整个训练集上,是所有样本误差的平均,也就是损失函数的平均。
可以看到,这个损失函数的定义是一个伯努利分布,我们有一个更好的写法。
接下来我们从最大似然估计的角度解释一下这个函数是怎么计算的
我们已经知道了原来的函数
f
w
,
b
(
x
⃗
)
f_{w,b}(\vec{x})
fw,b(x)表示在给定特征向量为
x
⃗
\vec{x}
x的情况下输出类别
y
=
1
y=1
y=1的条件概率。假设我们的输出样本有
0
0
0或
1
1
1这两类。那么我们就有:
P
(
y
=
1
∣
x
⃗
;
w
⃗
,
b
)
=
f
w
,
b
(
x
⃗
)
P
(
y
=
0
∣
x
⃗
;
w
⃗
,
b
)
=
1
−
f
w
,
b
(
x
⃗
)
\begin{aligned}&P(y=1|\vec{x};\vec{w},b)=f_{w,b}(\vec{x})\\&P(y=0|\vec{x};\vec{w},b)=1-f_{w,b}(\vec{x})\end{aligned}
P(y=1∣x;w,b)=fw,b(x)P(y=0∣x;w,b)=1−fw,b(x)
写成一个式子就是
P
(
y
∣
x
⃗
;
w
⃗
,
b
)
=
f
w
,
b
(
x
⃗
)
y
(
1
−
f
w
,
b
(
x
⃗
)
)
1
−
y
P(y|\vec{x};\vec{w},b)=f_{w,b}(\vec{x})^y(1-f_{w,b}(\vec{x}))^{1-y}
P(y∣x;w,b)=fw,b(x)y(1−fw,b(x))1−y
其中的
y
y
y仅可以取
0
0
0或
1
1
1,接下来我们可以使用最大似然估计(计算同时出现最大的概率)来求解我们的系数值。
J
(
w
⃗
,
b
)
=
∏
i
=
1
m
(
f
w
⃗
,
b
(
x
(
i
)
)
)
y
(
i
)
(
1
−
f
w
⃗
,
b
(
x
(
i
)
)
)
1
−
y
(
i
)
J(\vec{w},b)=\prod_{i=1}^m(f_{\vec{w},b}(x^{(i)}))^{y^{(i)}}(1-f_{\vec{w},b}(x^{(i)}))^{1-y^{(i)}}
J(w,b)=∏i=1m(fw,b(x(i)))y(i)(1−fw,b(x(i)))1−y(i),其中
m
m
m为样本个数。
由于概率连乘之后的结果趋近于无穷小,我们对其取对数使其相加求平均值,同时取反得到最小值。得到表达式为:
J
(
w
⃗
,
b
)
=
−
l
n
J
(
w
⃗
,
b
)
=
−
1
m
∑
i
=
1
m
(
y
(
i
)
l
o
g
(
f
w
⃗
,
b
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
f
w
⃗
,
b
(
x
(
i
)
)
)
)
J(\vec{w},b)=-lnJ(\vec{w},b)=-{\frac{1}{m}}\sum_{i=1}^m(y^{(i)}log(f_{\vec{w},b}(x^{(i)}))+(1-y^{(i)})log(1-f_{\vec{w},b}(x^{(i)})))
J(w,b)=−lnJ(w,b)=−m1∑i=1m(y(i)log(fw,b(x(i)))+(1−y(i))log(1−fw,b(x(i))))
参照:
“损失函数”是如何设计出来的?直观理解“最小二乘法”和“极大似然估计法”_哔哩哔哩_bilibili
梯度下降
我们可以和线性回归一样使用我们熟悉的梯度下降方法使得代价函数最小。
同时还需要使用向量化和特征缩放。
过拟合问题
我们使用线性回归问题举例,我们第一个函数过于简单,导致很多数据都无法拟合,对于这种情况我们称之为欠拟合或高偏差。第三个函数又过于复杂,一旦数据集发生了一点点变动,那么我们的结果就会改变,对于训练数据都完美契合,可是如果出现一个新的数据就无法适应,对于这种情况称之为过拟合或者高方差。而中间的函数则具有普遍性,虽然不是对于每个数据都完美拟合,但是可以对没出现的数据有一个很好的预测。
选择相对较好的模型的顺序:方差小,偏差小 > 方差小,偏差大 > 方差大,偏差小 > 方差大,偏差大。
方差小,偏差大之所以在实际中排位相对靠前,是因为它比较稳定。很多时候实际中无法获得非常全面的数据集,那么,如果一个模型在可获得的样本上有较小的方差,说明它对不同数据集的敏感度不高,可以期望它对新数据集的预测效果比较稳定。
解决过拟合
- 增大训练集数量
增大训练集的数量,但是有时候我们可能没有足够的训练集。
- 减少特征数量
选择真正需要的特征,减少多项式的指数,但是这样可能会丢弃一些真正需要的特征。
- 正则化
前面的减少特征数量就是将参数值
w
i
w_i
wi置为
0
0
0,但是正则化会柔和一些,可以将参数值减小,这样可以保留全部的特征。
正则化
我们使用均方误差和正则项相结合得到一个代价函数,通过均方误差来拟合数据,通过正则项来保证
w
j
w_j
wj参数不会太大,
b
b
b的选择对于最终结果没有影响,同时使用相同的
2
m
2m
2m缩放保证数量的改变不会产生影响。
同时引入了一个新的函数
λ
\lambda
λ和
α
\alpha
α的作用一样,当
λ
\lambda
λ过小时会过拟合,当
λ
\lambda
λ过大时会欠拟合,需要选择一个合适的值。
我们现在的梯度下降函数发生了改变,注意
w
j
w_j
wj由于其余的
w
j
w_j
wj求偏导为0,因此只有一个
w
j
w_j
wj和前面的
x
j
(
i
)
x_{j}^{(i)}
xj(i)一样。
对于逻辑回归,仅仅只是
f
w
⃗
,
b
(
x
)
f_{\vec{w},b}(x)
fw,b(x)发生了改变。