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

《零基础入门AI:传统机器学习核心算法(决策树、随机森林与线性回归)》

一、决策树(分类)

1. 概念
决策树是一种树形结构的分类模型,通过一系列规则(即树的分支)对数据进行分割。每个内部节点代表一个特征判断,每个分支代表判断结果,每个叶节点代表最终分类结果。
类比:就像玩“20个问题”游戏,通过不断提问缩小答案范围(例如:“是动物吗?”→“有羽毛吗?”→“是鸭子”)。

2. 基于信息增益的决策树(ID3算法)
核心思想:选择能带来最大信息增益的特征作为分割标准。

  • 信息熵(Entropy):度量数据集混乱程度(不确定性)的指标。 信息熵的值越大,表示数据集的混乱程度越高(不确定性越大)。当数据集完全属于同一类别时,信息熵为0(最纯净)。计算公式为:
    在这里插入图片描述
    其中 在这里插入图片描述
    是第k类样本的比例
    示例:二分类数据集(正例50%,负例50%),熵 = - (0.5log₂0.5 + 0.5log₂0.5) = 1(最混乱)

  • 信息增益(Information Gain):信息增益表示使用某个特征A进行分割后,数据集混乱程度减少的程度(即信息不确定性的减少)。计算公式为:
    特征A对数据集D的信息增益 = 原熵 - 按特征A分割后的加权平均熵
    在这里插入图片描述

    其中 ( D_v ) 是特征A取值为v的子集。 信息增益越大,说明使用该特征分割后数据越纯净。
    决策原则:选择信息增益最大的特征作为当前节点

3. 基于基尼指数的决策树(CART算法)
基尼指数(Gini Index):衡量数据不纯度(值越小越纯), 基尼指数越小,表示数据集的纯度越高。当数据集完全属于同一类别时,基尼指数为0。
在这里插入图片描述
在这里插入图片描述

示例:二分类(正例100%),基尼指数=1-(1²+0²)=0(最纯)
分割后基尼指数计算类似信息增益的加权平均

4. 两种方法对比

方法特点
信息增益(ID3)倾向于选择取值多的特征
基尼指数(CART)计算更简单,常用作默认

5. 决策树建立步骤

  1. 计算所有特征的信息增益/基尼指数
  2. 选择最佳特征作为根节点
  3. 按特征值划分数据集
  4. 递归构建子树
  5. 终止条件:节点样本全同类/无特征可用/达最大深度

6. 决策树的优缺点

  • 优点:模型直观,易于理解和解释;不需要对数据进行复杂的预处理(如归一化)。
  • 缺点:容易过拟合(即过度适应训练数据,在测试数据上表现差);对数据中的噪声敏感。

7. sklearn API

from sklearn.tree import DecisionTreeClassifier
# criterion可选 'entropy' 或 'gini'
model = DecisionTreeClassifier(criterion='gini',max_depth=3)  # 限制树深度防过拟合

8. 示例:鸢尾花分类

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据
iris = load_iris()
X, y = iris.data, iris.target
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 训练决策树(基尼指数)
model = DecisionTreeClassifier(max_depth=2)
model.fit(X_train, y_train)
# 评估
accuracy = model.score(X_test, y_test)  # 如0.93

二、随机森林(集成学习方法)

1. 随机森林的概念

随机森林是一种集成学习算法,它通过构建多个决策树并将它们的预测结果进行组合(投票)来提高模型的准确性和鲁棒性(健壮性)。随机森林的核心思想是“三个臭皮匠,顶个诸葛亮”。

2. 算法原理
随机森林(Random Forest)是多个决策树的集成模型,核心思想:

  • Bagging(自助采样):每棵决策树在训练时,使用从原始训练集中有放回地随机抽取的子集(称为自助样本集)。
  • 特征随机性:在每棵树的每个节点分裂时,随机选择一个特征子集(通常为特征总数的平方根),然后从中选择最优特征进行分裂。
    通过这两种随机性,随机森林中的每棵树都各不相同,且具有较低的方差(即减少了过拟合的风险) 。
  • 投票机制(预测过程):即每棵树对样本进行预测,最终选择得票最多的类别作为最终预测结果。

3. 为什么比单棵决策树更好?

  • 降低方差:多棵树平均减少过拟合风险
  • 增强鲁棒性:对噪声和异常值不敏感
  • 处理高维数据:特征随机选择避免维度灾难

4. 数学本质
最终预测函数:( \hat{y} = \text{majority_vote}({h_t(x)}_{t=1}^T) )
其中 ( h_t ) 是第t棵树的预测,T是树的总数

5. sklearn API

from sklearn.ensemble import RandomForestClassifier
# n_estimators: 树的数量, max_features: 分裂时考虑的最大特征数
model = RandomForestClassifier(n_estimators=100, max_features='sqrt')

6. 示例:手写数字识别

