当前位置: 首页 > news >正文

连续值和缺失值详解

第一部分:如何处理连续值?

1.1 什么是连续值?
  • 中文名称:连续值
  • 英文全称:Continuous Value
  • 英文音标:/kənˈtɪnjuəs ˈvæljuː/

“连续值”就是那些可以不断细分,有无限多个可能取值的数值。比如“重量”,它可以是150克、150.5克、151克等等,这些数字是连续的,构成了一个连续的序列。与之相对的是“离散值”,比如“颜色”只能是“红色”、“绿色”、“黄色”这些有限的、独立的选项。

在决策树中,我们通常的决策规则是:“如果颜色是红色,那么…”。但对于重量,我们没法说“如果重量是150克”,因为可能一个151克的水果也和150克的非常相似。所以,我们需要一个方法,把连续的值变成一个类似“是/否”的决策问题。

1.2 核心思想:找到一条“最佳分界线”

处理连续值的核心思想非常简单:为这个连续的特征找到一条最好的“分界线”(也叫阈值),把数据分成两部分。

举个例子:
我们有10个水果,已知重量和它们是否是苹果。数据如下(重量单位:克):
[120, 130, 140, 150, 160, 170, 180, 190, 200, 210]
对应的类别是:[梨,梨,梨,梨,苹果,苹果,苹果,苹果,苹果,苹果]

我们一眼就能看出来,大概在150克到160克之间有一条“分界线”,左边的很可能是梨,右边的很可能是苹果。

那么,决策树怎么精确地找到这个分界线呢?

1.3 具体步骤:“候选分裂点”与“评选标准”

第一步:排序并生成“候选分裂点”
我们把所有重量数据排序:120, 130, 140, 150, 160, 170, 180, 190, 200, 210。
“候选分裂点”就是相邻两个值的中点。为什么要中点?因为它正好是这两个值的分界线。
所以,我们的候选分裂点有:125, 135, 145, 155, 165, 175, 185, 195, 205。

第二步:为每个候选点“打分”,选出最好的
现在,我们需要一个“评选标准”来判断哪个分裂点最好。这个标准就是看分裂之后,两组数据的“纯度”是不是更高了

  • 什么是纯度? 就是一组数据里,同类别的样本尽可能多。比如一组全是苹果,纯度就非常高。
  • 如何衡量纯度? 我们用一个叫“基尼指数”的工具。
    • 中文名称:基尼指数
    • 英文全称:Gini Index
    • 英文音标:/ˈdʒiːni ˈɪndeks/
    • 计算公式Gini(D)=1−∑k=1K(pk)2\text{Gini}(D) = 1 - \sum_{k=1}^{K}(p_k)^2Gini(D)=1k=1K(pk)2
      • DDD 代表当前的数据集。
      • KKK 是类别的数量(比如我们只有苹果和梨,K=2)。
      • pkp_kpk 是第 kkk 类样本在这个数据集中所占的比例。

我们来计算一下:

  • 对于整个数据集(10个水果,4个梨,6个苹果):

    • p梨=4/10=0.4p_{\text{梨}} = 4/10 = 0.4p=4/10=0.4
    • p苹果=6/10=0.6p_{\text{苹果}} = 6/10 = 0.6p苹果=6/10=0.6
    • Gini总=1−(0.42+0.62)=1−(0.16+0.36)=0.48\text{Gini}_{\text{总}} = 1 - (0.4^2 + 0.6^2) = 1 - (0.16 + 0.36) = 0.48Gini=1(0.42+0.62)=1(0.16+0.36)=0.48
  • 我们试试用 155 这个分裂点:

    • 左组(重量 ≤ 155):[120, 130, 140, 150, 160] -> [梨,梨,梨,梨,苹果] -> (4个梨,1个苹果)

    • 右组(重量 > 155):[170, 180, 190, 200, 210] -> [苹果,苹果,苹果,苹果,苹果] -> (5个苹果)

    • 左组的基尼指数:1−((45)2+(15)2)=1−(0.64+0.04)=0.321 - ((\frac{4}{5})^2 + (\frac{1}{5})^2) = 1 - (0.64 + 0.04) = 0.321((54)2+(51)2)=1(0.64+0.04)=0.32

    • 右组的基尼指数:1−((05)2+(55)2)=1−(0+1)=01 - ((\frac{0}{5})^2 + (\frac{5}{5})^2) = 1 - (0 + 1) = 01((50)2+(55)2)=1(0+1)=0 (全是苹果,纯度100%!)

    • 整体的加权基尼指数510×0.32+510×0=0.16\frac{5}{10} \times 0.32 + \frac{5}{10} \times 0 = 0.16105×0.32+105×0=0.16

  • 分裂带来的“收益”:原来的基尼指数是0.48,分裂后变成了0.16。收益 = 0.48 - 0.16 = 0.32。这个收益很大!

