监督学习内部分为分类问题(classification)和回归问题(regression)两类。分类问题的输出标签为离散值,回归问题可以理解为连续问题。
监督学习的关键在于得到一般化的(generalized)的模型,因为监督学习的目的是为了利用已知的训练集特征和标签/输出值来获得对未知的测试集进行尽可能准确的预测。因此会存在欠拟合或过拟合的问题。
Framework of Supervised Learning
- Validation data 和 test data的区别?
- Validation data是development data的一部分,必须是带有样本输出标签的数据。Validation data的主要作用是进行超参数调整以选出最佳模型参数,在调整参数的过程中用于不同参数表现的评估
- Test data是在选定最终模型之后进行模型评估的数据集。Test data用于评估被选中的模型在真实数据集上的表现,即上文提到的generalize的能力。
- 无监督学习能否使用该流程?
- 不能。因为无监督学习没有带输出标签的数据,无法实现上述的调参模式。
Development-test split
主要有三种划分测试集的方法:
- Random Splitting: 直接从数据集中抽取所需比例的随机数据作为测试集
- Stratified Splitting: 从不同的输出标签集合中等比例进行测试数据的抽取。较为不平衡的数据可以通过分层抽样实现测试集的样本平衡
- Structured Splitting: 按照某一顺序对数据进行分类,适用于时间序列数据。防止使用时间靠后的数据进行训练而“预测"过去发生的事情出现数据泄漏的情况(data leakage)
Hyperparameter tuning
超参数指的是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。比如决策树模型中数的最大深度,KNN模型中k的值。超参数的选取和模型的复杂程度有直接的关系。同样以决策树为例,如果设定的最大深度过大以实现叶节点的purity,则可能会使模型出现过拟合的现象。
常用的选择超参数/超参数组合的方法有Grid Search & Random Search (网格搜索或随机搜索)及Bayesian Optimization (贝叶斯优化)(见下一小节)
进行超参数调整的最终目的是为了实现模型的优化和选择。主要的模型选择及验证集构建的方法有如下几种:
- Three-way holdout: 最朴素的将数据集拆分为构建集和测试集,再将构建集拆分为训练集和验证集的方法。利用训练集和验证集进行超参数调整和模型选择
- K-fold CV (K折交叉验证):将构建集随机等分成k份,每次选取1份作为验证集并用剩余k-1份进行训练,输出的训练结果为k次验证的平均表现。结合前述数据集划分的不同方式,k折交叉验证也可以适用于stratified sampling。
- Leave-one-out CV :即k折交叉验证中K=构建集数据总数n的特例。相当于每次拿n-1的数据进行训练并使用1条数据进行验证,以最大化训练集的数目。
Grid Search & Random Search
网格搜索(Grid Search):本质上是穷举法,即预先给出各个参数的有限集/取值列表进行组合训练,选出验证集误差最小的超参数作为最好的超参数。方法的弊端十分明显,即当超参数备选集取值增加时复杂度是指数级别增长的,因此一般只能适用于优化三个或者更少数量的超参数;此外网格搜索针对非凸问题易得到局部最优解。
随机搜索(Random Search):随机搜索会尝试 n 次的随机猜测,每次尝试的过程如下:
- 在超参数的预设区间内生成一个随机解
- 随后使用成本函数评估成本
- 与目前为止的最优解比较成本,如果成本更低则更新最优解及最优成本。
- 虽然随机搜索得到的结果互相之间差异较大,但是实验证明随机搜索的确比网格搜索效果要好。
在实际操作中可以通过组合两种搜索算法的方式来获得更优表现:首先使用随机搜索确定表现较好的超参数区间,在缩小范围内进行网格搜索以快速获得最优解
Bayesian Optimization
假设一组超参数组合是(表示某一个超参数的值),不同超参数会得到不同效果,贝叶斯优化假设超参数与最后我们需要优化的损失函数存在一个函数关系,而我们需要找到使得该函数取值最大的。
与上面的两种方法相比,贝叶斯优化最大的不同点是考虑了之前的参数信息并不断更新先验。