智客公社

标题: 机器学习三要素之数据、模型、算法 [打印本页]

作者: 宁莹莹    时间: 2018-10-15 12:21
标题: 机器学习三要素之数据、模型、算法
一般一个模型是通过如下过程获得:
[attach]52159[/attach]

算法通过在数据上进行运算产生模型
下面我们从数据,模型,算法上来深入分析机器学习的过程。


数据
我们都知道,机器学习需要大量的数据来训练模型,尤其是训练神经网络。在进行机器学习时,数据集一般会被划分为训练集测试集,很多时候还会划分出验证集
数据集的划分一般有三种方法:
这种方法也称为保留法。我们通常取8-2、7-3、6-4、5-5比例切分,直接将数据随机划分为训练集和测试集,然后使用训练集来生成模型,再用测试集来测试模型的正确率和误差,以验证模型的有效性。这种方法常见于决策树、朴素贝叶斯分类器、线性回归和逻辑回归等任务中。
交叉验证一般采用k折交叉验证,即k-fold cross validation,往往k取为10。在这种数据集划分法中,我们将数据集划分为k个子集,每个子集均做一次测试集,每次将其余的作为训练集。在交叉验证时,我们重复训练k次,每次选择一个子集作为测试集,并将k次的平均交叉验证的正确率作为最终的结果。
首先将数据集划分为训练集和测试集,由于模型的构建过程中也需要检验模型,检验模型的配置,以及训练程度,过拟合还是欠拟合,所以会将训练数据再划分为两个部分,一部分是用于训练的训练集,另一部分是进行检验的验证集。验证集可以重复使用,主要是用来辅助构建模型的。训练集用于训练得到神经网络模型,然后用验证集验证模型的有效性,挑选获得最佳效果的模型,直到我们得到一个满意的模型为止。最后,当模型“通过”验证集之后,我们再使用测试集测试模型的最终效果,评估模型的准确率,以及误差等。测试集只在模型检验时使用,绝对不能根据测试集上的结果来调整网络参数配置,以及选择训练好的模型,否则会导致模型在测试集上过拟合。


模型
[attach]52160[/attach]

模型是机器学习的结果,这个学习过程,称为训练(Train)。一个已经训练好的模型,可以被理解成一个函数: y=f(x)。我们把数据(对应其中的 x)输入进去,得到输出结果(对应其中的 y)。这个输出结果可能是一个数值(回归),也可能是一个标签(分类),但是这个模型是怎么得到的呢?
一般构建一个模型,我们需要经历以下步骤:
总之,模型获取的过程就是:根据已经被指定的 f(x) 的具体形式——模型类型,结合训练数据,计算出其中各个参数的具体取值的过程。
训练过程需要依据某种算法进行运算。下面就来看看算法。


算法
[attach]52161[/attach]

这里我们以有监督学习为例,有监督学习的目标就是:让训练数据的所有 x 经过 f(x) 计算后,获得的 y’ 与它们原本对应的 y 的差别尽量小。
我们需要用一个函数来描述 y’ 与 y 之间的差别,这个函数叫做损失函数(Loss Function)L(y, y’)= L(y, f(x))。
损失函数针对一个训练数据,对于所有的训练数据,我们用代价函数(Cost Function)来描述整体的损失。代价函数一般写作:J(theta)——注意,代价函数的自变量不再是 y 和 f(x),而是变成了 theta,theta 表示 f(x) 中所有待定的参数(theta 也可以是一个向量,每个维度表示一个具体的参数)。至此,我们终于得到了一个关于我们真正要求取的变量(theta)的函数。而同时,既然 J(theta) 被成为代价函数,顾名思义,它的取值代表了整个模型付出的代价,这个代价自然是越小越好。
因此,我们也就有了学习的目标(也称为目标函数):argmin J(theta)—— 最小化J(theta)。
能够让 J(theta) 达到最小的 theta,就是最好的 theta。当找到最好的 theta 之后,我们把它带入到原 f(x),使得 f(x) 成为一个完整的 x 的函数,也就是最终的模型函数。怎么能够找到让 J(theta) 最小的 theta 呢?这就需要用到优化算法了。


具体的优化算法有很多,比如:梯度下降法(Gradient Descent),共轭梯度法(Conjugate Gradient),牛顿法和拟牛顿法,模拟退火法(Simulated Annealing) 等等。其中最常用的是梯度下降法,我们下一节会专门讲解梯度下降法。敬请期待......


【推荐阅读】






轻轻一扫  欢迎关注~
[attach]52162[/attach]
如果觉得好,请

转发
转发
转发




欢迎光临 智客公社 (http://bbs.cnaiplus.com/) Powered by Discuz! X3.4