机器学习模型评估步骤
深度学习数据准备
特征工程
过拟合
解决机器学习问题的一般性流程
机器学习四分支二分类、多分类以及回归问题都属于监督学习--目标是学习训练输入和对应标签之间的关系。
监督学习只是机器学习的冰山一角。机器学习主要分为4类:监督学习、非监督学习、半监督学习和强化学习。
最常见的机器学习类型---学习输入数据和对应标签之间的映射关系。当下几乎所有的深度学习应用都属于监督学习类型,比如ocr识别,语音识别,图像分类和机器翻译等。
尽管监督学习主要由分类和回归组成,也包括一些其他变种:
生成序列---给定图片,生成一个概括性的标题。序列生成可以看做一系列分类问题;
语法树预测---将句子生成对应的句法树;
物体检测---给定图片,在图片中圈出物体所在的矩形框;
等等。
非监督学习在没有对应标签的情况下,为了进行数据可视化、数据压缩、数据降噪或数据相关性分析对输入数据进行有趣的数据转换。数据降维和聚类是典型的非监督学习。
半监督学习一种特殊的监督学习。半监督学习是没有手工标签的监督学习。但是学习过程中仍然有标签(还是监督学习),但是标签是由启发性算法从输入数据中生成而来。
比如,自编码器就是常见的半监督学习。
强化学习中,agent(代理)接收关于环境的信息,然后选择可以最大化reward的动作。比如:神经网络查看网络游戏的屏幕,然后采取相应的动作--最大化得分。
当今,强化学习还处于研究阶段,还没有划时代的应用出现。
机器学习的主要目标是提高模型的泛化能力---在新数据上的表现如何,而过拟合是机器学习中经常遇到的难题。我们只能接触到手头的数据,所以必须采用合适的评估方法衡量模型的泛化能力。
训练集、验证集和测试集评估一个模型通常将数据分成训练集、验证集和测试集。在训练集上训练,验证集上验证模型;一旦确定模型能够应用,则在测试机上进行最后的测试。
为什么不只用两个数据集:测试集和训练集?因为模型开发过程中通常需要进行参数调整--比如网络层数目和每层神经元个数等等。使用验证集上的评估结果作为参数调整的反馈信号。超参数的调整过程也是一种学习--在超参数空间寻找合适的参数设置。基于验证集上的苹果结果训练模型,最终导致模型在验证集上过拟合--尽管最模型没有在验证集上进行训练。
导致这个现象的原因是信息泄露information leaks。每次在基于验证集表现微调模型超参数时,验证集上的信息会泄露到模型中。如果调整单个参数只做一次,只会有很少量的信息泄露到模型中,验证结果是可靠的;如果多次重复--做一次实验,在验证集上做一次验证,然后修改模型;泄露到模型中的信息会逐渐增多。
最终,训练的模型在验证集上表现非常好,因为这正是我们优化的结果。但我们最终关心的是模型在新数据上的表现如何,所以需要使用一个完全不同的、没有见过的数据集来评估模型---测试集。所以,模型直到最后才会接触到测试集。
将数据分成训练集、验证集和测试集可能看起来比较简单直观,但当数据量很小时也有其他的处理方式--留出法、K折交叉验证和打乱迭代K折验证。
将数据集留出一部分作为测试集。在剩余部分数据上进行训练,在测试集上进行评估。为了避免信息泄露,不能根据测试集的表现去修改模型参数。
这是最简单的评估方法,但有一个缺点:如果数据集过小,那么测试集和验证集样本量也会很小,数据的代表性不够。这种情况很容易辨别:如果划分数据时每次打乱划分的结果,导致最终评估结果差异性很大时。K折验证和迭代K折验证能处理这种问题。
K折验证