Kaggle Machine Learning 教程学习(六)

 五、模型训练

  该篇主要讲述了如何使用交叉验证调整模型。首先引用一段话:

  Better data beats fancier algorithms.

  我们知道数据集一般分为训练集与测试集,如果模型在训练集中表现非常好,却在测试集上表现不佳,那么它就是被训练过度了。

  如何来防止过拟合?可通过设置参数来调整模型。

  这里有两个概念:模型参数(Model parameters)、(超参数)Hyperparameters。

    1.模型参数

      比如:回归系数、决策树的分割点等。模型参数可以直接从训练数据中学习。

    2.超参数

      比如:正则化回归中使用的惩罚强度、包含在随机森林中的树数量等。超参数在训练模型之前就应设置好。

  交叉验证(Cross Validation)

    交叉验证是一种仅使用训练数据就可以得到模型性能的可靠评估。

    交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

    几种常见的交叉验证方法:k-fold cross-validation(k折交叉验证)、Leave-one-out cross-validation、Leave-p-out cross-validation、Holdout method等。

    k-fold cross-validation原理:

$$ CV_{k} = \frac{1}{k}\sum_{i=1}^{k}MSE_{i} $$

$$ 其中MSE为均方误差 $$

  调整模型

    完成前面的所有步骤,进入如下伪代码步骤:

For each algorithm (i.e. regularized regression, random forest, etc.):
  For each set of hyperparameter values to try:
    Perform cross-validation using the training set.
    Calculate cross-validated score.

    在这个过程结束时,我们可得到每组超参数对应的交叉验证分数,例如:

Cross-Validation

    这样我们就可以为不同算法选取一个最佳超参数值。然后再使用它们:

For each algorithm:
  Keep the set of hyperparameter values with best cross-validated score.
  Re-train the algorithm on the entire training set (without cross-validation).

  选出最佳模型

    现在我们可以将训练好的模型用在测试集上了并评估每个模型的性能。

    性能指标:

      1.对于回归任务,一般使用MSE或MAE(Mean Absolute Deviation - 平均绝对误差),其数值越低越好。

      2.对于分类任务,可使用Area Under ROC Curve(Area Under the Receiver Operating Characteristic curve),数值越高越好。

  scikit-learn中给出的交叉验证的例子:传送门

  总结:

    数据清洗、特征选择、特征提取这些都是最基础的一步,训练前模型必须要拥有好的数据,这是没办法避免的。因而锻炼数据分析能力非常重要!

    简短的串联一下所学的知识:机器学习任务分为监督学习与无监督学习,监督学习根据不同任务性质又分为回归与分类,回归问题数据集表现为数值特征,分类问题数据集中有文本特征,二者通常使用线性回归、套索、岭回归、逻辑回归等算法进行数据拟合。集成学习算法一般选用决策树,决策树可分为两类:随机森林(算法思想为Bagging)、梯度增强树(Boosting)。准备好一切后,可通过交叉验证调整模型,评估使用不同算法的模型,取得每个模型的最佳超参数,然后调整参数,通过最好的算法最终得到最佳模型。

  到此,经过一周的学习,这系列教程结束了,感谢它让我从中学到了一些很有用的基本理论知识,虽然这些还远远不够(还有许多基础数学、算法等知识需要补充)。但我想它们的重要性能在实践过程中得到验证,期待到那时这些知识随之给我带来的更深的体会~

  最后,再次感谢Kaggle的免费学习教程!

  参考资料:

    1.https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E9%AA%8C%E8%AF%81

    2.https://en.wikipedia.org/wiki/Cross-validation_(statistics)

    3.https://en.wikipedia.org/wiki/Receiver_operating_characteristic

    4.https://zhuanlan.zhihu.com/p/24825503?refer=rdatamining

猜你喜欢

转载自www.cnblogs.com/darkchii/p/8908891.html