决策树会像这样,为每一个候选分裂点(125, 135, …)都计算一遍这个“收益”,然后选择收益最大的那个点,作为最终的分裂规则。在我们的例子里,155很可能就是那个最佳分界线。

最终的分裂规则就是:如果重量 ≤ 155克,则分到左子树;如果重量 > 155克,则分到右子树。


第二部分:如何处理缺失值?

2.1 什么是缺失值?
  • 中文名称:缺失值
  • 英文全称:Missing Value
  • 英文音标:/ˈmɪsɪŋ ˈvæljuː/

“缺失值”就是数据集中某个特征的信息空缺了。比如,我们有一个水果,颜色和形状都知道,但“重量”忘记称了,这一栏就是空着的或者标记为NaN。

直接扔掉带有缺失值的样本太浪费了,尤其是我们辛苦收集的数据。所以,我们需要一些聪明的方法来利用这些不完整的数据。

2.2 核心思想:让数据自己“说话”

处理缺失值的核心思想是:基于数据中已有的、非缺失的信息,来合理地“推测”或“分配”缺失值样本的命运。

2.3 常见处理方法

方法一:简单粗暴法——直接删除
如果带有缺失值的样本非常少,比如1000个里只有1、2个,那么直接删除它们对整体影响不大。这是最简单的方法。

方法二:通用填补法——用众数/中位数/均值填补

  • 众数:对于“颜色”这种离散特征,用数据集中出现次数最多的颜色来填补。
  • 均值/中位数:对于“重量”这种连续特征,用所有水果的平均重量或中间重量来填补。

方法三:决策树专属的聪明方法

这是重点,我们讲两种最经典的方法:

1. 替代分裂

  • 中文名称:替代分裂
  • 英文全称:Surrogate Splits
  • 英文音标:/ˈsɜːrəɡət splɪts/

这就像你有一个备选方案。假设我们最好的分裂特征是“重量”,规则是“≤155克”。
现在来了一个水果,它的重量数据缺失了,我们没法用它做判断。怎么办?
我们提前找好一个和“重量”最相似的“替补队员”,比如“颜色”。我们发现,在已知重量的数据里,红色和重量>155克有很强的关联,绿色和重量≤155克有很强的关联。

那么,当重量缺失时,我们就问:“它是红色的吗?”

  • 如果是,我们就把它当作“重量>155克”来处理,分到苹果组。
  • 如果不是(是绿色),我们就把它当作“重量≤155克”来处理,分到梨组。

这个“颜色”特征,就是“重量”特征的替代分裂。决策树在训练时,会为每个主要分裂点都找好这样几个“替补队员”,以备不时之需。

2. 概率分配法

  • 中文名称:概率分配
  • 英文全称:Probability Allocation
  • 英文音标:/ˌprɒbəˈbɪləti ˌæləˈkeɪʃən/

这个方法更精细。它不把缺失值的样本硬塞到某一边,而是让它“分身”,以一定的概率同时去两边。

举个例子:
还是那个“重量 ≤ 155克”的分裂点。

  • 非缺失的样本中,有80%的样本去了左子树(梨),20%的样本去了右子树(苹果)。
  • 那么,对于一个重量缺失的样本,我们就让它:
    • 以80%的权重进入左子树参与后续计算。
    • 以20%的权重进入右子树参与后续计算。

这就好比说:“我不知道你到底该去哪,但根据历史经验,像你这样的情况,有八成的可能是梨,两成的可能是苹果。所以,我让你在两个分支里都占个位置,但你的‘投票权’会按这个比例打折。”

这种方法能最大程度地利用信息,不会因为一个特征的缺失而完全丢失整个样本的价值。


总结回顾

处理问题核心思想关键方法
连续值找到一条最佳的“分界线”(阈值)1. 排序后取中点作为候选分裂点
2. 用基尼指数等标准打分,选收益最大的点
缺失值利用已有信息推测或分配1. 替代分裂:找个替补特征做判断
2. 概率分配:让样本按概率“分身”到各个分支

Q1:构造树时,如何在(训练集中)属性值有部分缺失的情况下选择划分属性?

