监督学习--线性分类器--决策树ID3,C4.5,CART

  机器学习中监督学习模型的任务重点在于根据已有经验知识对未知样本的目标/标记进行预测。根据目标预测变量的类型不同,把监督学习任务大体分为分类学习和回归预测两类。分类学习是最为常见的监督学习问题,其中,最基础的是二分类问题,除此之外还有多分类问题。
在这里插入图片描述

一、线性分类器–决策树

1.1 模型介绍

  决策树是一种基本的分类与回归方法,在机器学习中,属于监督学习模型。决策树模型包括:特征选择决策树生成决策树剪枝
  特征选择在于选取对训练数据具有分类能力的特征,这样可以提高决策树的学习效率。决策树在最优特征选取时,常用的算法分为:ID3,C4.5,CART。

  1. ID3算法

  ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归的构建决策树。信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度(定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明该特征越重要,相应的信息增益也就越大。)
信息增益恰好是:信息熵-条件熵。
在这里插入图片描述
是表示随机变量不确定性的度量(熵越大,随机变量的不确定性越大)。
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性在这里插入图片描述
ID3算法的缺点
1.对于缺失值没有考虑
2.没有考虑连续特征
3.没有考虑过拟合问题,不支持剪枝
4.在相同的条件下,取值较多的特征比取值较少的信息增益大

  1. C4.5算法

  C4.5算法与ID3算法相似,C4.5在生成的过程中,用信息增益比来选择特征。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
C4.5算法的优、缺点
在这里插入图片描述
3. CART算法

  CART算法对于分类树用基尼指数最小化准则进行特征选择,生成二叉树;对于回归树用平方误差最小化准则。
在这里插入图片描述
在这里插入图片描述
决策树剪枝
在这里插入图片描述

1.2 python代码实践案例

#使用Titanic数据集,通过特征筛选的方法一步步提升决策树的预测性能
import pandas as pd
from sklearn.model_selection import train_test_split #用于分割数据集
from sklearn.feature_extraction import DictVectorizer #特征转换器
from sklearn.tree import DecisionTreeClassifier  
from sklearn.metrics import classification_report

titanic = pd.read_csv('titanic.csv')
x=titanic[['Pclass','Age','Sex']] 
y=titanic['Survived']

#对缺失数据进行填充
x['Age'].fillna(x['Age'].mean(),inplace=True)

#分割数据,采样25%用于测试
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=33)
#类别特征向量化
vec=DictVectorizer(sparse=False) #会返回一个one-hot编码矩阵
#转换特征后,凡是类别型的特征都单独剥离出来,独成一列特征,数值型的则保持不变
X_train = vec.fit_transform(x_train.to_dict(orient='record'))
X_test=vec.transform(x_test.to_dict(orient='record'))

dtc=DecisionTreeClassifier()#默认criterion='gini'
dtc.fit(X_train,y_train)
dtc_y_predict=dtc.predict(X_test)
print('Accuracy of dtc Classifier:',dtc.score(X_test,y_test))
print(classification_report(y_test,dtc_y_predict))

在这里插入图片描述
这里对titanic数据集每列的label进行解释:
PassengerId=》乘客的ID
Survived=》是否存活
Pclass=》船舱等级
Name=》乘客姓名
Sex=》乘客性别
Age=》乘客年龄
SibSp=》有无兄弟姐妹
Parch=》有无父母子女
Ticket=》登船票号
Fare=》票价
Cabin=》船舱类型
Embarked=》所到达的港口

1.3 模型优缺点

决策树的优点:
1.简单直观,可解释性强
2.基本不需要提前预处理数据
3.对于异常值容错能力好,健壮性高
4.既可以处理离散值也可以处理连续值(较多算法只专注一种)

决策树的缺点:
1.容易过拟合,导致泛化能力不强(限制决策树深度来改进)
2.容易因为样本的一点点改动而导致树的结构发生较大改变
3.如:异或,这样的关系决策树难学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值