机器学习

分类

例如,当你看到一个人,你的脑子下意识判断他是学生还是社会上的人;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱、”之类的话,其实这就是一种分类操作。

分类的数学描述是什么呢?

其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。

最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBM)。

分类与回归(classification & regression)

分类和回归的区别在于输出变量的类型。

定量输出称为回归,或者说是连续变量预测; 定性输出称为分类,或者说是离散变量预测。

举个例子: 预测明天的气温是多少度,这是一个回归任务; 预测明天是阴、晴还是雨,就是一个分类任务。

过拟合与欠拟合

欠拟合(underfitting)

欠拟合是指模型不能在训练集上获得足够低的误差。模型复杂度低,模型在训练集上的表现就已经很差了,没法学习到数据背后的规律。

如何解决?

欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。但是如果真的还是存在的话,可以通过增加网络复杂度或者在模型中增加特征,这些都是很好解决欠拟合的方法。

过拟合(overfitting)

过拟合是指训练误差和测试误差之间的差距太大。模型复杂度高于实际问题,模型在训练集上表现很好,但在测试集上却表现很差。模型对训练集"死记硬背"(记住了不适用于测试集的训练集性质或特点),没有理解数据背后的规律,泛化能力差

为什么会出现过拟合现象?

  1. 训练数据集样本单一,样本不足。如果训练样本只有负样本,然后那生成的模型去预测正样本,这肯定预测不准。所以训练样本要尽可能的全面,覆盖所有的数据类型。

  2. 训练数据中噪声干扰过大。噪声指训练数据中的干扰数据。过多的干扰会导致记录了很多噪声特征,忽略了真实输入和输出之间的关系。

  3. **模型过于复杂。**模型太复杂,已经能够“死记硬背”记下了训练数据的信息,但是遇到没有见过的数据的时候不能够变通,泛化能力太差。我们希望模型对不同的模型都有稳定的输出。模型太复杂是过拟合的重要因素。

如何防止过拟合?

  1. 获取和使用更多的数据(数据集增强)——解决过拟合的根本性方法

    让机器学习或深度学习模型泛化能力更好的办法就是使用更多的数据进行训练。但是,在实践中,我们拥有的数据量是有限的。解决这个问题的一种方法就是创建“假数据”并添加到训练集中——数据集增强。通过增加训练集的额外副本来增加训练集的大小,进而改进模型的泛化能力。

  2. 采用合适的模型(控制模型的复杂度)

    对于CNN来说,层数越多效果越好,但是也更容易产生过拟合,并且计算所耗费的时间也越长。

  3. 降低特征的数量

    对于一些特征工程而言,可以降低特征的数量——删除冗余特征,人工选择保留哪些特征。这种方法也可以解决过拟合问题。

正则化(regularization)

就是消除特殊样本对模型构建的影响,使构建出满足大部分样本特征的模型。

损失函数(Loss Function)

损失函数

常用的损失函数

  • 方差损失 Mean Squared Loss

  • 平均绝对误差损失 Mean Absolute Error Loss

  • Huber Loss

  • 分位数损失 Quantile Loss

  • 交叉熵损失函数 Cross Entropy Loss

  • Hinge 损失 Hinge Loss

参考

Softmax

Softmax函数为每个输出分类的结果都赋予一个概率值, 参考

Last updated

Was this helpful?