《机器学习by周志华》学习笔记-决策树-03连续值与缺失值

1、连续值处理

到目前为止,我们在决策树01、02中仅讨论了基于离散属性来生成决策树,而现实任务中常会遇到连续属性,所以在本章的学习中,我们将会讨论如何在决策树学习中使用连续属性。

1.1、概念

取值范围是连续的实数值或者整数值的属性就是「连续属性」,与离散属性相对立。

这种属性通常可以用一个区间来描述,比如身高、体重、温度等。连续属性的取值通常是在一个连续的范围内变化的,因此它们的值可以是任何一个范围内的实数值或者整数值,而不是一组离散的取值。

1.2、背景

由于连续属性的可取值数目不再有限,因此不能直接根据「连续属性」的可取值来对节点进行划分,此时,想要生成决策树,就需要使用「连续属性离散化」技术解决。

连续属性离散化技术:

①概念:是「数据变换」的一种方式,用于生成决策树。

②方法:连续属性离散化-优快云博客

  • 无监督离散化
    • 等宽法
    • 灯频法
    • K-means聚类分析
    • ...
  • 有监督离散化

本文采用了二分法(bi-partition)对连续属性进行处理,这正是C4.5决策树算法中采用的机制。 

1.3、方法

给定样本集D和连续属性a,假设a在D上出现了n个不同的取值,将这些值从小到大进行排序,记为集合Ai,可表示为:

A_{i}=\left \{ a_{1} ,a_{2} ,...,a_{n} \right \}

基于划分点t(a_{1}\leq t\leq a_{n}),可将D分为子集D_{t}^{-}D_{t}^{+},其中:

D_{t}^{-}=[a_{1},t]

D_{t}^{+}=(t,a_{n}]

对于连续属性a相邻取值a_{i}a_{i+1}来说,t在区间[a_{i},a_{i+1})中任意取值所产生的划分结果相同,因此对连续属性a,我们可以考察a1~a(n-1)取值的候选划分点的集合Ta:

T_{a}=\left \{ t_{1},t_{2},...,t_{n-1} \right \}=\left \{ \frac{a_{i}+a_{i+1}}{2} \right \}(1\leq i\leq n-1)

然后,我们将按照离散属性一样来考察这n-1个划分点,选择最优的划分点来对样本集合进行划分:

Gain(D,A_{i})=\underset{t\in T_{a}}{max}Gain(D,A_{i},t)=\underset{t\in T_{a}}{Ent(D)}-\sum_{\lambda \in (-,+)}^{}\frac{|D_{t}^{\lambda }|}{|D|}Ent(D_{t}^{\lambda })

其中Gain(D,A_{i},t)是样本D给予划分点t二分之后的「信息增益」,则需要我们求出「信息增益」最大的划分点t_{i}

1.4、案例

给定西瓜数据集D如下表:

表1:西瓜数据集——离散属性&连续属性

