译者:张峰 安徽工业大学 Datawhale成员,来源:Datawhale。 周末在家无聊闲逛github,发现一个很有趣的开源项目,作者用手绘图的方式讲解了机器学习模型构建的全流程,逻辑清晰、生动形象。同时,作者也对几张图进行了详细的讲解,学习之后,收获很多,于是将其翻译下来,和大家一起学习。地址: https://github.com/dataprofessor/infographic 全文如下: 1. 数据集数据集是你构建机器学习模型历程中的起点。简单来说,数据集本质上是一个M×N矩阵,其中M代表列(特征),N代表行(样本)。 列可以分解为X和Y,首先,X是几个类似术语的同义词,如特征、独立变量和输入变量。其次,Y也是几个术语的同义词,即类别标签、因变量和输出变量。 图1. 数据集的卡通插图 2. 探索性数据分析(EDA)
图2. NBA球员统计数据的箱形图示例 图3. NBA球员统计数据的相关热力图示例 图4. NBA球员统计数据的直方图示例 图5. NBA球员统计数据的散布图示例 3. 数据预处理数据预处理(又称数据清理、数据整理或数据处理)是指对数据进行各种检查和审查的过程,以纠正缺失值、拼写错误、使数值正常化/标准化以使其具有可比性、转换数据(如对数转换)等问题。'Garbage in, Garbage out.' 4. 数据分割4.1 训练--测试集分割在机器学习模型的开发过程中,希望训练好的模型能在新的、未见过的数据上表现良好。为了模拟新的、未见过的数据,对可用数据进行数据分割,从而将其分割成2部分(有时称为训练—测试分割)。特别是,第一部分是较大的数据子集,用作训练集(如占原始数据的80%),第二部分通常是较小的子集,用作测试集(其余20%的数据)。需要注意的是,这种数据拆分只进行一次。 接下来,利用训练集建立预测模型,然后将这种训练好的模型应用于测试集(即作为新的、未见过的数据)上进行预测。根据模型在测试集上的表现来选择最佳模型,为了获得最佳模型,还可以进行超参数优化。 图6. 训练—测试集分割示意图 4.2 训练--验证--测试集分割图7. 训练—验证—测试集分割示意图 4.3 交叉验证为了最经济地利用现有数据,通常使用N倍交叉验证(CV),将数据集分割成N个折(即通常使用5倍或10倍CV)。在这样的N倍CV中,其中一个折被留作测试数据,而其余的折则被用作建立模型的训练数据。 例如,在5倍CV中,有1个折被省略,作为测试数据,而剩下的4个被集中起来,作为建立模型的训练数据。然后,将训练好的模型应用于上述遗漏的折(即测试数据)。这个过程反复进行,直到所有的折都有机会被留出作为测试数据。因此,我们将建立5个模型(即5个折中的每个折都被留出作为测试集),其中5个模型中的每个模型都包含相关的性能指标(我们将在接下来的部分讨论)。最后,度量(指标)值是基于5个模型计算出的平均性能。 图8. 交叉验证示意图 5. 模型建立现在,有趣的部分来了,我们终于可以使用精心准备的数据来建立模型了。根据目标变量(通常称为Y变量)的数据类型(定性或定量),我们要建立一个分类(如果Y是定性的)或回归(如果Y是定量的)模型。5.1 学习算法机器学习算法可以大致分为以下三种类型之一:
5.2 参数调优超参数本质上是机器学习算法的参数,直接影响学习过程和预测性能。由于没有 '一刀切 '的超参数设置,可以普遍适用于所有数据集,因此需要进行超参数优化(也称为超参数调整或模型调整)。我们以随机森林为例。在使用randomForest R包时,通常会对两个常见的超参数进行优化,其中包括mtry和ntree参数(这对应于scikit-learnPython库中RandomForestClassifier()和RandomForestRegressor()函数中的nestimators和maxfeatures)。mtry(maxfeatures)代表在每次分裂时作为候选变量随机采样的变量数量,而ntree(nestimators)代表要生长的树的数量。 另一种流行的机器学习算法是支持向量机。需要优化的超参数是径向基函数(RBF)内核的C参数和gamma参数(即线性内核只有C参数;多项式内核的C和指数)。C参数是一个限制过拟合的惩罚项,而gamma参数则控制RBF核的宽度。如上所述,调优通常是为了得出超参数的最佳值集,尽管如此,也有一些研究旨在为C参数和gamma参数找到良好的起始值(Alvarsson等人,2014)。地址: https://pubs./doi/10.1021/ci500344v 5.3 特征选择顾名思义,特征选择从字面上看就是从最初的大量特征中选择一个特征子集的过程。除了实现高精度的模型外,机器学习模型构建最重要的一个方面是获得可操作的见解,为了实现这一目标,能够从大量的特征中选择出重要的特征子集非常重要。特征选择的任务本身就可以构成一个全新的研究领域,在这个领域中,大量的努力都是为了设计新颖的算法和方法。从众多可用的特征选择算法中,一些经典的方法是基于模拟退火和遗传算法。除此之外,还有大量基于进化算法(如粒子群优化、蚁群优化等)和随机方法(如蒙特卡洛)的方法。 我们自己的研究小组也在对醛糖还原酶抑制剂的定量结构—活性关系建模的研究中,探索了利用蒙特卡洛模拟进行特征选择的方法(Nantasenamat等,2014)。地址: https:///10.1016/j.ejmech.2014.02.043 在《遗传算法搜索空间拼接粒子群优化作为通用优化器》的工作中,我们还设计了一种基于结合两种流行的进化算法即遗传算法和粒子群算法的新型特征选择方法(Li等,2013)。地址: https:///10.1016/j.chemolab.2013.08.009 '原搜索空间(a)x∈[-500,0]在每个维度上以2的固定间隔拼接成子空间(图中一个维度等于一个横轴)。这样就得到了4个子空间(b-e),其中x在每个维度上的范围是原始空间的一半。GA的每一个字符串都会编码一个子空间的索引。然后,GA启发式地选择一个子空间(e),并在那里启动PSO(粒子显示为红点)。PSO搜索子空间的全局最小值,最好的粒子适应性作为编码该子空间索引的GA字符串的适应性。最后,GA进行进化,选择一个新的子空间进行探索。整个过程重复进行,直到达到满意的误差水平。' 6. 机器学习任务在监督学习中,两个常见的机器学习任务包括分类和回归。 6.1 分类6.1.1 样例数据集图11. 三个企鹅物种的类别标签(Chinstrap、Gentoo和Adelie) 6.1.2 性能指标6.2 回归简而言之,可以通过以下简单等式很好地总结训练有素的回归模型:Y = f(X)。其中,Y对应量化输出变量,X指输入变量,f指计算输出值作为输入特征的映射函数(从训练模型中得到)。上面的回归例子公式的实质是,如果X已知,就可以推导出Y。一旦Y被计算出来(我们也可以说是 '预测'),一个流行的可视化方式是将实际值与预测值做一个简单的散点图,如下图所示。 图12. 实际值与预测值的简单散点图 6.2.1 样例数据集波士顿住房数据集(Boston Housing Dataset)是数据科学教程中通常使用的一个热门示例数据集。该数据集由506行和14列组成。为了简洁起见,下面显示的是标题(显示变量名称)加上数据集的前4行。 图13. 测试集的实际medv值与预测medv值(20%子集)的散点图。 6.2.2 性能指标从上面的公式可以看出,MSE顾名思义是很容易计算的,取平方误差的平均值。此外,MSE的简单平方根可以得到RMSE。 7. 分类任务的直观说明现在我们再来看看分类模型的整个过程。以企鹅数据集为例,我们可以看到,企鹅可以通过4个定量特征和2个定性特征来描述,然后将这些特征作为训练分类模型的输入。在训练模型的过程中,需要考虑的问题包括以下几点。
图14. 建立一个分类模型的过程示意图 |
|