本章目录
-
1、机器学习的定义
-
2、有监督、无监督、强化学习
-
3、数据集划分
-
4、交叉验证
-
5、过采样与欠采样
-
6、损失函数
-
7、参数/超参数
-
8、偏差与方差
-
9、过拟合与欠拟合
-
10、正则化
-
11、模型评估指标
-
12、学习曲线
1、机器学习的定义
机器学习有下面几种定义:
-
机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。
-
机器学习是对能通过经验自动改进的计算机算法的研究。
-
机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。
维基百科对机器学习的定义如下:
机器学习是人工智能的一个分支。人工智能的研究历史有着一条从以“推理”为重点,到以“知识”为重点,再到以“学习”为重点的自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径之一,即以机器学习为手段,解决人工智能中的部分问题。机器学习在近30多年已发展为一门多领域科际整合,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。
2、有监督、无监督、强化学习
根据预期输出和输入类型,可以分为 3 种:
-
-
-
学习类型
|
说明
|
常见问题
|
常用算法
|
举例
|
监督学习
|
输入数据带有标签。监督学习建立一个学习过程,将预测结果与 “训练数据”(即输入数据)的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。
|
分类和回归问题
|
决策树、贝叶斯分类、最小二乘回归、逻辑回归、支持向量机、神经网络等
|
用邮件内容预测是否为垃圾邮件(分类);预测房价(回归)
|
非监督学习
|
输入数据没有标签,而是通过算法来推断数据的内在联系。
|
聚类和关联规则学习等
|
独立成分分析、K-Means 和 Apriori 算法等
|
客户细分(聚类);购物篮分析(关联规则学习)
|
强化学习
|
输入数据作为对模型的反馈,强调如何基于环境而行动,以取得最大化的预期利益。与监督式学习之间的区别在于,它并不需要出现正确的输入 / 输出对,也不需要精确校正次优化的行为。强化学习更加专注于在线规划,需要在探索(在未知的领域)和遵从(现有知识)之间找到平衡。
|
游戏AI、机器人控制、资源管理
|
Q-learning、Deep Q Network、Policy Gradient等
|
训练一个游戏AI(如AlphaGo);自动驾驶汽车的决策系统
|
3、数据集划分
在机器学习预测任务中,我们需要对模型泛化误差进行评估,选择最优模型。如果我们把所有数据都用来训练模型的话,建立的模型自然是最契合这些数据的,测试表现也好。但换了其它数据集测试这个模型效果可能就没那么好了。为了防止过拟合,就需要将数据集分成
训练集
(train set),
验证集
(validation set),
测试集
(test set)
它们的作用分别是:
有一个比喻十分形象,训练集就像高三学生的练习册,验证集就像高考模拟卷,测试集就是最后真正的考试。
4、交叉验证
交叉验证(Cross Validation)用来验证学习器性能的一种统计分析方法,基本思想是重复的使用数据,把得到的样本数据进行切分,组合为不同数据集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。
交叉验证在很多教材和文章中概念有些乱。主要有三种说法:
-
李航老师的《统计学习方法》中模型选择方法分为两类,一个是正则化,一个是交差验证,交叉验证又分为简单交叉验证、s折交叉验证、留一交叉验证。
-
周志华老师的《机器学习》中,模型评估有三种方式,留出法、交叉验证(分为 k 折交叉验证和留一法)、自助法。
-
sklearn 官方文档中,train_test_split 作为留出法的实现方式,而交叉验证进行数据集划分(迭代器)又分为K折(KFold)、p 次 k 折交(RepeatedKFold)、留一(LeaveOneOut )、留 p(LeavePOut)、随机(ShuffleSplit)等等
留出法/简单交叉验证
留出法是最简单的数据集划分方式,随机的将样本数据分为两部分(比如:70% 的训练集,30% 的测试集),然后用训练集来训练模型,在测试集上选择模型及参数。然后再把样本打乱,重新选择训练集和测试集,继续训练数据和检验模型。最后选择损失函数评估最优的模型和参数。
k 折交叉验证
k 折交叉验证把样本数据随机的分成k份,每次随机的选择 k-1 份作为训练集,剩下的1份做测试集。当这一轮完成后,重新随机选择 k-1 份来训练数据。若干轮(小于 k)之后,选择损失函数评估最优的模型和参数。k 一般取 10,数据量大的时候,k可以设置的小一些;数据量小的时候,k 可以设置得大一些。
5、过采样与欠采样
过采样(Oversampling)与欠采样(Undersampling)是处理数据不平衡问题的两种常见策略。在机器学习中,我们经常会遇到数据不平衡的问题,即目标变量(或者类别)的某一类别样本量远大于其他类别。例如,在一份信用卡欺诈检测的数据集中,欺诈事件(正例)可能只占总样本的1%,而正常事件(负例)可能占99%。这种情况下,如果直接使用这份数据训练模型,模型可能会偏向于预测大多数的类别,这就会导致类别不平衡问题。
这个时候,我们可以通过过采样或者欠采样来处理这个问题。
过采样
过采样是指通过增加少数类别的样本数量使得两个类别的样本数量相等或者接近。最常见的过采样方法是随机过采样,即随机复制少数类别的样本来增加其数量。然而,这种方法可能会导致模型过拟合。另一种更加普遍的过采样方法是SMOTE(Synthetic Minority Over-sampling Technique)。SMOTE通过对少数类别样本进行插值来创建新的样本,而不仅仅是复制已有的样本。
欠采样
相反,欠采样是通过减少多数类别的样本数量来解决类别不平衡问题。最常见的欠采样方法是随机欠采样(Random Undersampling),即随机删除多数类别的样本。然而,随机欠采样可能会导致信息丢失,因为它删除了一部分多数类别的样本。
结合过采样和欠采样
过采样和欠采样都有各自的优点和缺点,选择哪种策略取决于具体的应用环境和数据集。在一些情况下,我们可能会结合过采样和欠采样来达到最好的效果。例如,我们可以先对多数类别进行欠采样,然后再对少数类别进行过采样。这样做可以防止过采样引入的噪声影响到多数类别的样本。
6、损失函数
损失函数(Loss Function)是在监督学习中一个非常核心的概念,它用来衡量模型预测值与实际值之间的差距。通过最小化损失函数,我们可以找到最优的模型参数。
常见的损失函数有均方误差(MSE,常用于回归问题)、平均绝对误差(MAE,对异常值更鲁棒)、交叉熵损失(常用于分类问题)等,针对不同的任务,选择合适的损失函数至关重要。
在机器学习中,优化方法是核心,它们被用来最小化损失函数,从而优化模型的性能。以下是一些常见的优化方法:
-
梯度下降(Gradient Descent)
:这是最常见的优化方法,它通过计算损失函数的梯度并按照梯度的反方向更新模型参数来降低损失函数的值。这种方法有多种变体,如批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-batch Gradient Descent)。