逻辑函数我们知道,它是一种常见的S型函数,本来是用于研究人口增长模式的。它的公式和对应的形状也很简单:
把线性方程代入逻辑函数,得到的就是我们逻辑回归算法的预测函数:
相当于线性函数是逻辑回归的核函数。至于能不能用其他的函数作为核函数,我想也是可以的吧,只要定义合理,不过线性函数肯定是最简单的。
有了预测函数还不行,机器学习关键在于学习,而学习的关键就是损失函数,一个定义良好的损失函数是非常重要的。
既然逻辑函数对应是一个曲线,那我们首先想到的就是类似线性回归一样,直接将损失定义为所有样本的模型误差的平方和,类似如下:这个定义很简单,很容易理解,可是这个并不是一个非凸函数(关于凸函数,有机会再讲),存在很多局部极小值,很难应用类似梯度下降的算法求解。因此,我们需要一个更好的定义。
横轴是预测值(取值在0和1之间),纵轴是损失。当实际值y=1时,我们看左图,预测值越接近1(就是越接近真实值),则损失自然越小,反之损失越大。当实际值y=0时,也是一样解读。可见这个定义是符合损失的定义的。我们把所有样本的损失汇总到一起,就是模型的总损失:
其中m是样本总量,取均值就是为了损失更加通用且方便比较。这个推导过程涉及比较多的微积分知识,不过还好并不算复杂,细心点应该还是能推导出来的。关键的是下面两点:
等号左边是损失函数J对第j个参数theta求偏导数,等号右边的m是样本总量,上标i表示第i个样本,下标j表示第j个参数对应的特征的值。
这是更新参数theta的迭代过程,上标t表示迭代次数。把前面得到的梯度结果代入上式,就能得到完整的梯度下降迭代过程。