机器学习——决策树/随机森林

这篇具有很好参考价值的文章主要介绍了机器学习——决策树/随机森林。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、前言:

  • 决策树可以做分类也可以做回归,决策树容易过拟合
  • 决策树算法的基本原理是依据信息学熵的概念设计的(Logistic回归和贝叶斯是基于概率论),熵最早起源于物理学,在信息学当中表示不确定性的度量,熵值越大表示不确定性越大。
  • ID3算法就是一种通过熵的变化,构造决策树的算法,其基本公式如下:
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
  • ID3算法举例:
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
    1、计算信息熵:在target中,总共有10个结果,其中yes有7个,no有3个,通过信息熵计算公式,得到如下结果:
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
    2、计算样本熵:
    对于特征1:s有3个对应比例为0.3(这3个s对应的target中yes有1个,no有2个),m有4个对应比例为0.4(这4个m对应的target中yes有3个,no有1个),l有3个对应比例为0.3(这3个l对应的target中yes有3个,no有0个),则特征1通过样本熵的计算公式如下:
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
    其余两个特征计算样本熵的方法和特征一一致。
    3、计算信息增益:通过公式(info(D) - info_D_L)计算出所有样本的信息增益,然后比较他们的信息增益,选最大的作为第一个决策树节点,然后根据节点划分子节点,如果子节点信息确定则设置为叶子节点,如果子节点存在不同选择,就要重新通过上面的步骤选择新的子节点。上面计算结果中特征2的信息增益最大,因此得到如下决策树,然后继续对target和特征1和特征3重复上面步骤,选择第二个节点。
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
  • ID4.5:改进了ID3算法中不重复特征(例如序号列)熵增益过大的缺点,方法就是给每个ID3算法得到的结果除以对应特征的“信息熵”,因此就需要给每个特征通过“信息熵”公式再计算一次它对应的信息熵。(info(D) - info_D_L)/E(A)
  • CART算法(gini):改进了ID3算法中需要大量对数运算导致运算速度较慢的缺点,用基尼代替了熵的概念,核心公式如下,相当于用下面的核心公式替代了求信息熵的公式,其余计算过程和ID3算法一致。也是先求target,然后再求其余特征。
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
    对数计算和平方计算对比情况如下:
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
    计算过程:
    首先求target:
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
    再求特征1(特征2、特征3类似)
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
    最后求信息增益(特征2、特征3类似):gini_D - gini_D_L

1、决策树算法参数说明:

随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林

2、决策树算法的应用:

  • 1、鸢尾花分类任务(不同参数值分类结果)
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
  • 2、sin函数回归任务:
# 导包
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor

# 产生数据
x = np.linspace(1,5,100)
y = np.sin(x)
# 绘图
plt.figure(figsize=(10,5))
plt.scatter(x,y,c='r')
# 添加噪点
y[::5]+=np.random.randn(20)*0.1 # 一维数组的加法
# 绘图
plt.figure(figsize=(10,5))
plt.scatter(x,y,c='r')
# 转化输入数据维度
x = x.reshape(-1,1)
x.shape
# 预测
Dt = DecisionTreeRegressor(max_depth=7)
Dt.fit(x,y)
Dt.score(x,y)
# 生成测试数据预测
x_p = np.linspace(3.5,5,100)
x_p = x_p.reshape(-1,1)
x_p.shape
# 预测绘图
pre_y = Dt.predict(x)
plt.scatter(x,y,c='r')
plt.scatter(x_p,pre_y,c='b')

随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林文章来源地址https://www.toymoban.com/news/detail-733240.html


3、随机森林算法:

  • 原理:随机森林是决策树的升级版本,随机说的是每个树都是随机生成的,每个数都不相同。在构建随机森林时,会从训练数据中有放回的随机选取一部分样本,同样也会随机选取数据样本的部分特征进行训练。每棵树使用的样本和特征都不相同,训练结果也各不相同。
  • 使用随机森林的原因:训练最初我们并不知道哪些是异常样本,也不知道哪些特征对结果影响较大,随机的过程就能降低这两个问题的影响,随机森林的输出结果由投票决定,大部分决策树的结果就决定了最终结果。
  • 优点:可以同时训练,不容易过拟合,能处理特征较多的高维数据,不知道使用什么方法时,先试试随机森林。因为随机森林属于多模型组合学习,这些模型之间都是独立学习预测的。
  • 导入随机森林分类库:from sklearn.ensemble import RandomForestClassifier
  • 重要参数:
    n_estimators:决策树的数量,默认是100个

4、总结:

  • 不论是决策树还是随机森林都有一个属性:feature_importances_,通过这个属性就可以在模型训练结束之后看到每个特征的重要性。其他属性可以通过训练好的模型后面加“.”代码的自动补全就会显示。
  • 决策树当中的一些重要参数:
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林
    随机森林和决策树,机器学习与深度学习,机器学习,决策树,随机森林

到了这里,关于机器学习——决策树/随机森林的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包