通俗理解: 当训练数据有些不完整时,我们该怎么挑选"最佳提问问题"?

核心方法:使用"可用样本"进行计算,并给予"折扣"

决策树(特别是C4.5算法)使用一种非常聪明的方法来解决这个问题。

第一步:只看"完整"的数据

  • 当我们评估一个属性(比如"年级")时,我们暂时忽略在这个属性上有缺失值的所有样本。
  • 我们只使用那些"年级"信息完整的学生数据来计算这个属性的"好坏"(比如信息增益)。

第二步:计算"有效比例",打个折扣

  • 计算在"年级"这个属性上,有效样本占全体样本的比例。
  • 数学公式ρ=有效样本数总样本数\rho = \frac{\text{有效样本数}}{\text{总样本数}}ρ=总样本数有效样本数
  • 例如:总共有100个学生,其中10个学生的"年级"信息缺失,那么有效比例 ρ=90100=0.9\rho = \frac{90}{100} = 0.9ρ=10090=0.9

第三步:计算"打折后"的信息增益

  • 我们先正常计算只用有效样本得到的信息增益,记作 Gain完整\text{Gain}_{\text{完整}}Gain完整
  • 然后给这个增益打个折:Gain最终=ρ×Gain完整\text{Gain}_{\text{最终}} = \rho \times \text{Gain}_{\text{完整}}Gain最终=ρ×Gain完整
  • 为什么打折? 因为这个属性无法处理缺失值的样本,它的"实用性"打了折扣。一个即使理论上很好,但如果很多数据都用不上的属性,其实际价值就没那么高了。

第四步:比较所有属性

  • 我们对每一个属性(“年级”、“专业”、“上次借书天数”)都重复上述步骤,计算出它们各自"打折后"的信息增益。
  • 最后,我们选择"打折后"信息增益最高的那个属性,作为当前节点的划分属性。

举个例子:

  • 属性A(年级):用90%的样本计算,原始增益很高为0.3,打折后 0.9 * 0.3 = 0.27
  • 属性B(专业):用95%的样本计算,原始增益中等为0.25,打折后 0.95 * 0.25 ≈ 0.24
  • 属性C(上次借书天数):用100%的样本计算,原始增益较低为0.22,打折后 1.0 * 0.22 = 0.22

最终,我们会选择属性A(年级)作为划分属性,因为它打折后的增益最高。


Q2:构造树时,给定划分属性,若训练样本在该属性上的值缺失,如何对该样本进行划分?

通俗理解: 我们已经决定按"年级"来分班了,但有个学生没填年级,我们该把他分到哪个班?

核心方法:概率分配法 —— 让这个学生"分身"到所有班级

我们不抛弃这个学生,而是用一种聪明的方式让他"参与"到所有分支中。

第一步:查看"完整"样本的分布情况

  • 在我们选定的划分属性(比如"年级")上,查看所有非缺失样本是如何被划分的。
  • 假设"年级"这个属性我们根据数据分布,决定分为"低年级(1-2年级)"和"高年级(3-4年级)"两类。
  • 在90个有效样本中:
    • 有60个被分到了"低年级"分支
    • 有30个被分到了"高年级"分支

第二步:计算分配到各分支的概率

  • 分配到"低年级"分支的概率:p低=6090=23p_{\text{低}} = \frac{60}{90} = \frac{2}{3}p=9060=32
  • 分配到"高年级"分支的概率:p高=3090=13p_{\text{高}} = \frac{30}{90} = \frac{1}{3}p=9030=31

第三步:让缺失值样本"带权分身"

  • 对于那个"年级"缺失的学生,我们把他硬塞到某一个分支。
  • 而是让他同时进入两个分支,但他在每个分支中的"重要性"(权重)不同。
  • 他在"低年级"分支中的权重是 23\frac{2}{3}32
  • 他在"高年级"分支中的权重是 13\frac{1}{3}31

这样做的意义:

  • 我们没有丢失这个学生的所有信息(他可能专业、借书天数等特征是完整的)。
  • 我们基于大多数人的情况,给了他一个最合理的"待遇"。
  • 在后续构建子树时,这两个"分身"会带着各自的权重参与计算。

Q3:使用树时,若未知样本在该属性上的值缺失,如何对该样本进行处理?

通俗理解: 树已经建好了,现在来了一个新学生借书,但他的"年级"信息缺失,我们该怎么用这棵树来预测他是否会常来借书?

核心方法:多路径探索,加权投票决策

