找回密码
 立即注册
搜索

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

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

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


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

  • 按一定比例划分为训练集和测试集
这种方法也称为保留法。我们通常取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) 等等。其中最常用的是梯度下降法,我们下一节会专门讲解梯度下降法。敬请期待......


【推荐阅读】






轻轻一扫  欢迎关注~

如果觉得好,请

转发
转发
转发

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies