主页 > 人工智能  > 

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

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

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


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

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

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

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

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

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


第一步:什么是决策树? 直观理解:如果……那么……

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

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

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

这实际上就是一棵决策树:

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

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


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

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

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

🚀 机器学习模型的目标:

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

图示:决策树的构建过程

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

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

示例:

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

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


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

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

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

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


第四步:什么是随机森林? 想象一个法官陪审团

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

🌲 随机森林的工作方式

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

🚀 图示:

🌲 决策树 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
总结

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

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

标签:

零基础入门机器学习--第五章决策树与随机森林由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“零基础入门机器学习--第五章决策树与随机森林