机器学习三要素之数据、模型、算法

一般一个模型是通过如下过程获得:

即算法通过在数据上进行运算产生模型。

下面我们从数据,模型,算法上来深入分析机器学习的过程。

数据

我们都知道,机器学习需要大量的数据来训练模型,尤其是训练神经网络。在进行机器学习时,数据集一般会被划分为训练集测试集,很多时候还会划分出验证集

数据集的划分一般有三种方法:

  • 按一定比例划分为训练集和测试集

这种方法也称为保留法。我们通常取8-2、7-3、6-4、5-5比例切分,直接将数据随机划分为训练集和测试集,然后使用训练集来生成模型,再用测试集来测试模型的正确率和误差,以验证模型的有效性。这种方法常见于决策树、朴素贝叶斯分类器、线性回归和逻辑回归等任务中。

  • 交叉验证法

交叉验证一般采用k折交叉验证,即k-fold cross validation,往往k取为10。在这种数据集划分法中,我们将数据集划分为k个子集,每个子集均做一次测试集,每次将其余的作为训练集。在交叉验证时,我们重复训练k次,每次选择一个子集作为测试集,并将k次的平均交叉验证的正确率作为最终的结果。

  • 训练集、验证集、测试集法

首先将数据集划分为训练集和测试集,由于模型的构建过程中也需要检验模型,检验模型的配置,以及训练程度,过拟合还是欠拟合,所以会将训练数据再划分为两个部分,一部分是用于训练的训练集,另一部分是进行检验的验证集。验证集可以重复使用,主要是用来辅助构建模型的。训练集用于训练得到神经网络模型,然后用验证集验证模型的有效性,挑选获得最佳效果的模型,直到我们得到一个满意的模型为止。最后,当模型“通过”验证集之后,我们再使用测试集测试模型的最终效果,评估模型的准确率,以及误差等。测试集只在模型检验时使用,绝对不能根据测试集上的结果来调整网络参数配置,以及选择训练好的模型,否则会导致模型在测试集上过拟合。

模型

模型是机器学习的结果,这个学习过程,称为训练(Train)。一个已经训练好的模型,可以被理解成一个函数: y=f(x)。我们把数据(对应其中的 x)输入进去,得到输出结果(对应其中的 y)。这个输出结果可能是一个数值(回归),也可能是一个标签(分类),但是这个模型是怎么得到的呢?

一般构建一个模型,我们需要经历以下步骤:

  • Step-1:数据准备。
    • Step-1.1 数据预处理:收集数据、清洗数据、标注数据。
    • Step-1.2 构建数据的向量空间模型(将文本、图片、音频、视频等格式的数据转换为向量)。
    • Step-1.3 将构建好向量空间模型的数据分为训练集、验证集和测试集。
  • Step-2:训练——将训练集输入给训练程序,进行运算。训练程序的核心是算法,所有输入的向量化数据都会按该训练程序所依据的算法进行运算。训练程序输出的结果,就是模型。
    • Step-2.1: 编写训练程序。
      • Step-2.1.1: 选择模型类型;
      • Step-2.1.2: 选择优化算法;
      • Step-2.1.3: 根据模型类型和算法编写程序。
    • Step-2.2: 训练 -> 获得临时模型。
    • Step-2.3: 在训练集上运行临时模型,获得训练集预测结果。
    • Step-2.4: 在验证集上运行临时模型,获得验证集预测结果。
    • Step-2.5: 综合参照 Step-2.4 和 Step-2.5 的预测结果,改进模型。
    • Step-2.6: Step-2.2 到 Step-2.5 反复迭代,直至获得让我们满意,或者已经无法继续优化的模型。

总之,模型获取的过程就是:根据已经被指定的 f(x) 的具体形式——模型类型,结合训练数据,计算出其中各个参数的具体取值的过程。

训练过程需要依据某种算法进行运算。下面就来看看算法。

算法

这里我们以有监督学习为例,有监督学习的目标就是:让训练数据的所有 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) 等等。其中最常用的是梯度下降法,我们下一节会专门讲解梯度下降法。敬请期待......

原文发布于微信公众号 - 人人都是极客(rrgeek)

原文发表时间:2018-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数说工作室

【分类战车SVM】第三话:最大间隔分类器

分类战车SVM (第三话:最大间隔分类器) 查看本《分类战车SVM》系列的内容: 第一话:开题话 第二话:线性分类 第三话:最大间隔分类器 第四话:拉格朗日对偶...

42610
来自专栏算法channel

Python神经网络| 一篇很棒的实战笔记,附源码

感谢粉丝:疯琴,以下分享是疯琴在学习《Python神经网络》时的笔记,总结得很棒,感谢疯琴的乐于分享精神,相信这篇笔记一定会帮助到大家。

2013
来自专栏李智的专栏

斯坦福CS231n - CNN for Visual Recognition(1)-lecture2图像分类、最近邻分类器

  顾名思义,就是给定一个图像,判断出它属于哪一个类。通常通过带有标签的数据作为训练集用各种方法进行训练, 然后在测试集上进行测试,预测出最可能的类别(标签)。

911
来自专栏weixuqin 的专栏

深度学习之 TensorFlow(四):卷积神经网络

3667
来自专栏梦里茶室

读论文系列:Object Detection NIPS2015 Faster RCNN

转载请注明作者:梦里茶 Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大...

3228
来自专栏人工智能

课后作业(二):如何用一个只有一层隐藏层的神经网络分类Planar data

来源:sandipanweb 编译:Bot 编者按:之前,论智曾在TOP 10:初学者需要掌握的10大机器学习(ML)算法介绍了一些基础算法及其思路,为了与该帖...

1956
来自专栏磐创AI技术团队的专栏

深度学习之视频人脸识别系列二:人脸检测与对齐

人脸检测解决的问题为给定一张图片,输出图片中人脸的位置,即使用方框框住人脸,输出方框的左上角坐标和右下角坐标或者左上角坐标和长宽。算法难点包括:人脸大小差异、人...

2732
来自专栏磐创AI技术团队的专栏

十分钟一起学会Inception网络

【磐创AI导读】:本文介绍了一些Inception网络的相关知识。想要获取更多的机器学习、深度学习资源。欢迎大家点击上方蓝字关注我们的公众号:磐创AI。

872
来自专栏深度学习计算机视觉

BP神经网络总结笔记

概念背景(来自百度百科) BP神经网络的代表者是D.Rumelhart和J.McCelland,“反向传播(backpropagation)”一词的使用出现在1...

2823
来自专栏机器学习、深度学习

跟踪算法基准--Tracking the Trackers: An Analysis of the State of the Art in Multiple Object Tracking

Tracking the Trackers: An Analysis of the State of the Art in Multiple Object Tr...

2856

扫码关注云+社区

领取腾讯云代金券