【机器学习基础】机器学习入门核心算法:逻辑回归(Decision Tree)

在这里插入图片描述

机器学习入门核心算法:逻辑回归(Decision Tree)

  • 一、算法逻辑
      • 1.1 基本概念
      • 1.2 算法流程
  • 二、算法原理与数学推导
      • 2.1 特征选择指标
        • 信息熵(ID3算法)
        • 信息增益(Information Gain)
        • 信息增益率(C4.5算法)
        • 基尼系数(CART算法)
      • 2.2 决策树生成算法
      • 2.3 剪枝处理
        • 预剪枝(Pre-pruning)
        • 后剪枝(Post-pruning)
  • 三、模型评估
      • 3.1 评估指标
      • 3.2 学习曲线分析
  • 四、应用案例
      • 4.1 鸢尾花分类
      • 4.2 金融风控评分卡
  • 五、经典面试题
      • 问题1:ID3、C4.5、CART的区别?
      • 问题2:如何处理连续特征?
      • 问题3:决策树的优缺点?
  • 六、高级优化技术
      • 6.1 多变量决策树
      • 6.2 增量学习
      • 6.3 异构决策树
  • 七、最佳实践指南
      • 7.1 参数调优建议
      • 7.2 特征处理技巧
  • 总结与展望

一、算法逻辑

1.1 基本概念

决策树是一种树形结构监督学习算法,通过递归地将特征空间划分为互不重叠的区域来完成分类或回归任务。核心组成元素:

  • 根节点:包含全体数据的起始节点
  • 内部节点:表示特征判断条件的分支节点
  • 叶节点:存放最终决策结果的终端节点

关键特点

  1. 天然支持可解释性(白盒模型)
  2. 可处理数值型和类别型数据
  3. 通过树深度控制模型复杂度

1.2 算法流程

构建决策树的递归过程

  1. 选择当前最优划分特征
  2. 根据特征取值分割数据集
  3. 对每个子集重复上述过程直到:
    • 节点样本纯度达到阈值
    • 达到最大树深度
    • 样本数量小于分裂阈值

决策过程可视化

是否年龄>30?
├── 是 → 是否有房产?
│   ├── 是 → 批准贷款
│   └── 否 → 拒绝贷款
└── 否 → 收入>50k?├── 是 → 批准贷款└── 否 → 拒绝贷款

二、算法原理与数学推导

2.1 特征选择指标

信息熵(ID3算法)

衡量数据集混乱程度:
E n t ( D ) = − ∑ k = 1 K p k log ⁡ 2 p k Ent(D) = -\sum_{k=1}^K p_k \log_2 p_k Ent(D)=k=1Kpklog2pk
其中 p k p_k pk为第 k k k类样本的比例

信息增益(Information Gain)

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)
缺点:偏向选择取值多的特征

信息增益率(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

基尼系数(CART算法)

G i n i ( D ) = 1 − ∑ k = 1 K p k 2 Gini(D) = 1 - \sum_{k=1}^K p_k^2 Gini(D)=1k=1Kpk2
基尼指数:
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)

2.2 决策树生成算法

ID3算法伪代码

def create_tree(D, A):if D中样本全属于同一类别C:return 叶节点标记为Cif A =or D在所有特征上取值相同:return 叶节点标记为D中最多类选择最优划分特征a*生成分支节点:for a*的每个取值v:Dv = D中在a*上取值为v的子集if Dv为空:分支标记为D中最多类else:递归调用create_tree(Dv, A-{a*})return 分支节点

2.3 剪枝处理

预剪枝(Pre-pruning)

在树生成过程中提前停止分裂:

  • 设置最大深度max_depth
  • 设置节点最小样本数min_samples_split
  • 设置信息增益阈值min_impurity_decrease
后剪枝(Post-pruning)

