1、概述
现在开始学习算法了,从线性回归和逻辑回归开始。
2、线性回归概念
关于回归和分类的概念,我们在TensorFlow入门笔记第八讲有说过,这里直接复制过来,
分类问题:分类问题希望解决的是将不同的样本分到事先定义好的类别中,比如判断一个零件是否合格的问题就是一个二分类问题。手写体数字识别问题是一个十分类问题(0~9十个数字)。
回归问题:回归问题解决的是对具体数值的预测。比如房价预测、销量预测等。这些问题所需要预测的不是一个事先定义好的类别,而是任意实数。解决回归问题一般只有一个输出节点,这个节点的输出值就是预测值。
3、线性回归示例
现在来举例,假设银行贷款的额度有某个算法,每个人贷款的额度只取决于他的工资和年龄,
那么,年龄(X1)和工资(X2)就是两个“特征”,预测贷款额度(Y)就是“标签”。
我们的目的是找到一条最优的拟合曲线,根据年龄和工资去预测贷款额度。
4、最小二乘法
假设θ1是年龄的参数,θ2是工资的参数,那么,得到拟合曲线的公式为,
真实值和预测值之间会存在一定差异,我们用ε来表示误差,则对于每个样本,
误差ε(i)是独立的,并且服从均值为0,方差为θ2的正态分布。
由于误差服从高斯分布,得,
下面先来说一下似然函数的概念,在数理统计中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性。似然性就是用于在已知某些观测所得到的结果时,对有关事务的性质的参数进行估计。
也就是,什么样的参数,跟我们的数据组合后,恰好是真实值。将上面的公式带入,得到,
上式为何要进行一个累乘?因为θ参数要满足所有的样本。因为累加比累乘容易计算,又由
所以,对上式求对数,得到对数似然,式子如下,
由于
和是常量,而我们希望似然函数越大越好,那么,就希望
越小越好,上式又称为最小二乘法。
还没完事啊,我们现在已经将问题简化到求最小二乘法的最小值,怎样求呢?让它偏导等于0不就是了嘛。先将最小二乘法展开,
对其求偏导,
得,
那么我们怎么评估预测值与真实值的差距呢?一般常用R2来评估,式子如下,
R的值越接近1,说明模型拟合的越好。
5、梯度下降法
TensorFlow中有讲过梯度下降法,其实它也是寻找一个参数θ使得J(θ)最小。最小二乘法的θ不一定有解,所以一般机器学习都是用梯度下降法,一步一步的迭代训练,经过大量的迭代以后,找到最优解。
这里说一下使用梯度下降常用的三种方法:
批量梯度下降:每次迭代都考虑所有样本,这样做容易得到最优解,但是速度很慢。
随机梯度下降:每次找一个样本,这样迭代的速度很快,但是不一定每次都朝着收敛方法,效果比较差。
小批量梯度下降法: 每次迭代选择一小部分数据来算,这样就达到了一个速度和效果的平衡,我们在TensorFlow中训练就是每次一个batch数据,一般来说,batch大一点,效果会比较好,但是实际应用中也要考虑内存和效率。
学习率的话,Tensorflow讲过了就不多说了,一般设置的小些,如果不能收敛或者收敛效果不好,可以试着将学习率再设置更小。
6、逻辑回归
逻辑回归其实是个经典的二分类算法。
我们从Sigmoid函数讲起,公式如下,
Sigmoid函数其实我们在Tensorflow第八讲的时候有讲过,在那一讲中,它是作为神经网络的激活函数。
我们再来看一下这个函数,它的变量取值是任意实数的,但是它的值域却为[0,1]。这样,我们就可以将线性回归中得到的预测值映射到Sigmoid函数中,这样就完成了从值到概率的转换,这个不就是分类任务了吗?我们将线性回归的预测值带入,得到,
对于二分类任务,有,
整合上式得到,
上式中,y=0或y=1.
对上式求似然函数,则有,
求对数似然数,则有,
因为上式要应用梯度上升求最大值,我们引入
将其转化为梯度下降任务,然后对上式求偏导得,
得到上式偏导以后,我们就可以用它来更新参数了,
上式中,α其实就是更新的步长,
是更新的方向,
说明要综合考虑所有的m个样本,其实就是一个小的batch。