from sklearn.datasets import load_digitsdigits = load_digits()
X, y = digits.data, digits.target# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 训练随机森林
model = RandomForestClassifier(n_estimators=50)
model.fit(X_train, y_train)# 评估
accuracy = model.score(X_test, y_test)  # 通常 > 0.95

三、线性回归

1. 什么是回归?

回归是监督学习的一种,其目标是预测一个连续值(如房价、温度、销售额等)。与分类任务(预测离散类别)不同,回归任务的输出是实数。

2. 回归 vs 分类

  • 分类:预测离散类别(如猫/狗)
  • 回归:预测连续数值(如房价、温度)

3. 线性回归模型
假设目标值 ( y ) 与特征 ( x ) 线性相关:
( y = w_0 + w_1 x_1 + w_2 x_2 + … + w_n x_n )
其中:

  • ( w_0 ):截距(bias)
  • ( w_1,…,w_n ):特征权重(weights)

4. 损失函数(Loss Function)
为了找到最佳的权重参数,我们需要定义一个损失函数来衡量预测值与真实值之间的差异。线性回归使用均方误差(Mean Squared Error, MSE) 作为损失函数:
均方误差(MSE)
( MSE = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 )
其中 m 为样本数

5. 最小二乘法求解
目标:找到权重 ( w ) 使 MSE 最小化
闭式解(解析解)
( W = (X^T X)^{-1} X^T Y )
其中:

  • ( X ):设计矩阵(每行一个样本,首列为1)
  • ( Y ):目标值向量

几何解释:寻找最佳拟合直线,使所有数据点到直线的垂直距离平方和最小

6. 多参数回归
当输入特征有多个时(如房价预测中面积+房龄+位置),即扩展为多元线性回归,模型扩展为:
( y = w_0 + w_1 x_1 + w_2 x_2 + … + w_n x_n )

7. sklearn API

from sklearn.linear_model import LinearRegression
model = LinearRegression()  # 默认使用最小二乘法

8. 示例:波士顿房价预测

from sklearn.datasets import fetch_california_housing  # 波士顿数据集已弃用
from sklearn.metrics import mean_squared_errorhousing = fetch_california_housing()
X, y = housing.data, housing.target# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)# 预测并评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)  # 均方误差
print("权重:", model.coef_)  # 各特征权重
print("截距:", model.intercept_)

算法对比总结

算法类型优势局限性适用场景
决策树分类/回归直观易解释,易可视化,无需特征缩放容易过拟合分类,可解释性要求高
随机森林分类/回归高精度,抗过拟合计算开销大,可解释性差分类/回归,复杂数据
线性回归回归计算高效,可解释性强只能拟合线性关系数值预测,线性关系
http://www.dtcms.com/a/308645.html

相关文章:

  • pyspark使用
  • 使用SFTTrainer进行微调
  • sqli-labs靶场Less24
  • FlexLM/SLM协议解析
  • [硬件电路-110]:模拟电路 - 能量并非凭空产生,自激振荡器,一种把直流能量转换成交流信号的装置!
  • TCP/IP协议的安全隐患与防范措施
  • php session 和 jwt 区别和使用场景
  • TCP窗口缩放配置在云服务器高延迟网络中的参数调整测试
  • 如何快速部署主数据管理解决方案?
  • 用于Forza系列测试自动化的3D可视化工具
  • MySQL 8.0 OCP 1Z0-908 题目解析(38)
  • Android Jetpack消息推送全解析:从FCM集成到Jetpack组件优化
  • 信令和信号在通信领域的区别
  • 详解分布式数据库缓存技术:高性能数据访问的基石
  • 【javascript】Reflect学习笔记
  • OCP网卡、OVS网卡和DPU(数据处理单元)三类技术方案
  • system.conf linux用于启动和管理系统进程的初始化系统和服务管理器的配置文件
  • 检索召回率优化探究二:基于 LangChain 0.3集成 Milvus 2.5向量数据库构建的智能问答系统
  • 中国高速铁路网的“四纵四横“和“八纵八横“shp数据
  • LLM——使用 LangGraph 构建 ReAct 智能体:多轮对话 + 工具调用 + 可视化流程图
  • flowable对已经部署的流程进行更新,不产生新版本
  • 【问题】Docker 容器内的应用(如n8n),访问不到外部主机的应用(如mysql)
  • C语言基础第18天:内存操作函数
  • Jmeter 性能测试常用图表、服务器资源监控
  • AI学习笔记三十四:基于yolov5+deepsort+slowfast的视频实时行为检测测试
  • 【源力觉醒 创作者计划】文心大模型4.5体验:技术跃迁,拥抱AI新时代
  • Coze是什么?能做什么?
  • MySQL 9 INNODB Cluster部署
  • Qt之CJSON:从基础到进阶的 JSON 数据处理指南
  • MySQL 8.0 OCP 1Z0-908 题目解析(41)