机器学习十大算法(四)逻辑回归 (本质,极大似然估计)

概念

假设有一个二分类问题,输出为y∈{0,1},而线性回归模型产生的预测值为z=wTx+b是实数值,我们想有一个理想的阶跃函数来帮我们实现z值到0,1的转化。

然而该函数不连续,我们希望有一个单调可微的函数来供我们使用,于是遍找到了sigmoid来替代。

两者的图像如下图所示:

有了Sigmoid之后,由于其取值在[0,1],我们就可以将其视为类1的后验概率p(y=1|x)。说白了,就是如果有了一个测试点x,那么就可以用Sigmoid算出来的结果来当做该点x属于类别1的概率大小。于是,非常自然地,我们把sigmoid计算得到的值大于等于0.5的归为类别1,小于0.5的归为类0.

逻辑回归与自适应线性网络

逻辑回归与自适应线性网络非常相似,两者的区别在于逻辑回归的激活函数为sigmoid,而自适应线性网络的激活函数为y=x,两者的网络结构如下:

1.逻辑回归:

2.自适应线性网路

逻辑回归的代价函数

1.首先模仿线性回归的做法,利用误差平方和来当代价函数。

其中i表示第i个样本点。

我们会发现这是一个非凸函数,这就意味着代价函数有着许多局部最小值,这不利于我们求解。(???

(下图为凸函数与非凸函数)

2. 换一个思路,前面我们提到了ϕ(z)可以视为类1的后验估计,所以我们有

其中,p(y=1|x;w)表示给定w,那么x点y=1的概率大小。

上面两式可以写成一般式:

接下来我们就要用极大似然估计来根据给定的训练集估计出参数w:

为了简化运算,我们对上面这个等式的两边都取一个对数:

我们现在要求的是使得l(w)最大的w。在l(w)加个负号就变成最小的了。

为了理解这个代价函数,我们不妨拿一个例子的来看看:

也就是说:

如下图所示:

从图中不难看出,如果样本的值是1的话,估计值ϕ(z)越接近1付出的代价就越小,反之越大;

同理,如果样本的值是0的话,估计值ϕ(z)越接近0付出的代价就越小,反之越大。

利用梯度下降法求参数

在开始梯度下降之前,sigmoid有一个很好的性质,就是:

ϕ′(z)=ϕ(z)(1−ϕ(z))

还有我们需明确,梯度的负方向就是代价函数下降最快的方向。借助于泰勒展开,我们有:

f(x+δ)−f(x)≈f′(x)⋅δ

其中,f′(x)和δ为向量,那么这两者的内积就等于:

f′(x)⋅δ=||f′(x)||⋅||δ||⋅cosθ

当θ=π时,也就是δ在f′(x)的负方向上时,取得最小值,也就是下降的最快的方向。

下降过程:

其中,wj为第j个特征的权重;η为学习率,用来控制步长。

所以,在使用梯度下降法更新权重时,只要根据下式即可:

当然,在样本量极大的时候,每次更新权重会非常耗费时间,这是可以采用随机梯度下降法,这时每次迭代时需要将样本重新打乱,然后用下式不断更新权重。

也就是去掉了求和,而是针对每个样本点都进行更新。

猜你喜欢

转载自blog.csdn.net/zonglinzonglin/article/details/82025808