调整机器学习模型

一条鱼 2018-05-19

调整机器学习模型

交叉验证

交叉验证是一种评估ML模型的技术,通过对数据子集的多个模型进行训练,并对其进行仿真。它可以帮助您避免过度拟合,在部分训练中使用完整的数据集。你可以使用k-fold交叉验证方法进行交叉验证。

我们将演示使用k-fold交叉验证。这将把输入数据分成k个子集(也称为folds)。您在所有的子集和评估中都训练一个ML模型。这个过程重复k次。

下图显示了在4个交叉验证过程中创建和训练的4个模型的训练子集。模型一使用前25%的数据进行评估,剩下的75%用于培训。模型二使用了25%的第二个子集进行评估,剩下的用于训练,以此类推。

调整机器学习模型

超参数

一个超参数是一个参数,其值在学习过程开始前设置。相反,其他参数的值是通过训练得出的。让我们来看看如何实现交叉验证算法,这对于sklearn库来说是非常简单的。你会注意到KFold(n_splits=3, random_state=42)。这两个n_splits=3和random_state=42是超参数。这些超参数是数据科学家为了实现更好的解决方案所需的时间。在这种情况下,我们利用n_splits=3这是测量将数据集分成几部分的度量。该random_state=42超参数将在未来的algorythm运行中保持结果一致。数字42并不重要。它可以是任何数字。但是,在未来运行的algorythm上使用相同的数字可以获得一致的结果。将它留空将不会影响hte algoyrythm的运行,但每次运行它random_state都会有所不同。

调整机器学习模型

AUC(曲线下的面积)

模型调整到这一点的结果是提高AUC评分。这个AUC scrore是对模型“适合”到测试数据的测试。严格说来,这条曲线是“阳性”与“假阳性”结果的比值。

调整机器学习模型

调优超参数

优化模型的过程既科学又直观。每一次试验都要进行多次试验,这些试验是对你的训练应用程序的一个完整的执行,你选择的是超参数值。这就是科学。这门艺术来自于经验和理解,这些调整值最有可能提高你的整体效果。当你的数据集变得更大,运行时间扩展时,你就会理解可能的结果,这可能是一个项目的突破或失败的区别。

保存你的工作!

如果您将模型移动到不同的平台或从演示环境移动到现场,在您花费数小时辛苦工作之后,您想要的最后一件事就是失去精细调整的参数。确保你的工作保持一致的一种方法是使用sklearn.externals.joblib这个库,它的功能是将你的工作保存到一个包中传递。这是非常容易使用。当你model准备好了,你只需使用这段代码并保存到一个filename。

调整机器学习模型

一旦将文件连同数据一起放到新的位置,就可以很容易地将其解压缩并使用。

调整机器学习模型

相关推荐