生成完整树后进行剪枝:

  1. 计算节点经验熵:
    C α ( T ) = C ( T ) + α ∣ T ∣ C_{\alpha}(T) = C(T) + \alpha |T| Cα(T)=C(T)+αT
    • C ( T ) C(T) C(T):模型对训练数据的预测误差
    • ∣ T ∣ |T| T:叶节点个数
  2. 自底向上递归剪枝,选择使 C α C_{\alpha} Cα最小的子树

三、模型评估

3.1 评估指标

任务类型常用指标计算公式
分类准确率、F1 Score、AUC A c c u r a c y = T P + T N N Accuracy = \frac{TP+TN}{N} Accuracy=NTP+TN
回归MSE、MAE、R² M S E = 1 n ∑ ( y i − y ^ i ) 2 MSE = \frac{1}{n}\sum(y_i-\hat{y}_i)^2 MSE=n1(yiy^i)2

3.2 学习曲线分析

过拟合识别

训练集准确率:0.98
测试集准确率:0.72
→ 模型过拟合

解决方案

  • 增加剪枝强度
  • 减少树的最大深度
  • 使用集成方法(如随机森林)

四、应用案例

4.1 鸢尾花分类

数据集:150个样本,4个特征(花萼长宽、花瓣长宽)
实现代码

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_irisiris = load_iris()
clf = DecisionTreeClassifier(max_depth=3)
clf.fit(iris.data, iris.target)# 可视化决策树
from sklearn.tree import plot_tree
plot_tree(clf, feature_names=iris.feature_names)

模型效果

  • 准确率:0.96
  • 关键分裂特征:花瓣长度(Petal length)

4.2 金融风控评分卡

业务场景:信用卡申请风险评估
特征工程

  1. WOE编码处理类别变量:
    W O E i = ln ⁡ ( B a d i / T o t a l B a d G o o d i / T o t a l G o o d ) WOE_i = \ln\left(\frac{Bad_i/TotalBad}{Good_i/TotalGood}\right) WOEi=ln(Goodi/TotalGoodBadi/TotalBad)
  2. IV值筛选特征:
    I V = ∑ ( B a d % − G o o d % ) × W O E IV = \sum (Bad\% - Good\%) \times WOE IV=(Bad%Good%)×WOE

模型输出

  • 高风险客户识别率:82%
  • KS值:0.48

五、经典面试题

问题1:ID3、C4.5、CART的区别?

对比分析

算法分裂标准任务类型树结构缺失值处理
ID3信息增益分类多叉树不支持
C4.5信息增益率分类多叉树支持
CART基尼系数/MSE分类/回归二叉树支持

问题2:如何处理连续特征?

解决方案

  1. 排序所有特征值: a 1 , a 2 , . . . , a n a_1, a_2,...,a_n a1,a2,...,an
  2. 计算候选划分点:
    T a = { a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 } T_a = \left\{\frac{a_i + a_{i+1}}{2} | 1 \leq i \leq n-1\right\} Ta={2ai+ai+1∣1in1}
  3. 选择使指标最优的划分点:
    G a i n ( D , a , t ) = E n t ( D ) − ∣ D l ∣ ∣ D ∣ E n t ( D l ) − ∣ D r ∣ ∣ D ∣ E n t ( D r ) Gain(D, a, t) = Ent(D) - \frac{|D^l|}{|D|}Ent(D^l) - \frac{|D^r|}{|D|}Ent(D^r) Gain(D,a,t)=Ent(D)DDlEnt(Dl)DDrEnt(Dr)

问题3:决策树的优缺点?

优势分析

  • 直观易懂,可视化效果好
  • 无需数据归一化
  • 自动特征选择

主要缺点

  • 容易过拟合
  • 对样本扰动敏感
  • 忽略特征间相关性

六、高级优化技术

6.1 多变量决策树

在非叶节点使用线性组合进行划分:
∑ i = 1 d w i x i > t \sum_{i=1}^d w_i x_i > t i=1dwixi>t
优势:能捕捉特征间交互作用

6.2 增量学习

支持在线更新决策树:

  1. 保留历史划分结构
  2. 仅更新统计量
  3. 动态调整分裂点

6.3 异构决策树

混合不同分裂标准:

  • 上层使用信息增益率
  • 下层使用基尼指数

七、最佳实践指南

7.1 参数调优建议

参数推荐值范围作用说明
max_depth3-10控制模型复杂度
min_samples_split10-100防止过拟合
ccp_alpha0.01-0.1后剪枝强度

7.2 特征处理技巧

  • 类别变量:优先使用目标编码而非One-Hot
  • 缺失值:采用代理分裂(Surrogate Splits)
  • 高基数特征:进行分箱处理

总结与展望

决策树作为基础机器学习算法,具有模型直观训练高效的特点,在金融风控、医疗诊断等领域广泛应用。随着技术的发展,决策树的改进方向包括:

  1. 与神经网络结合(如深度森林)
  2. 自动化特征工程
  3. 分布式计算优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/907219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络编程3

管道的性质 读缓冲区为空,read阻塞写缓冲区为空,write阻塞一端先close,另一端继续read,read不阻塞,立刻返回0一端先close,另一端继续write,write会触发SIGPIPE信号,进程异常终止 soc…

influxdb时序数据库

以下概念及操作均来自influxdb2 官方文档 InfluxDB2 is the platform purpose-built to collect, store, process and visualize time series data. Time series data is a sequence of data points indexed in time order. Data points typically consist of successive meas…

洛谷 P3372 【模板】线段树 1

【题目链接】 洛谷 P3372 【模板】线段树 1 【题目考点】 1. 线段树 2. 树状数组 【解题思路】 本题要求维护区间和,实现区间修改、区间查询。 可以使用树状数组或线段树完成该问题,本文仅介绍使用线段树的解法。 解法1:线段树 线段树…

软件更新 | TSMaster 202504 版本已上线!三大功能让车载测试更智能

车载测试的智能化时代正在加速到来!TSMaster 202504 版本正式发布,本次更新聚焦以太网通信与数据高效处理,带来三大核心功能升级—以太网报文信息过滤、XCP on Ethernet支持、按时间范围离线回放,助力工程师更精准、更灵活地完成测…

java-单列集合list与set。

