机器学习之决策树

决策树

机器学习也进行了一段时间了,最近看到决策树这部分的知识,说实在的这里边的知识点还是很好理解的,主要的就是在于怎么将这部分的算法编程出来,这个还是很费脑子的,反正我是弄了很久才弄出来几个容易的算法,也许是本人智力有限哈。反正也是学习,也吐槽一些我在机器学习过程中的费脑子糟糕心情罢了。也是便于我自己整理决策树这部分知识点,我简略的列在了下边,公式算法之类的暂时未能列在下面(主要是太多了,繁琐),重要的还是要自己理解吧。

基础知识:
1.决策树是基于树结构来进行决策的。
2.一颗决策树包涵一个根结点,若干个内部结点和若干个叶结点,叶结点对应于决策结果,其他结点则对于于一个属性测试,每个结点包涵的样本集合根据属性测试结果划分到子结点中去,跟结点包涵整个样本集。
3.决策树学习的目的就是为了产生一个泛化能力强的决策树。
4.基本流程遵循“分而治之”。

信息熵:
1.度量样本集合纯度最常用的指标。(其值越小,纯度越高),样本集合D中第k类别样本所占比例为y。

信息增益:
1.信息增益:样本数越多的分支结点的影响越大。若属性a的信息增益越大,意味着使用属性a来进行划分所获得的“纯度提升”越大。
2.所以可以采用信息增益来进行决策树的划分属性选择。当若干属性同时达到最大时,任选其中一个作为划分属性。
3.信息增益可能对数目较多的属性有所偏好。

增益率:(C4.5决策树算法)
1.划分属性选取:先从候选属性中选取信息增益高于平均水平的属性,在从中选取增益率高的属性最为划分属性。

基尼指数:(CART决策树)
1.数据D的纯度可以用基尼值来度量,基尼值越小,数据D的纯度越高。
2.划分属性选取:选择那个使得划分后基尼指数最小的属性作为最优划分属性。

剪枝处理:
1.时决策树主要对付“过拟合”的手段。结点划分太多,导致训练样本学的“太好”,导致过拟合。
2.预剪枝:在决策树生成之前过程中,对每个结点在划分前先进行评估,若该结点的划分不能为决策树泛化性带来提升,则将它作为叶结点。(降低了过拟合的风险,也减少了训练时间和测试时间开销,但是可能带来了欠拟合的风险)。
3.后剪枝:先从训练集生成一颗完整的决策树,然后自底向上对非叶结点进行考察,若将该结点对应的子树替换为叶结点能提升决策树的泛化性,则将它替换为叶结点。(后剪枝通常比预剪枝保留了更多的分支,一般情况下,后剪枝的欠拟合风险很低,泛化能力要优于预剪枝决策树,但是训练时间开销要大很多)。
4.当结点作为叶结点时,其类别结果是训练样本例数最多的类别,但当样例最多的类别不唯一时,可任选其中一个类别。
5.评估时可使用验证集来验证结点的精度等,来确定是否将其作为划分属性。
6.仅有一层划分的决策树亦称为“决策树桩”。
以上均是对数据集D的离散属性来生成决策树。以下为连续属性处理。

连续值和缺失值:
连续值处理:
1.(二分法)将属性取值从小到大顺序排列,选取这些值构成区间的中位数作为候选划分点,然后选取最优的划分点进行集合的划分。
2.若当前结点划分属性为连续属性,该属性依然可以作为后代结点的划分属性。

缺失值处理:
1.若样本的属性已知,则将其划入到对应的子结点中,若样本属性值未知,则将样本同时划入所有的子结点(让它以不同的概率划入到不同的子结点中去)

多变量决策树:
1.决策树形成的分类边界由若干个与坐标轴平行的分段组成。
2.使用“斜的划分边界”进行简化。在多变量决策树的学习过程中,不是为每个非叶结点寻找一个最优划分,而是试图建立一个合适的线性分类器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
决策树是常用的机器学习算法之一,通过对数据的分类和特征值计算来完成对未知数据的预测。本文将介绍使用Python实现决策树算法的相关步骤。 首先,需要导入决策树算法工具包,使用以下代码: ```python from sklearn import tree ``` 然后,导入训练数据和测试数据,并进行预处理。为了方便起见,在本文中采用生成随机数的方式来生成样本数据,使用以下代码: ```python from sklearn.datasets import make_classification X, y = make_classification(n_samples=100, n_features=4, n_classes=2, n_informative=2, n_redundant=0, random_state=0, shuffle=False) ``` 接下来,使用生成的样本数据进行模型训练。这里使用scikit-learn中的DecisionTreeClassifier()函数。 ```python clf = tree.DecisionTreeClassifier() clf = clf.fit(X, y) ``` 训练后,调用predict()方法进行对测试数据的预测,使用以下代码: ```python y_pred = clf.predict(X) ``` 最后,评估模型的准确率,使用以下代码: ```python from sklearn.metrics import accuracy_score print(accuracy_score(y, y_pred)) ``` 这就是使用Python实现决策树算法的基本过程。决策树可以根据数据中的不同特征进行分类,是一个简单且常用的分类算法。决策树算法也可用于回归问题,例如预测一个数的大小。与其他机器学习算法相比,决策树具有易于理解和可解释的优点,同时还可以处理非线性的分类问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhudisudo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值