多分类问题概述
分类是一种典型的有监督学习问题,其使用场景如:信用风险评价、医学诊断和电子邮件分类等。
一个典型的分类模型构建流程如图所示:
二分类使命
“拆分法”:能够处理多分类问题,即将多分类使命拆为若干个二分类使命:
- 1对1(OvO)
- 一对其余(OvR)
- 多对多(MvM)
图片来历:周志华.机器学习.清华大学出版社,2016
回归问题概述
在一个回归模型中,咱们需求关注或预测的变量叫做因变量,咱们选取的用来解释因变量变化的变量叫做自变量。
决议计划树
- 监督学习,分类(二分类或许多分类)或许回归;
- 基于树结构进行决议计划
一个比如—相亲问题:
依据一系列特征作出决议计划;每一次挑选一个变量,作为树,最终成果作为叶子结点
假设咱们期望判别一个人未来5年的收入水平是否会超越100w,这能够视为一个分类问题;咱们能够搜集如下特征:性别,年纪,作业城市,行业,作业年限,作业城市平均收入,作业行业平均收入,职位类别,职位类别平均收入等等,如上咱们相同能够构建一个决议计划树,可是这儿每一层的割裂特征怎样选?
决议计划树中心—决议计划规矩
- ID3:依据信息增益( Information Gain )来选取feature作为决议计划树割裂的节点
- C4.5 :用信息增益比率( gain info) 来挑选feature
- CART(Classification and Regression Tree):使用基尼指数挑选Feature
决议计划树构建
ID3的思维
- 自顶向下,贪心查找遍历一切可能的决议计划空间,优先挑选最优的决议计划空间( ID3和C4.5算法的基础)
- 从挑选根节点开端
- 用计算的办法确认每个特点单独分类样例的能力,优先挑选分类最好的特点作为当前节点(根节点)
- 为节点特点的每个可能值发生一个分值,并依据取值切割样例
- 重复这个过程,直到到达停止条件
C4.5
C4.5是ID3的改善算法
- 用信息增益率来挑选特点
- 在树结构过程中进行剪枝( 一定程度避免overfitting )
避免过拟合
- 添加对接连值特征的处理
- 添加对缺失值的处理
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()
跟着弱分类器的添加,练习集的丢失在不断降低,袋外样本的丢失减小值渐渐趋于平稳。