machine learning 机器学习入门(三)

分类和逻辑回归

在之前说过了线性回归的一些问题,线性回归常常用在一些预测值为连续的情况下,但生活中有的结果是以离散的形态分布的,比如下雨还是不下雨,浏览到新闻会点击还是不会点击,看到商品买还是不买,这些都是有特定的结果类别的,我们称这一类问题为分类问题

对于二元分类的问题,从线性的角度来看,最终的预测值依然是连续的,但我们可以对于预测的值设定一个阈值,当预测值超过这个值则另结果为1,否则为0,因为y ∈ {0, 1},所以我们的模型函数h_{\theta}(x)最终的值也在0和1之间,我们用sigmoid(logistic) function来表示这个函数

其中

函数图像如下

z\rightarrow -\inftyg(z)\rightarrow 0

z\rightarrow \inftyg(z)\rightarrow 1

对分类模型做一些统计学假设

更简洁的可以写为:

可以分别代入0和1验证上面的式子,上面这个式子其实是一个指数族的分布的形式,在后面的内容会进行讲解

假设m个训练样本都是独立的,所以可以按照下面的形式写参数的似然函数

和之前的似然函数处理方式一样,这里也取对数方便计算

同样,我们还是需要求最大似然,因为这里是求最大值,所以采用梯度上升算法求最大似然。定义梯度上升的更新规则如下。

对似然函数求导数

利用了sigmoid函数中的性质  得到了最终的上升规则

感知器学习算法

对逻辑回归方法修改一下,“强迫”它输出的值要么是 0 要么是 1。要实现这个目的,很自然就应该把函数 g 的定义修改一下,改成一个阈值函数(threshold function)

如果我们还像之前一样令 hθ(x) = g(θT x),但用刚刚上面的阈值函数作为 g 的定义,然后如果我们用了下面的更新规则:

这样我们就得到了感知器学习算法。

牛顿方法

上面讲的是梯度上升求的最大似然,实际上在某些情况下,存在一种比梯度迭代更快收敛的一种迭代方法,即牛顿方法。

下面是对牛顿法的图解: 

在最左边的图里面,可以看到函数 f 就是沿着 y=0 的一条直线。这时候是想要找一个 θ 来让 f(θ)=0。这时候发现这个 θ 值大概在 1.3 左右。加入咱们猜测的初始值设定为 θ=4.5。牛顿法就是在 θ=4.5 这个位置画一条切线(中间的图)。这样就给出了下一个 θ 猜测值的位置,也就是这个切线的零点,大概是2.8。最右面的图中的是再运行一次这个迭代产生的结果,这时候 θ 大概是1.8。就这样几次迭代之后,很快就能接近 θ=1.3。 

证明如下:

f'(\theta^{(0)})=\frac{f(\theta^{(0)})}{\Delta }

\Delta =\frac{{}f(\theta^{(0)})}{f'(\theta^{(0)})}

\theta^{(1)}=\theta^{(0)}-\Delta =\theta^{(0)}-\frac{{}f(\theta^{(0)})}{f'(\theta^{(0)})}

所以通过令f(θ) = l′(θ)=0,咱们就可以同样用牛顿法来找到 l 的最大值,然后得到下面的更新规则:

同样,这个规则也可以从泰勒展式中推出:

若f(x)二阶导连续,将f(x)在xk处Taylor展开

最后,在咱们的逻辑回归背景中,θ 是一个有值的向量,所以我们要对牛顿法进行扩展来适应这个情况。牛顿法进行扩展到多维情况,也叫牛顿-拉普森法(Newton-Raphson method),如下所示:

牛顿方法通常都能比梯度下降法速度更快,因为在牛顿方法的更新规则中,误差变为了之前的平方,收敛更快(即具有二次收敛的特性)


so cool!

发布了23 篇原创文章 · 获赞 21 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38440882/article/details/83057447