编号 色泽(A1) 根蒂(A2) 敲声(A3) 纹理(A4) 脐部(A5) 触感(A6) 密度(A7) 含糖率(A8) 是否好瓜(Y)
x1 青绿A_{1}^{1} 蜷缩A_{2}^{1} 浑浊A_{3}^{1} 清晰A_{4}^{1} 凹陷A_{5}^{1} 硬滑A_{6}^{1} 0.697 0.460 是Y1
x2 乌黑A_{1}^{2} 蜷缩A_{2}^{1} 沉闷A_{3}^{2} 清晰A_{4}^{1} 凹陷A_{5}^{1} 硬滑A_{6}^{1} 0.774 0.376 是Y1
x3 乌黑A_{1}^{2} 蜷缩A_{2}^{1} 浑浊A_{3}^{1} 清晰A_{4}^{1} 凹陷A_{5}^{1} 硬滑A_{6}^{1} 0.634 0.264 是Y1
x4 青绿A_{1}^{1} 蜷缩A_{2}^{1} 沉闷A_{3}^{2} 清晰A_{4}^{1} 凹陷A_{5}^{1} 硬滑A_{6}^{1} 0.608 0.318 是Y1
x5 浅白A_{1}^{3} 蜷缩A_{2}^{1} 浑浊A_{3}^{1} 清晰A_{4}^{1} 凹陷A_{5}^{1} 硬滑A_{6}^{1} 0.556 0.215 是Y1
x6 青绿A_{1}^{1} 稍蜷A_{2}^{2} 浑浊A_{3}^{1} 清晰A_{4}^{1} 稍凹A_{5}^{2} 软粘A_{6}^{2} 0.403 0.237 是Y1
x7 乌黑A_{1}^{2} 稍蜷A_{2}^{2} 浑浊A_{3}^{1} 稍糊A_{4}^{2} 稍凹A_{5}^{2} 软粘A_{6}^{2} 0.481 0.149 是Y1
x8 乌黑A_{1}^{2} 稍蜷A_{2}^{2} 浑浊A_{3}^{1} 清晰A_{4}^{1} 稍凹A_{5}^{2} 硬滑A_{6}^{1} 0.437 0.211 是Y1
x9 乌黑A_{1}^{2} 稍蜷A_{2}^{2} 沉闷A_{3}^{2} 稍糊A_{4}^{2} 稍凹A_{5}^{2} 硬滑A_{6}^{1} 0.666 0.091 否Y2
x10 青绿A_{1}^{1} 硬挺A_{2}^{3} 清脆A_{3}^{3} 清晰A_{4}^{1} 平坦A_{5}^{3} 软粘A_{6}^{2} 0.243 0.267 否Y2
x11 浅白A_{1}^{3} 硬挺A_{2}^{3} 清脆A_{3}^{3} 模糊A_{4}^{3} 平坦A_{5}^{3} 硬滑A_{6}^{1} 0.245 0.057 否Y2
x12 浅白A_{1}^{3} 蜷缩A_{2}^{1} 浑浊A_{3}^{1} 模糊A_{4}^{3} 平坦A_{5}^{3} 软粘A_{6}^{2} 0.343 0.099 否Y2
x13 青绿A_{1}^{1} 稍蜷A_{2}^{2} 浑浊A_{3}^{1} 稍糊A_{4}^{2} 凹陷A_{5}^{1} 硬滑A_{6}^{1} 0.639 0.161 否Y2
x14 浅白A_{1}^{3} 稍蜷A_{2}^{2} 沉闷A_{3}^{2} 稍糊A_{4}^{2} 凹陷A_{5}^{1} 硬滑A_{6}^{1} 0.657 0.198 否Y2
x15</
<think>好的,用户之前让我详细介绍了基于机器学习的证书防伪检测,现在他们又要求详细介绍一下机器学习本身。我需要判断他们的实际需求是什么。可能的情况是,他们在完成一个项目或论文,需要先理解机器学习的基础知识,再结合到具体应用中。 首先,用户可能是学生或研究人员,正在撰写相关论文,需要机器学习的基础部分来支撑他们的技术方案。他们之前已经得到了关于证书防伪检测的具体技术细节,现在需要补充理论基础,以增强论文的完整性。 接下来,我需要确定如何组织内容。用户要求“详细介绍”,所以需要涵盖定义、核心概念、主要类型、典型算法、应用场景、学习流程、挑战未来趋势,以及代码示例。这样结构清晰,能够全面覆盖机器学习的基础知识。 需要注意的是,用户可能已经有一定的技术背景,但需要系统的概述。因此,内容需要既全面又不失深度,避免过于简单。同时,结合他们之前的兴趣点(如图像处理、异常检测),在举例时可以多提相关算法和应用,比如CNN、自编码器,这样能更好地他们之前的项目联系起来。 另外,用户提到了核心代码,所以在最后提供一个简单的线性回归示例是合适的,既能展示基础,又不复杂。同时,要确保代码正确且易于理解,注释清楚。 需要检查是否有遗漏的重要概念,比如监督学习无监督学习的区别,常见算法的优缺点,以及机器学习流程中的数据预处理、模型评估等关键步骤。这些内容对于构建完整的理解框架是必要的。 最后,确保语言简洁明了,用中文表达,避免专业术语过多,必要时进行解释。结构上使用标题和子标题,帮助用户快速找到所需信息。同时,保持之前回答一致的格式风格,比如分节、代码块和列表,增强可读性。</think>以下是对机器学习的详细介绍,涵盖基本概念、核心算法、应用场景及技术特点: --- ### 一、机器学习基本定义 **机器学习(Machine Learning)** 是人工智能的分支领域,通过算法使计算机系统能够: 1. 从数据中自动学习规律 2. 无需显式编程即可做出预测或决策 3. 随着经验积累持续优化性能 **数学本质**:在特征空间中找到最优映射函数 `Y = f(X) + ε` (X:输入特征,Y:输出结果,ε:误差项) --- ### 二、三大核心要素 | 要素 | 描述 | 关键技术 | |------|------|----------| | 数据 | 模型学习的基础原料 | 数据清洗、特征工程、数据增强 | | 算法 | 实现知识提取的数学方法 | 神经网络、决策树、支持向量机 | | 算力 | 支撑复杂计算的硬件基础 | GPU加速、分布式计算、TPU专用芯片 | --- ### 三、主要学习范式 #### 1. 监督学习(Supervised Learning) - **特点**:使用带标签数据训练 - **典型任务**: - 分类(Classification):识别手写数字、垃圾邮件过滤 - 回归(Regression):房价预测、股票趋势分析 - **常用算法**: ```python # 示例:Scikit-learn中的决策树分类器 from sklearn.tree import DecisionTreeClassifier clf = DecisionTreeClassifier(max_depth=5) clf.fit(X_train, y_train) # X:特征矩阵, y:标签向量 ``` #### 2. 无监督学习(Unsupervised Learning) - **特点**:从无标签数据中发现模式 - **典型任务**: - 聚类(Clustering):客户群体划分 - 降维(Dimensionality Reduction):高维数据可视化 - **经典算法**: ```python # K-Means聚类示例 from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3) kmeans.fit(X) # 自动发现数据分组 ``` #### 3. 强化学习(Reinforcement Learning) - **特点**:通过试错机制学习最优策略 - **核心要素**: - 智能体(Agent) - 环境(Environment) - 奖励(Reward) - **应用场景**:AlphaGo、自动驾驶决策 --- ### 四、典型算法演进 #### 1. 传统机器学习 | 算法类型 | 代表算法 | 适用场景 | |----------|----------|----------| | 线性模型 | 逻辑回归 | 二分类问题 | | 树模型 | XGBoost | 结构化数据预测 | | 核方法 | SVM | 小样本高维数据 | #### 2. 深度学习(Deep Learning) - **核心结构**:多层神经网络 - **里程碑模型**: - CNN:图像处理(ResNet、YOLO) - RNN:时序数据处理(LSTM) - Transformer:自然语言处理(BERT、GPT) ```python # 简单的PyTorch神经网络示例 import torch.nn as nn class SimpleNN(nn.Module): def __init__(self): super().__init__() self.layers = nn.Sequential( nn.Linear(784, 128), # 输入层 nn.ReLU(), nn.Linear(128, 10) # 输出层 ) def forward(self, x): return self.layers(x) ``` --- ### 五、关键技术流程 #### 1. 完整学习闭环 ``` 数据采集 → 特征工程 → 模型训练 → 评估优化 → 部署监控 ``` #### 2. 核心环节详解 - **特征工程**: - 缺失值处理(均值填补、KNN填补) - 特征编码(One-Hot、Target Encoding) - 特征选择(卡方检验、L1正则化) - **模型评估**: - 分类任务:准确率、F1 Score、ROC-AUC - 回归任务:MAE、MSE、R² - 交叉验证:K-Fold验证 --- ### 六、应用场景矩阵 | 领域 | 典型应用 | 常用算法 | |------|----------|----------| | 计算机视觉 | 人脸识别、医学影像分析 | CNN、Vision Transformer | | 自然语言处理 | 机器翻译、情感分析 | BERT、LSTM | | 推荐系统 | 商品推荐、内容推荐 | 协同过滤、Wide&Deep | | 金融风控 | 欺诈检测、信用评分 | XGBoost、孤立森林 | --- ### 七、技术挑战发展 #### 1. 当前挑战 - 数据依赖性强:需要大量标注数据 - 可解释性差:深度学习"黑箱"问题 - 伦理风险:算法偏见、隐私泄露 #### 2. 前沿方向 - 小样本学习(Few-Shot Learning) - 自监督学习(Self-Supervised Learning) - 神经符号系统(Neuro-Symbolic AI) ```python # 联邦学习示例框架(伪代码) class FederatedLearning: def __init__(self, clients): self.global_model = initialize_model() self.clients = clients def train_round(self): for client in self.clients: client.download(self.global_model) client.train_locally() client.upload_gradients() self.global_model.aggregate_gradients() ``` --- ### 八、学习资源推荐 1. **经典教材**: -机器学习周志华(西瓜书) - 《Pattern Recognition and Machine Learning》 2. **实践平台**: - Kaggle竞赛平台 - Google Colab在线环境 3. **开源框架**: - Scikit-learn(传统机器学习- PyTorch/TensorFlow(深度学习--- 通过这种结构化学习路径,初学者可在6-12个月内建立完整的机器学习知识体系。实际应用中需注意:**没有万能算法,合适的数据处理比模型选择更重要**。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI酱的读书笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值