机器学习03

西瓜书对应章节:4.1、4.2

算法原理
  • 从逻辑角度:决策树就是一堆if else语句组合
  • 从几何角度,根据某种准则划分特征空间
  • 最终目的:将样本越分越纯
ID3决策树
信息熵
  • 自信息的期望;度量随机变量X的不确定性,信息熵越大越不确定

  • 计算信息熵时约定:若 p ( x ) = 0 p(x)=0 p(x)=0 ,则 p ( x ) log ⁡ b p ( x ) = 0 p(x)\log_bp(x)=0 p(x)logbp(x)=0

  • 公式:
    H ( X ) = E [ I ( X ) ] = − ∑ x p ( x ) log ⁡ b p ( x ) H(X)=E[I(X)]=-\sum_xp(x)\log_bp(x) H(X)=E[I(X)]=xp(x)logbp(x)

  • 将各样本类别标记为y视作随机变量,各个类别在样本集合D中的占比 p ( k ) ( k = 1 , 2 , . . . , ∣ y ∣ ) p(k)(k=1,2,...,|y|) p(k)(k=1,2,...,y)视作各个类别取值的概率,则样本集合D(随机变量y)的信息熵(底数b取2)为
    E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k log ⁡ 2 p k Ent(D)=-\sum_{k=1}^{|y|}p_k\log_2p_k Ent(D)=k=1ypklog2pk
    此时的信息熵所代表的“不确定性”可以转换理解为集合内样本的“纯度”

  • 条件熵(Y的信息熵关于概率分布X的期望):在已知X后Y的不确定性 H ( Y ∣ X ) = ∑ x p ( x ) H ( Y ∣ X = x ) H(Y|X)=\sum_xp(x)H(Y|X=x) H(YX)=xp(x)H(YX=x)从单个属性(特征)a来看,假设其可能的取值为 a 1 , a 2 , . . . , a v {a^1,a^2,...,a^v} a1,a2,...,av, D v D^v Dv表示属性a取值为 a v ∈ ( a 1 , a 2 , . . . , a v ) a^v\in(a^1,a^2,...,a^v) av(a1,a2,...,av)的样本集合 ∣ D v ∣ D E n t ( D v ) \frac{|D^v|}{D}Ent(D^v) DDvEnt(Dv)

  • 信息增益:在已知属性(特征)a的取值后y的不确定性减少的两,也即纯度的提升
    G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 v ∣ D v ∣ D E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^v\frac{|D^v|}{D}Ent(D^v) Gain(D,a)=Ent(D)v=1vDDvEnt(Dv)

  • ID3决策树:以信息增益为准则来选择划分属性的决策树
    a ∗ = arg ⁡ a ∈ A m a x G a i n ( D , a ) a_*=\arg_{a\in A} max Gain(D,a) a=argaAmaxGain(D,a)

C4.5决策树
  • 信息增益准则可能对于取值数目较多的属性有所偏好(例如编号这个较为极端的例子),为减少这种偏好可能带来的不利影响,C4.5决策树使用“增益率”代替“信息增益”
    G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} Gain_ratio(D,a)=IV(a)Gain(D,a)
    其中 I V ( a ) = − ∑ v = 1 v ∣ D v ∣ D log ⁡ 2 ∣ D v ∣ D IV(a)=-\sum_{v=1}^v\frac{|D^v|}{D} \log_2 \frac{|D^v|}{D} IV(a)=v=1vDDvlog2DDv称为属性a的固有值,a的取值个数V越大,通常其固有值IV(a)也越大

  • 并没有完全使用增益率来代替信息增益,而是采用一种启发式的方法,先选出信息增益高于平均水平的属性,然后再从中选择增益率最高的

CART决策树
  • 基尼值:从样本集合D中随机抽取两个样本,其类别标记不一致的概率。因此,基尼值越小,碰到异类的概率越小,纯度越高
    G i n i ( D ) = ∑ k = 1 ∣ y ∣ ∑ k ′ ≠ k p ( k ) 0 ( k ′ ) = ∑ k = 1 ∣ y ∣ p ( k ) ( 1 − p ( k ) ) = 1 − ∑ k = 1 ∣ y ∣ p ( k ) 2 Gini(D)=\sum_{k=1}^{|y|} \sum_{k'\neq k}p(k)0(k') =\sum_{k=1}^{|y|}p(k)(1-p(k)) =1-\sum_{k=1}^{|y|}p(k)^2 Gini(D)=k=1yk=kp(k)0(k)=k=1yp(k)(1p(k))=1k=1yp(k)2

  • 基尼指数(类比信息熵和条件熵)
    G i n i _ i n d e x ( D , a ) = ∑ v = 1 V D v ∣ D ∣ G i n i ( D v ) Gini\_index(D,a)=\sum_{v=1}^V \frac{D^v}{|D|}Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)

  • CART决策树:选择基尼指数最小的属性作为最优划分属性
    a ∗ = arg ⁡ a ∈ A m i n G i n i i n d e x ( D , a ) a_*=\arg_{a\in A} min Gini_index(D,a) a=argaAminGiniindex(D,a)

  • 实际构造算法时:对属性a的每一个可能取值v,将数据集D划分为a=v和 a ≠ v a\neq v a=v两部分来计算,即
    G i n i _ i n d e x ( D , a ) = D a = v ∣ D ∣ G i n i ( D a = v ) + D a ≠ v ∣ D ∣ G i n i ( D a ≠ v ) Gini\_index(D,a)=\frac{D^{a=v}}{|D|}Gini(D^{a=v})+\frac{D^{a\neq v}}{|D|}Gini(D^{a\neq v}) Gini_index(D,a)=DDa=vGini(Da=v)+DDa=vGini(Da=v)
    然后选取基尼值属最小的属性及其对应取值作为最优划分属性和最优划分点

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
A03机器学习流程是指在进行机器学习项目时所需要遵循的一系列步骤。下面是A03机器学习流程的主要步骤: 1. 数据收集与观察:首先,需要收集与问题相关的数据,并对数据进行观察,了解数据的特征、缺失值以及异常值等情况。 2. 数据预处理:对收集到的数据进行预处理,包括数据清洗、特征选择、特征变换等操作,目的是为了提高模型的性能和准确性。 3. 模型选择与训练:选择合适的机器学习模型,并对模型进行训练。常见的机器学习模型包括决策树、支持向量机、神经网络等。 4. 模型评估与调优:通过评估模型在测试集上的性能指标(如准确率、召回率等),来判断模型的优劣。如果模型性能不佳,需要对模型进行调优,常用的调优方法包括超参数调整、交叉验证等。 5. 模型部署与应用:将训练好的模型部署到实际应用中,并对新的数据进行预测和分类。 6. 模型监控与更新:对已部署的模型进行监控,定期更新模型参数,以保证模型的准确性和稳定性。 A03机器学习流程能够帮助我们在机器学习项目中有条不紊地进行工作,并且能够提高模型的性能和准确性。每个步骤都需要认真对待,对于数据的收集与预处理要尤为重视,因为数据的质量直接关系到模型的准确性。此外,在模型选择与训练中,根据具体问题的特点选择合适的模型也是十分重要的一步。最后,对模型进行评估、调优以及部署与更新也是不可忽视的步骤,它们能够提高模型的稳定性和持续性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@小冯@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值