-
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号或是2号品种都是错误的分类结果。
因此这类分类问题应该使用模型在测试数据集上的分类正确率
来衡量模型的好坏与否。
然而,我们的模型输入是浮点数,输出却是整数;同时另一方面整数的运算局限性比较大,模型内部需要使用浮点数类型的参数才能使得模型具有比较好的效果。
那么对于一个输出浮点数结果的模型,我们应该怎么样才能把输出对应到0,1,2这样离散的分类标签上去呢?
除了直接舍入这样直接的想法,课上所提到的Sigmoid
函数是一个好的例子,Sigmoid函数是一个的映射,能把任意的实数输出映射到上。
对于一个二分类问题,我们把模型输出经过Sigmoid之后落在范围的分类为分类为0号类别,落在)范围分类为1号类别,就得到的分类结果。
当然这样处理之后,整个模型和损失函数就都比较复杂,我们通常很难使用线性回归里那种直接得出解析解的方法求解最优参数。在实践中往往使用课上所讲的梯度下降这样利用数值计算
逼近的方法。
当然使用sklearn的API,你不用为以上一切烦心,上述所有背后的工作由编写这些库的人帮你做好了
Embedded Artificial Intelligence @ ZJU