-
Notifications
You must be signed in to change notification settings - Fork 0
FAQs on Lab2
指的是像我们提到的线性回归这样的模型。我们在训练模型时必须提供输入和输出,不断调整我们模型的参数,使得模型对训练数据的输入预测的结果去往训练数据的输入上靠近
一般来说,线性回归解决的问题是值是“连续”的问题。我们对于输入X和对应的结果y,我们希望得到一个映射。
既然是线性回归,那我们当然是用线性函数作为我们的模型,这里的线性不再局限于一次的函数,而是广义的“线性映射”
其中y是输出,X是输入,w和b都是模型参数,为了方便起见我们通常会令,这样模型可以写成
这样一个纯粹的矩阵乘法的形式
由于模型的输出是连续的值,因此我们选用平方误差,可以比较好地反应模型输出和训练数据地输出之间地误差。
假如你懂得矩阵求导,那么我们的损失函数可以写成
求导得到
使得损失函数最小的参数即为
Logistic回归解决的是分类的问题,我们希望得到的是一个的映射。
比如sklearn官方所给样例中有Iris花这个数据集,对于每一张花的图片都标识了其属于哪一个品种,并使用标签
这样离散的整数标签来作为模型的输出。
因此大家可以想象到,在这里,单纯地使用模型输出在“数值”上有多接近训练数据集所给的标签其实是没有意义的。对于一朵0号品种花的图片,你的模型分类为1号品种并不能说明任何问题。 因此这类分类问题应该使用模型在测试数据集上的分类正确率来衡量模型的好坏与否。
然而,我们的模型输入是浮点数,输出却是整数;另一方面整数的运算局限性比较大,模型内部需要使用浮点数类型的参数才能使得模型具有比较好的效果,那么模型输出浮点数的结果,我们应该怎么样才能对应到0,1,2这样离散的分类标签上去呢?
课上所提到的Sigmoid函数是一个好的例子,Sigmoid函数是一个的映射,能把任意的实数输出映射到
上。
那么在二分类问题中,我们就可以假设模型输出经过Sigmoid之后落在
分类为0号类别,落在
)分类为1号类别。当然这样处理之后,整个模型就比较复杂,我们通常很难使用线性回归里那种直接得出解析解的方法,而是往往使用课上所讲的梯度下降这样利用数值计算逼近的方法。
当然使用sklearn的API,你不用为以上一切烦心,背后的工作由编写这些库的人帮你做好了
Embedded Artificial Intelligence @ ZJU