Pyhton机器学习——预测分析核心算法

概述

本书主要针对两大类算法簇进行了预测类算法讲解,并使用水雷-岩石和红酒数据集进行了实例讲解,在讲解算法并未深入十分基础的数学原理以及数学推导,而更多的是将原理转化成容易理解的语言,并介绍了实际使用中的相关模型选择经验,对预测分析任务实战有一定指导意义。

内容

章节递进关系

1 关于预测的两类核心算法

该书主要介绍在实际使用中比较常见以及效果好的两类算法簇,包括惩罚回归方法以及集成方法。

  • 惩罚回归方法:主要是以传统的线性回归中最小二乘法求解为基础,加上惩罚项进行约束,避免过拟合问题。
  • 集成方法:通过多个弱学习器进行集成来整体提升模型的效果,主要包括提升决策树、随机森林、投票决策树、提升二叉树等,又可以抽象的归纳为bootsing方法以及bagging方法。

不同的算法在不同类型的数据集(包括大数据集、小数据集、宽数据集、高数据集等,同时数据集的特征可能是连续特征较多也可能是离散数据特征较多)上表现可能存在较大的差异,因此在进行预测算法选择时要分析探索数据集的类型以及特点选择不同的算法。

构建预测模型的流程主要包括:

  • 构造一个机器学习问题:如果充分理解业务,并进行抽象以及问题定义,该工作十分重要,问题定义的是否准确直接决定了该预测模型最终效果的好坏。
  • 特征提取以及特征工程:该工作需要反复迭代,寻找对预测结果有帮助的特征,可能会占据整个工作的80%-90%的时间。
  • 模型性能评估:一定要在测试集上充分验证模型的性能,否在在进行实际的线上处理时可能会有很多意想不到的问题。

2 通过理解数据来了解问题

因变量与预测结果均可分为数值类型以及类别类型,数值类型是指连续的数值变量或者比较大小存在意义的离散变量,类别类型变量不同值之间没有顺序关系。

根据因变量与预测结果类型不同选取不同的模型。预测结果类型为数值类型的又可称为回归任务,预测结果类型为类别类型的为分类任务,特别的当结果类型类别自由两类时为二分类问题。

因变量也可以称为:属性、预测因子、特征、独立变量、输入
预测结果也可成为:标签、目标、依赖变量、响应

3 预测模型的构建:平衡性能、复杂性以及大数据

预测模型总体上来说可分为线性模型以及非线性模型,一般来说非线性模型的复杂度高于线性模型,数据的预测因子越多,模型也就越复杂,如果对于数据量较少的样本来说,如果模型过于复杂就容易出现过拟合问题。

问题的复杂性也容易影响模型的拟合情况,通过训练数据的分布也可以从某种程度上反映出问题的复杂程度,以分类问题来说,如果训练数据的分布存在明显的分界,则说明该分类问题件比较简单,如果分布错综复杂,说明该分类问题比较复杂。

选择预测模型的基本原则:

  • 简单的问题选取线性模型等复杂度较低的模型
  • 复杂的问题选取非线性等复杂度较高的模型
  • 对于训练时间敏感的问题尽量避开复杂度过高的模型

预测结果类型不同需要选取不同的评价指标,对于回归问题多选用MAE,MSE作为评价模型,对于二分类问题多采用ROC曲线或者AUC指标作为评价模型。

控制模型过拟合的方法:

  • 使用前向逐步回归来控制过拟合
  • 通过惩罚回归系数来控制过拟合

4 惩罚线性回归模型

为了解决线性模型过拟合问题,惩罚线性回归模型都是在损失函数中增加各种惩罚项来增加模型的泛化能力。

因此惩罚线性回归的如下几个特点使得该模型十分有效:

  • 模型训练足够快速
  • 部署是预测速度较快
  • 变量的重要信息易于解释
  • 特别是对那些适用于采用线性模型进行处理的问题

不同种类惩罚线性回归模型的惩罚项:

  • Ridge回归

    1
    \frac{\lambda\beta^T\beta}{2} = \frac{\lambda{(\beta_1^2+\beta_1^2+\cdots+\beta_n^2)}}{2} = \frac{\Vert\beta\Vert^2}{2}
  • Lasso回归

    1
    \lambda\Vert\beta\Vert_1
  • ElasticNet回归

1
\lambda_1\Vert\beta\Vert_1 + \lambda_2\Vert\beta\Vert^2

可以将类型变量进行onehot编码处理之后进行再进行线性回归预测

5 使用惩罚线性方法来构建预测模型

采用惩罚线性回归模型的具体案例,代码见:

6 集成方法

本章主要介绍了bagging,gradient boosting以及random forest。

  • bagging:通过多个基学习器进行带权重的投标决定最终分类。
  • gradient boosting:通过多个基学习期进行多轮学习,每一轮的输入采用前一轮的错误残差,也就是说上一轮出现错误的更多的参与了下一轮的学习。
  • random forest:在bagging基础上随机的选择属性构建决策树。

7 用Python构建集成模型

具体集成方法的具体案例,代码见: