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

零基础入门机器学习 -- 第五章决策树与随机森林

目标:通过故事 + 直观案例 + 图示,让你完全理解决策树和随机森林,适合零基础学习者!


故事的开始:贷款审批的挑战

小王是一家银行的贷款审批经理,每天他的工作就是审核贷款申请。他的任务是判断:

  • 哪些人值得批准?
  • 哪些人风险较高,需要拒绝?

以前,他用自己的经验来做决定:

  • 收入高的通常可以批准 ✅
  • 信用评分低的人通常风险大 ❌
  • 但有些特殊情况,比如年轻人没有信用记录,应该怎么判断呢?🤔

这时候,他听说了机器学习,一种可以让计算机自动做决策的技术。于是,他决定学习 决策树随机森林 来帮忙!🚀


第一步:什么是决策树?

直观理解:如果……那么……

决策树(Decision Tree)是一种基于规则的学习方法,它就像一个决策流程图,每个条件都会分支,最终给出答案。

我们来看看小王以前的人工决策方法:

  1. 如果 收入 > 50000,那么 借款人通常能还钱,批准贷款。
  2. 否则,如果 信用评分 > 650,那么 也可以批准贷款。
  3. 否则,拒绝贷款。

这实际上就是一棵决策树

                     收入 > 50000?
                     /       \
                  是           否
                 /              \
       批准贷款        信用评分 > 650?
                       /          \
                   是              否
                  /                  \
          批准贷款           拒绝贷款

🔵 这样,小王的“经验”被清晰地整理成了规则!


第二步:机器如何创建决策树?

小王决定让机器自动学习这个“决策流程”。他收集了一些历史数据,包括:

  • 年龄(Age)
  • 收入(Income)
  • 信用评分(Credit Score)
  • 是否有不良信用记录(Bad Credit History)
  • 最终贷款是否批准(Loan Approved)

🚀 机器学习模型的目标

让计算机从数据中学习规则,而不是手动编写!

图示:决策树的构建过程

机器通过计算,自动找到最好的分裂点:

  1. 从哪个特征开始分裂?(如“收入”)
  2. 选择最佳的拆分条件(如“收入 > 50000”)
  3. 继续细分,直到决策完成!

示例:

                     收入 > 50000?
                     /       \
                  是           否
                 /              \
       批准贷款        信用评分 > 650?
                       /          \
                   是              否
                  /                  \
          批准贷款           不良信用记录?
                                /       \
                              是         否
                             /             \
                      拒绝贷款      批准贷款

🔵 计算机自动找到最好的决策路径,比人工更可靠!


第三步:为什么单棵决策树可能不够好?

小王发现单棵决策树虽然直观,但可能有以下问题

  1. 容易过拟合(Overfitting):
    • 过于依赖历史数据,在新数据上表现不好。
  2. 对数据敏感
    • 如果某个特征的值稍微变化,整棵树的决策路径可能改变。

🌳 于是,小王找到了更强大的方法——随机森林!


第四步:什么是随机森林?

想象一个法官陪审团

小王不想依赖一棵决策树,而是找很多棵树一起投票!这就是随机森林(Random Forest) 的思想。

🌲 随机森林的工作方式

  1. 生成多棵决策树(每棵树用不同的数据子集训练)。
  2. 每棵树独立做决策(例如“批准”或“拒绝”)。
  3. 最后投票决定最终结果!

🚀 图示:

               🌲 决策树 1 → 批准
客户申请 →   🌲 决策树 2 → 拒绝
               🌲 决策树 3 → 批准
                 ...
         最终投票结果:✔️ 批准

随机森林的优势:
更稳定:即使某棵树预测错误,其他树能纠正它。
更准确:比单棵树表现更好,不容易过拟合。

🔵 像一个团队讨论,而不是只听一个人的意见!


第五步:如何训练决策树模型?

🚀 现在,小王准备让计算机来训练一个真正的贷款审批预测模型

1️⃣ 加载数据

import pandas as pd

# 创建贷款数据
data = {
    'Age': [25, 45, 35, 50, 23, 40, 60, 30, 27, 48],
    'Income': [50000, 80000, 60000, 120000, 30000, 70000, 150000, 50000, 40000, 90000],
    'Credit Score': [650, 700, 720, 680, 580, 710, 750, 640, 600, 730],
    'Bad Credit History': ['No', 'No', 'Yes', 'No', 'Yes', 'No', 'No', 'Yes', 'No', 'No'],
    'Loan Approved': ['Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes', 'Yes']
}

df = pd.DataFrame(data)

示例输出:

   Age  Income  Credit Score Bad Credit History Loan Approved
0   25   50000           650                 No           Yes
1   45   80000           700                 No           Yes
2   35   60000           720                Yes            No
3   50  120000           680                 No           Yes
4   23   30000           580                Yes            No
5   40   70000           710                 No           Yes
6   60  150000           750                 No           Yes
7   30   50000           640                Yes            No
8   27   40000           600                 No           Yes
9   48   90000           730                 No           Yes

2️⃣ 预处理数据

from sklearn.preprocessing import LabelEncoder

# 将"Yes/No"转换为 1/0
label_encoder = LabelEncoder()
df['Bad Credit History'] = label_encoder.fit_transform(df['Bad Credit History'])
df['Loan Approved'] = label_encoder.fit_transform(df['Loan Approved'])
print(df)

示例输出:

   Age  Income  Credit Score  Bad Credit History  Loan Approved
0   25   50000           650                   0              1
1   45   80000           700                   0              1
2   35   60000           720                   1              0
3   50  120000           680                   0              1
4   23   30000           580                   1              0
5   40   70000           710                   0              1
6   60  150000           750                   0              1
7   30   50000           640                   1              0
8   27   40000           600                   0              1
9   48   90000           730                   0              1

3️⃣ 训练决策树

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split

X = df[['Age', 'Income', 'Credit Score', 'Bad Credit History']]
y = df['Loan Approved']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练决策树
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)

第六步:如何验证模型准确性?

🔍 1️⃣ 计算准确率

from sklearn.metrics import accuracy_score

y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'模型准确率: {accuracy:.2f}')

示例输出:

模型准确率: 1.00

总结

🎯 决策树 是一种基于“如果…那么…”的分类方法。
🎯 随机森林 是多棵决策树一起投票,提高准确性和稳定性。
🎯 训练模型 需要数据预处理、训练、测试和评估。

💡 **你学会了吗?如果还有疑问,可以试着用你的生活案例来画一棵决策树!**😃

相关文章:

  • BSD协议栈:多播
  • Visual Basic语言的数据类型
  • Logo语言的图形用户界面
  • jar命令解压jar包及更新jar的配置文件
  • RTMP(Real-Time Messaging Protocol)
  • 网工项目理论1.11 网络出口设计
  • seata基本使用
  • 【Java】Mongodb
  • UI自动化教程 —— 元素定位技巧:精确找到你需要的页面元素
  • Kafka偏移量管理全攻略:从基础概念到高级操作实战
  • 如何在yolov8系列运行自己的数据集
  • NAT(网络地址转换)技术详解:网络安全渗透测试中的关键应用与防御策略
  • 嵌入式人工智能应用-第四章 决策树 6
  • PostgreSQL 创建数据库
  • 一个基于Spring Boot和Vue.js的web商城系统-邻家小铺
  • SyntaxError: invalid syntax
  • MYSQL中的性能调优方法
  • Mac 安装Ollama和llama3,本地部署LobeChat和刘皇叔聊三国
  • Rust编程语言入门教程(四)猜数游戏:一次猜测
  • HarmonyOS4-工具安装
  • 为小龙虾洗清这些“黑锅”,这份科学吃虾指南请收好
  • 携程:今年第一季度营业收入约138亿元,入境旅游预订同比增长超100%
  • 每日475.52元!最高检公布最新侵犯公民人身自由的赔偿金标准
  • 央企通号建设集团有限公司原党委常委、副总经理叶正兵被查
  • AI创业者聊大模型应用趋势:可用性和用户需求是关键
  • 中国首颗地质行业小卫星“浙地一号”成功发射