第四篇:《机器学习之逻辑回归(上)》
看不懂的同学可以看看先前的文章掌握基础概念
“深入浅出强大的逻辑回归”
(简化版未包含正则化计算)
线性回归 逻辑回归
前面我们学习了线性回归,它通过输入一个样本的所有特征,然后和参数计算得到了自己的预测值,再通过梯度下降完成代价函数的最小化。
可以理解:线性回归可以对于连续值进行一定的预测,在它的基础上发展而来的逻辑回归可以用来解决分类的问题,以至于一定复杂度的合理的神经网络可以拟合任何复杂的数据和解决复杂的多分类问题。
线性回归的算法
虽然逻辑回归也有回归二字,但它本质上是用来解决分类问题的,比如判断一封信是否是垃圾信息,或者数据分组,一图胜千言,如图。
它可以很好地分类非线性数据,甚至是这样的
线性回归的机制是调参让预测值与真实值拟合,以获得预测数据分布走向的能力。
事实上,让线性回归的预测值不用再拟合真实值,而是拟合数据的类别就是逻辑回归了。
简单来说,如上图,图中每一个点代表一个样本,它有两个参数,分别是横轴与纵轴的坐标值,这个样本的真实值便是它的类别(红色/绿色)用0或1表示,左下角的红点可以表示为( 0.1 , 0.45 , 0 ),将0.1和0.45输入到模型中结合参数运算得到一个预测值让它和类别值(0 / 1)计算误差,然后梯度下降就可以做出很准确的判断了。
注意,这个预测值可能远大于或者远小于类别值,直接计算误差是错误的,有没有什么办法可以将预测值映射到0—1之间的分布函数上呢?这样就可以得出它是0或1的概率值,然后计算概率的差值得到代价函数来梯度下降。
数学家帮助我们解决了困惑,这个函数叫作Sigmoid
Sigmoid函数:当z=0时,函数值为0.5;z越往两端,函数值越收敛于0和1。
我们通过一个例子来整理一下逻辑回归的使用:某车间生产了一批芯片,对每块芯片检测两项指标x1和x2(横纵轴),以及它的优/劣情况(蓝色/黄色)如图。
工程师们测试发现,好芯片分布在这样的范围内:
我们通过每个芯片的( x1 , x2 , y )来训练逻辑回归的模型,将来就可以自动化分类了。
逻辑回归算法流程
第一步:建立方程
Z=θ0*X0 θ1*X1 θ1*X2代入Sigmoid得到g(z),
这里使用了矩阵计算的思想,可以批量计算(速度远远超过for循环)
下一篇将介绍关于并行计算所有样本的方法,
你可以感受到使用numpy矩阵运算的简洁与强大。
第二步:计算逻辑回归的代价函数
我们知道线性回归的代价函数形式是这样的
但是如果逻辑回归也这样计算,代价函数会变成这样
有很多的局部最优解,没有办法用梯度下降得到全局最优
所以我们修改逻辑回归的代价函数的计算式:
可以看到在y=1和y=0是都是平滑的:
综上得到逻辑回归的代价函数
感兴趣的同学可以对公式简单推导看看
这样可以让代价函数平滑
第三步:梯度下降 参数更新
现在我们有了更好的代价函数,可以使用梯度下降来最小化它,使用梯度下降的方法如下,每次自减误差对自己求的偏导乘上学习率(参见上一篇《代价函数与梯度下降》),这个学习率也是很重要的参数,对优化的速度有很大影响。
化简得到
第四步:设置训练次数直到拟合
第五步:用新样本测试模型的准确率
本篇加入了大量的新公式,希望大家深入学习
下一篇:将详细讲解如何用代码实现本篇公式,并通过逻辑回归制作简单的分类器来识别图片中的猫
科普:
图片是由三张二维的数组构成的,分别代表红/绿/蓝三色在各个像素位置上的值,目前的图像识别领域最先进的方法是卷积神经网络,将一张图片先一层层地卷积再池化处理,然后输入全连接的深层神经网络训练参数。