多分类问题概述

分类是一种典型的有监督学习问题,其使用场景如:信用风险评价、医学诊断和电子邮件分类等。

一个典型的分类模型构建流程如图所示:

二分类使命

数据分析算法应用之从决策树到GBDT的优化

“拆分法”:能够处理多分类问题,即将多分类使命拆为若干个二分类使命:

  • 1对1(OvO)
  • 一对其余(OvR)
  • 多对多(MvM)

数据分析算法应用之从决策树到GBDT的优化

图片来历:周志华.机器学习.清华大学出版社,2016

回归问题概述

在一个回归模型中,咱们需求关注或预测的变量叫做因变量,咱们选取的用来解释因变量变化的变量叫做自变量

数据分析算法应用之从决策树到GBDT的优化

决议计划树

  • 监督学习,分类(二分类或许多分类)或许回归;
  • 基于树结构进行决议计划

一个比如—相亲问题:

数据分析算法应用之从决策树到GBDT的优化

依据一系列特征作出决议计划;每一次挑选一个变量,作为树,最终成果作为叶子结点

假设咱们期望判别一个人未来5年的收入水平是否会超越100w,这能够视为一个分类问题;咱们能够搜集如下特征:性别,年纪,作业城市,行业,作业年限,作业城市平均收入,作业行业平均收入,职位类别,职位类别平均收入等等,如上咱们相同能够构建一个决议计划树,可是这儿每一层的割裂特征怎样选?

决议计划树中心—决议计划规矩

  • ID3:依据信息增益( Information Gain )来选取feature作为决议计划树割裂的节点
  • C4.5 :用信息增益比率( gain info) 来挑选feature
  • CART(Classification and Regression Tree):使用基尼指数挑选Feature

决议计划树构建

ID3的思维

  1. 自顶向下,贪心查找遍历一切可能的决议计划空间,优先挑选最优的决议计划空间( ID3和C4.5算法的基础)
  2. 从挑选根节点开端
  3. 用计算的办法确认每个特点单独分类样例的能力,优先挑选分类最好的特点作为当前节点(根节点)
  4. 为节点特点的每个可能值发生一个分值,并依据取值切割样例
  5. 重复这个过程,直到到达停止条件

C4.5

C4.5是ID3的改善算法

  1. 用信息增益率来挑选特点
  2. 在树结构过程中进行剪枝( 一定程度避免overfitting )

避免过拟合

  1. 添加对接连值特征的处理
  2. 添加对缺失值的处理

CART

  • CART:分类回归树

CART使用GINI指数挑选feature

  • 二叉树,每个决议计划都是“是”与“否”

  • 分类树:输出的离散的样本类标

  • 回归树:输出的是接连的实树预估值( 房价、点击率等)

常见的决议计划树模型

模型 可处理的特征类型 不纯度度量办法 切割后子节点数量 方针特征类型
ID3 离散型 信息增益 大于等于2 离散型
C4.5 离散型、接连型 信息增益率 大于等于2 离散型
CART 离散型、接连型 Gini系数 等于2 离散型、接连型

模型好坏及超参数

优势: 模型简单,可解释性强,能够省去一定程度的特征处理,对缺失值有比较好的处理机制,在相对短的时间内能够对大型数据源做出可行且效果杰出的成果。

劣势: 单棵树泛化能力不强,简单发生过拟合;简单忽略数据集中特点的相互相关;

超参数: 树的最大深度,叶节点的最小元素个数

GBDT

梯度提高树,Gradient Boosting Decision Tree

以回归树为基学习器的boosting办法

用丢失函数的负梯度来拟合每轮丢失的近似值,

GradianBoostingClassifier类

scikit-learn.org/stable/modu…

参数 功用
loss 指定丢失函数,默以为“deviance”,(对数丢失),可为“exponential”(指数丢失)
learning_rate 学习率,默以为0.1
n_estimators 弱分类器个数,默以为100
subsample 拟合基学习器的练习集样本数占总样本数的比例,0到1之间的浮点数,默以为1.0
特点 阐明
feature_ importances_ 特征重要性
oob_improvement_ 每添加一个基分类器,袋外样本的丢失函数减少值
train_score_ 每添加一个基分类器,练习集上丢失函数的值

GradientBoostindRegressor类

参数 阐明
loss – 指定丢失函数,默以为“ls”(平方丢失) ,还可为:
  • “lad”(绝对值丢失)
  • “huber”( huber丢失)
  • “quantile”(分位数回归) | | alpha | 当loss=“huber”或”quantile” 时有效,两个丢失中的参数,默以为0.9 | | learning_rate | 学习率,默以为0.1 | | n_estimators | 弱分类器个数,默以为100 | | subsample | 拟合基学习器的练习集样本数占总样本数的比例,0到1之间的浮点数,默以为1.0 |

构建GBDT模型

from sklearn.ensemble import GradientBoostingClassifier
import matplotlib.pyplot as plt
# 建立并练习GBDT模型
model_gdbt = GradientBoostingClassifier(random_state=10,subsample=.7)
model_gdbt.fit(X_train, Y_train)
#  弱分类器袋外样本丢失减小值和练习集丢失
plt.figure(figsize=(8,6))
plt.plot(model_gdbt.oob_improvement_, 'y-+', label='oob')
plt.plot(model_gdbt.train_score_, 'b--*', label='train')
plt.xlabel('estimator_order')
plt.legend()

数据分析算法应用之从决策树到GBDT的优化

跟着弱分类器的添加,练习集的丢失在不断降低,袋外样本的丢失减小值渐渐趋于平稳。