机器学习理论推导——梯度下降和逻辑回归
下面介绍梯度下降法:
假设一个线性模型:
为了便于描述,定义:
我们需要选择合适的参数θ0和θ1,使得h(x)和样本中的y尽可能接近。
统计学中,利用最小二乘法可以得到两个参数的解析解:
但是我们将使用计算机科学的常用思想:迭代来求出这两个值,因为在这里模型的简单使得我们非常容易地计算出解析解。实际中我们的模型可能非常复杂,无法求出解析解,因此使用迭代思想是一种通用的解法。
我们的目标和最小二乘法一致,求出代价函数(cost function):
的最小值,即:
迭代的具体操作是梯度下降法,就是循环调用:
直到收敛,就是θj不再变化,那么必然是J(θ)的导数趋近0了。从高等数学中我们得知,导数为零,一般意味着这一点是一个极值,因为J(θ)恒非负,所以这是个最小值。
我们还注意到,需要设置参数α的值,它体现收敛的快慢,应该不断尝试不同的值,达到最好效果。
导数计算的代数式为:
接下来只需要重复计算,直到收敛:
以上就是梯度下降法的基本过程,当然,我们可以把模型拓展到多变量,即:
然后同样是重复计算,直到收敛:
以上是梯度下降的所有内容,下面是介绍怎样分类,分类是一个非0即1的要求,我们将使用逻辑回归(Logistics Regression)的方法。
我们对之前的模型,做一些改变:
注意到我们使用了x1,x2两个样本输入变量,然后做了一个“包装”:g(z)函数,这个函数就是sigmoid函数:
这是一个定义域在实数域,值域在(0,1)的函数,关于它的详细讨论,见为什么 LR 模型要使用 sigmoid 函数,背后的数学原理是什么?
我们现在只需要明白,为了分类的需求,模型需要算出学习样本一个分类,值在0,1之间,然后这个概率要和学习样本输入的分类(就是这个样本是哪一类?0还是1)尽可能接近。
根据概率论知识,这是一个离散型随机变量的(0-1)分布:
其中0<hθ(x)<1,y=0,1
现在给定一组样本数值(x1,x2...)(观察值),我们在参数θ的条件下,希望这组x的输入,得到的y为输入的y(0或1)的概率尽可能大,那么需要给出θ的估计值,用最大似然估计,似然函数是:
接下来求这个函数的最大值,取对数:
接下来使用梯度下降的方法,因为需要最小化代价,定义代价函数为:
求导数:
然后梯度下降:
这样就求出了每个θ的最大似然估计值,将估计出的每个θ代入模型,完成逻辑回归。
之后就可以输入x,得到y的值,判断它属于0的那一类还是1的那一类。