当我们要预测一个新样本,但在某个决策节点遇到属性缺失时,我们不会卡住,而是同时探索所有可能的路径。

第一步:在决策节点"分头行动"

  • 当预测过程进行到一个节点,该节点用属性A(比如"年级")做判断,但新样本的A值缺失。
  • 这时,我们不选择单一分支,而是让这个样本同时进入所有子节点继续向下预测。

第二步:记录每条路径的"权重"

  • 每条路径的权重,来自于训练时Q2中计算出的概率。
  • 继续上面的例子:在"年级"这个节点,我们去查看训练时计算好的概率:
    • 走向"低年级"子树的权重是 23\frac{2}{3}32
    • 走向"高年级"子树的权重是 13\frac{1}{3}31

第三步:在所有叶子节点收集结果

  • 这个样本会同时到达多个不同的叶子节点。
  • 每个叶子节点会给出一个预测结果(比如:"会常来借书"的概率是0.8,"不会常来"的概率是0.2)。

第四步:加权汇总,得出最终预测

  • 我们将所有到达的叶子节点的预测结果,按照路径权重进行加权平均。
  • 数学公式最终概率=∑每个叶子(路径权重×该叶子的预测概率)\text{最终概率} = \sum_{\text{每个叶子}} (\text{路径权重} \times \text{该叶子的预测概率})最终概率=每个叶子(路径权重×该叶子的预测概率)
  • 在我们的例子中:
    • 假设"低年级"叶子节点预测"会常来"的概率是 0.9
    • 假设"高年级"叶子节点预测"会常来"的概率是 0.4
    • 那么最终概率 = (23×0.9)+(13×0.4)=0.6+0.133=0.733(\frac{2}{3} \times 0.9) + (\frac{1}{3} \times 0.4) = 0.6 + 0.133 = 0.733(32×0.9)+(31×0.4)=0.6+0.133=0.733

所以,我们预测这个新学生"会常来借书"的概率是73.3%。


总结与对比

让我们把三个问题的解决方案放在一起,你会发现它们逻辑上是连贯的:

问题核心解决方案形象比喻
Q1:选哪个属性?打折比较法:只用完整数据计算,然后按有效比例打折选一个"大多数人都能回答"且"答案有价值"的问题
Q2:训练时缺失怎么办?概率分配法:让样本按概率"分身"到所有分支让不知道自己在几班的学生,按比例去每个班都听听课
Q3:预测时缺失怎么办?多路径加权法:同时走所有路径,结果按权重汇总遇到答不出的问题,就把所有可能性都考虑一遍,再综合判断
http://www.dtcms.com/a/546098.html

相关文章:

  • 仓颉FFI外部函数接口:跨语言互操作的工程实践
  • 串口、RS-232与RS-485应用全解析
  • 推广公司网站premium WordPress
  • 成都建站seo奉贤集团公司网站建设
  • 网站的空间和域名iis内网站设置允许脚本执行
  • 商旅平台定义、选型逻辑与2025主流商旅平台汇总
  • 0144. 二叉树的前序遍历
  • 做网站的钱叫什么科目建设工程自学网站
  • 自动驾驶汽车与利益相关者互动的功能安全与网络安全分析方法
  • 如何将本地项目上传至github
  • 整合STPA、ISO 26262与SOTIF的自动驾驶安全需求推导与验证
  • 广东网站备案系统北京网页设计机构
  • Linux系统启动光盘/U盘制作
  • 外贸网站怎样做推广商城微信网站怎么做
  • Adobe SAP S/4HANA 升级实践:企业规模化转型关键要素
  • 可信赖的深圳网站建设微信开店小程序怎么弄
  • 鄂尔多斯网站制作 建设wordpress主题游戏cms
  • Cargo.toml 配置文件详解:掌控 Rust 项目的核心枢纽
  • css boder-image 属性使用
  • netty异步日志架构
  • 图像分割介绍
  • 建个网站能赚钱吗大型网站建设基本流程
  • 肇庆市专注网站建设平台wordpress 数据库导入数据库文件
  • 电子学会青少年机器人技术(三级)等级考试试卷-实操题(2025年9月)
  • 根桥故障恢复过程
  • 仓颉技术:Set集合的去重机制
  • 哪里有专业网站建设公司如何登陆建设银行信用卡网站
  • 网站下载的app删除了怎么找到做家具网站要多少钱
  • 建设报名系统官方网站网络科技公司注册
  • 天将建设集团有限公司网站机床网站建设