集合定位:存储数据的容器 与数组的区别: 数组只能存储同种数据类型数据,集合可以存储不同类型的数据。 数组的长度一旦创建长度不可变,集合的长度是可变的 数组的操作单一,集合的操作比较丰富(增删改查&…

ai之pdf解析工具 PPStructure 还是PaddleOCR

目录 重点是四 先用 PPStructure 版面分析,分成不同的块儿,再选用 PaddleOCR、或PPStructure基础路径OCR模型配置OCR模型配置GPU配置硬件配置性能配置一、框架选型对比分析1. **PaddleOCR核心能力**2. **PP-Structure核心能力**3. **选型结论**二、错误根因分析与修复方案1. …

Android计算机网络学习总结

TCP vs UDP 核心区别​​ ​题目​:TCP为什么称为可靠传输协议?UDP在哪些场景下比TCP更具优势? ​得分要点​: ​可靠性机制​ 三握四挥建立可靠连接确认应答(ACK) 超时重传滑动窗口流量控制拥塞控制&…

深入解析Java组合模式:构建灵活树形结构的艺术

引言:当对象需要树形组织时 在日常开发中,我们经常需要处理具有层次结构的对象集合。比如: 文件系统中的文件夹与文件GUI界面中的容器与控件企业组织架构中的部门与员工 这类场景中的对象呈现明显的整体-部分层次结构,如何优雅…

mobaxterm通过ssh登录docker无图形界面

1. 流程 下面是使用Mobaxterm通过SSH登录Docker无图形界面的步骤: 步骤 操作 1 在本地安装Mobaxterm 2 配置Mobaxterm连接SSH 3 启动Docker容器 4 在Mobaxterm中通过SSH连接到Docker容器 2. 操作步骤 步骤1:安装Mobaxterm 首先&#xff…

【赵渝强老师】HBase的体系架构

HBase是大表(BigTable)思想的一个具体实现。它是一个列式存储的NoSQL数据库,适合执行数据的分析和处理。简单来说,就是适合执行查询操作。从体系架构的角度看,HBase是一种主从架构,包含:HBase H…

linux 新增驱动宏config.in配置

‌1. 添加配置宏步骤‌ ‌1.1 修改 Kconfig(推荐方式)‌ ‌定位 Kconfig 文件‌ 内核各子目录(如 drivers/char/)通常包含 Kconfig 文件,用于定义模块配置选项7。‌添加宏定义‌ 示例:在 drivers/char/Kc…

关于git的使用

下载git 可以去git的官网下载https://git-scm.com/downloads 也可以去找第三方的资源下载,下载后是一个exe应用程序,直接点开一直下一步就可以安装了 右键任意位置显示这两个就代表成功,第一个是git官方的图形化界面,第二个是用…

WPF【11_8】WPF实战-重构与美化(UI 与视图模型的联动,实现INotifyPropertyChanged)

11-13 【重构】INotifyPropertyChanged 与 ObservableCollection 现在我们来完成新建客户的功能。 当用户点击“客户添加”按钮以后系统会清空当前所选定的客户,客户的详细信息以及客户的预约记录会从 UI 中被清除。然后我们就可以在输入框中输入新的客户信息了&am…

ArkUI:鸿蒙应用响应式与组件化开发指南(一)

文章目录 引言1.ArkUI核心能力概览1.1状态驱动视图1.2组件化:构建可复用UI 2.状态管理:从单一组件到全局共享2.1 状态装饰器2.2 状态传递模式对比 引言 鸿蒙生态正催生应用开发的新范式。作为面向全场景的分布式操作系统,鸿蒙的北向应用开发…

List优雅分组

一、前言 最近小永哥发现,在开发过程中,经常会遇到需要对list进行分组,就是假如有一个RecordTest对象集合,RecordTest对象都有一个type的属性,需要将这个集合按type属性进行分组,转换为一个以type为key&…

AI与.NET技术实操系列(八):使用Catalyst进行自然语言处理

引言 自然语言处理(Natural Language Processing, NLP)是人工智能领域中最具活力和潜力的分支之一。从智能客服到机器翻译,再到语音识别,NLP技术正以其强大的功能改变着我们的生活方式和工作模式。 Catalyst的推出极大降低了NLP…

MySQL 8.0 OCP 1Z0-908 题目解析(13)

题目49 Choose the best answer. t is a non - empty InnoDB table. Examine these statements, which are executed in one session: BEGIN; SELECT * FROM t FOR UPDATE;Which is true? ○ A) mysqlcheck --analyze --all - databases will execute normally on all ta…

Docker 一键部署倒计时页面:Easy Countdown全设备通用

Easy Countdown 介绍 Easy countdown是一个易于设置的倒计时页面。可以设置为倒计时或计时器。可用于个人生活、工作管理、教育、活动策划等多个领域。 🚢 项目地址 Github:https://github.com/Yooooomi/easy-countdown 🚀Easy Countdown …

Python训练打卡Day35

模型可视化与推理 知识点回顾: 三种不同的模型可视化方法:推荐torchinfo打印summary权重分布可视化进度条功能:手动和自动写法,让打印结果更加美观推理的写法:评估模式 模型结构可视化 理解一个深度学习网络最重要的2点…

四、生活常识

一、效应定律 效应 1、沉没成本效应 投入的越多,退出的难度就越大,因为不甘心自己之前的所有付出都付之东流。 2、破窗效应 干净的环境下,没有人会第一个丢垃圾,但是当环境变得糟糕,人们就开始无所妒忌的丢垃圾。…