首先我们需要一个假设函数,在图中(左上)的数据(红叉)大概能看出用一元函数(一条直线)就能拟合(用一元函数还有一个原因是入门简单),因此我们使用下图的函数作为假设函数。
假设函数(hypothesis ):这个函数是对训练模型的一个假设,需要根据训练数据的特征数量来确定假设函数(线性回归中是多元函数)是几元的。
其中,函数的元数代表了输入特征的数量, θ(theta)代表了每个特征的权重。θ0比较特殊,它被称为偏置量。
有了假设函数后,我们随机初始化它的权重。比如 theta0 = -1,theta1 = 2,那么我们的假设函数会被初始为h = 2 * x - 1,是不是相当的简单。
初始化出来的假设函数肯定预测能力很差,我们就需要一个标准来判断假设函数的预测能力。在线性回归中我们使用最小二乘损失函数(如下图)来评估它的预测能力,这个用来评估的函数被称之为损失函数(loss)或者代价函数(cost)。
其中,m代表训练数据的数量,h(x)代表假设函数的预测值,y代表训练数据的标签(正确值)。函数就是把数据集的每一条数据的预测值和正确值的差距做平方,把得到的值求和,再除以数据量的两倍。
这个线性回归的代价函数大概是上左图这样,代价函数是衡量模型好坏的标准,那么我们让模型变好的方法就是找到代价函数的最小值或局部最小值。 我们刚才初始化的假设函数h = 2 * x - 1,如果用这个代价函数进行计算,会得到一个比较大的值。说明现在的模型很差,怎么办呢?
我们就需要用梯度下降算法来解决这个问题。想法就是,对代价函数中的每个权重求偏导,偏导在这个点(目前的权重值)的值是正的,说明函数沿着这个这个方向递增,需要减小这个权重值。偏导是负的,则需要加上这个权重值。然后批量对每个权重进行更新,最终得到我们的最优解或局部最优解。下面则是这个算法的公式:
θj代表当前的权重值,α代表学习率,α后面是偏导函数
得到最优解后,我们的权重向量会到达左上图的最低点,也就是右上图(等高线图)中的红叉位置。将权重带入假设函数,就得到了我们的训练结果。
由于刚刚开始写博客,机器学习也刚入门,有错误的地方请多多指教。