有监督学习中的分类方法

有监督学习是机器学习的重要分支,分类任务是其核心应用之一。分类方法旨在根据输入数据的特征预测其所属类别。常见分类方法包括决策树、支持向量机、朴素贝叶斯、逻辑回归等。

决策树

决策树的基本概念

决策树是一种基于树状结构的监督学习算法,用于分类或回归任务。它通过一系列规则对数据进行分割,最终生成一棵树,每个内部节点代表一个特征测试,每个分支代表测试结果,每个叶节点代表预测结果。

决策树的构建原理

决策树的构建基于递归分割数据,核心步骤如下:

  1. 特征选择:选择最优特征作为当前节点的分割标准。常用指标包括信息增益(ID3算法)、增益率(C4.5算法)或基尼系数(CART算法)。

    • 信息增益公式:

      \\text{信息增益} = H(D) - \\sum_{v=1}\^V \\frac{\|D\^v\|}{\|D\|} H(D\^v) \] 其中 ( H(D) ) 是数据集 ( D ) 的熵,( D\^v ) 是特征 ( A ) 取值为 ( v ) 的子集。

  2. 终止条件:当节点满足以下条件之一时停止分裂:

    • 节点中样本属于同一类别;
    • 无剩余特征可用;
    • 样本数量低于预设阈值。

决策树的示例与插图

以下是一个简单的分类树示例,用于预测是否适合户外活动:

复制代码
[天气?]
├── [晴朗] → [湿度?]
│   ├── [正常] → 适合
│   └── [高] → 不适合
└── [阴天] → 适合

图1:决策树结构示意图

决策树的优缺点

优点

  • 模型可解释性强,规则直观;
  • 无需复杂的数据预处理(如归一化);
  • 支持分类和回归任务。

缺点

  • 容易过拟合,需通过剪枝(如预剪枝、后剪枝)优化;
  • 对数据微小变化敏感,可能生成不稳定树结构。

防止过拟合的方法

  1. 剪枝技术
    • 预剪枝:在树生长过程中限制深度或节点样本数;
    • 后剪枝:先生成完整树,再删除冗余分支。
  2. 随机森林:通过集成多棵决策树提升泛化能力。

代码实现示例(Python)

使用 scikit-learn 构建决策树分类器:

python 复制代码
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载数据
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)

# 训练模型
clf = DecisionTreeClassifier(criterion='gini', max_depth=3)
clf.fit(X_train, y_train)

# 评估
print("Accuracy:", clf.score(X_test, y_test))

可视化决策树

通过 graphviz 导出树结构图:

python 复制代码
from sklearn.tree import export_graphviz
import graphviz

dot_data = export_graphviz(clf, out_file=None, feature_names=iris.feature_names, filled=True)
graph = graphviz.Source(dot_data)
graph.render("iris_decision_tree")  # 生成PDF文件

图2:生成的决策树可视化图

lues}(A)} \frac{|D_v|}{|D|} H(D_v) ]

其中 ( H(D) ) 为数据集 ( D ) 的熵,( D_v ) 为特征 ( A ) 取值为 ( v ) 的子集。

支持向量机(SVM)

支持向量机的基本概念

支持向量机(Support Vector Machine, SVM)是一种有监督学习算法,主要用于分类和回归任务。其核心思想是找到一个最优超平面,将不同类别的数据分开,同时最大化分类边界(即"间隔")。SVM特别适合处理高维数据,并且在数据量较小的情况下表现优异。

支持向量机的原理

SVM通过构造一个超平面(或一组超平面)来分隔不同类别的数据点。最优超平面的选择基于"间隔最大化"原则,即找到能够最大化两类数据点之间距离的超平面。支持向量是距离超平面最近的那些数据点,它们决定了超平面的位置和方向。

线性可分情况

对于线性可分的数据,SVM的目标是找到一个超平面,使得所有数据点被正确分类,并且间隔最大。数学上,超平面可以表示为: [ \mathbf{w} \cdot \mathbf{x} + b = 0 ] 其中,(\mathbf{w})是权重向量,(b)是偏置项。分类决策函数为: [ f(\mathbf{x}) = \text{sign}(\mathbf{w} \cdot \mathbf{x} + b) ]

非线性可分情况

对于非线性可分的数据,SVM通过核函数(Kernel Function)将数据映射到高维空间,使其在高维空间中线性可分。常用的核函数包括:

  • 线性核:(K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i \cdot \mathbf{x}_j)
  • 多项式核:(K(\mathbf{x}_i, \mathbf{x}_j) = (\mathbf{x}_i \cdot \mathbf{x}_j + c)^d)
  • 高斯核(RBF核):(K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma |\mathbf{x}_i - \mathbf{x}_j|^2))

支持向量机的优化问题

SVM的优化目标是最大化间隔,同时最小化分类误差。这可以转化为一个凸二次规划问题: [ \min_{\mathbf{w}, b} \frac{1}{2} |\mathbf{w}|^2 + C \sum_{i=1}^n \xi_i ] 约束条件为: [ y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0 ] 其中,(C)是正则化参数,用于控制分类误差的惩罚程度;(\xi_i)是松弛变量,用于处理不可分的情况。

支持向量机的训练与预测

训练SVM通常涉及求解上述优化问题,常用的算法包括序列最小优化(SMO)算法。训练完成后,预测新数据点的类别只需计算决策函数的值: [ f(\mathbf{x}) = \text{sign}\left(\sum_{i=1}^n \alpha_i y_i K(\mathbf{x}_i, \mathbf{x}) + b\right) ] 其中,(\alpha_i)是拉格朗日乘子,仅支持向量对应的(\alpha_i)不为零。

支持向量机的优缺点

优点

  • 在高维空间中表现优异,适合处理特征维度高于样本量的数据。
  • 通过核函数可以灵活处理非线性分类问题。
  • 泛化能力强,尤其在小样本情况下。

缺点

  • 训练时间较长,尤其在大规模数据集上。
  • 对参数(如(C)和核函数参数)的选择敏感,需要调优。
  • 解释性较差,难以直观理解模型的决策过程。

支持向量机的应用场景

SVM广泛应用于文本分类、图像识别、生物信息学等领域。例如:

  • 手写数字识别(如MNIST数据集)。
  • 垃圾邮件分类。
  • 基因表达数据分析。

实现示例(Python代码)

以下是使用scikit-learn库实现SVM的示例代码:

python 复制代码
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# 加载数据集
iris = datasets.load_iris()
X = iris.data[:, :2]  # 仅使用前两个特征
y = iris.target

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

# 训练SVM模型
model = SVC(kernel='rbf', C=1.0)
model.fit(X_train, y_train)

# 预测并评估
y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

参数调优建议

  • 正则化参数(C):较大的(C)会减少误分类,但可能导致过拟合;较小的(C)允许更多误分类,但泛化能力更强。
  • 核函数选择:根据数据特征选择合适的核函数,如线性核适合线性可分数据,RBF核适合非线性数据。
  • 核参数(如(\gamma)):调整核参数可以控制模型的复杂度,需通过交叉验证确定。

逻辑回归

逻辑回归的基本概念

逻辑回归是一种用于解决分类问题的统计方法,尤其适用于二分类问题。尽管名称中包含"回归",但它实际上是一种分类算法。逻辑回归通过将线性回归的输出映射到概率空间(0到1之间),从而预测样本属于某个类别的概率。

逻辑回归的核心思想是使用逻辑函数(Sigmoid函数)将线性组合的输入特征转换为概率值。给定输入特征 ( X ) 和参数 ( \theta ),逻辑回归模型的输出可以表示为:

P(Y=1\|X) = \\frac{1}{1 + e\^{-(\\theta\^T X)}}

其中,( P(Y=1|X) ) 表示在给定输入 ( X ) 的条件下,样本属于类别1的概率。


逻辑回归的数学原理

逻辑回归的数学推导基于极大似然估计(MLE)。假设训练数据独立同分布,似然函数可以表示为:

L(\\theta) = \\prod_{i=1}\^n P(Y=y_i\|X=x_i)

为了简化计算,通常对似然函数取对数,得到对数似然函数:

\\log L(\\theta) = \\sum_{i=1}\^n \\left\[ y_i \\log P(Y=1\|X=x_i) + (1 - y_i) \\log (1 - P(Y=1\|X=x_i)) \\right\]

逻辑回归的目标是通过最大化对数似然函数来估计参数 ( \theta )。这一优化问题通常通过梯度下降或牛顿法等数值优化算法求解。


Sigmoid函数的作用

Sigmoid函数是逻辑回归的核心组成部分,其形式为:

\\sigma(z) = \\frac{1}{1 + e\^{-z}}

其中,( z = \theta^T X )。Sigmoid函数将线性组合 ( z ) 映射到 (0, 1) 区间,从而可以解释为概率值。以下是Sigmoid函数的特性:

  1. 当 ( z ) 趋近于正无穷时,( \sigma(z) ) 趋近于1。
  2. 当 ( z ) 趋近于负无穷时,( \sigma(z) ) 趋近于0。
  3. 在 ( z = 0 ) 时,( \sigma(z) = 0.5 )。

Sigmoid函数的曲线如下所示(以图表形式展示,横轴为 ( z ),纵轴为 ( \sigma(z) )):

  • 曲线呈S形,单调递增。
  • 在 ( z = 0 ) 附近变化较快,两端平缓。

决策边界

逻辑回归通过设定一个阈值(通常为0.5)将概率值转换为类别标签。决策边界是输入空间中使得 ( P(Y=1|X) = 0.5 ) 的点构成的超平面。对于线性逻辑回归,决策边界是线性的,形式为:

\\theta\^T X = 0

对于非线性问题,可以通过引入多项式特征或核方法扩展逻辑回归的决策边界。


模型训练与优化

逻辑回归的参数估计通常通过梯度下降法实现。梯度下降的更新规则为:

\\theta_j := \\theta_j - \\alpha \\frac{\\partial J(\\theta)}{\\partial \\theta_j}

其中,( J(\theta) ) 是损失函数(通常为负对数似然函数),( \alpha ) 是学习率。损失函数的梯度可以表示为:

\\frac{\\partial J(\\theta)}{\\partial \\theta_j} = \\sum_{i=1}\^n (P(Y=1\|X=x_i) - y_i) x_{ij}


正则化与防止过拟合

逻辑回归容易过拟合,尤其是在特征维度较高时。常用的正则化方法包括:

  1. L1正则化(Lasso):在损失函数中加入 ( \lambda \sum_{j=1}^d |\theta_j| ),倾向于产生稀疏解。
  2. L2正则化(Ridge):在损失函数中加入 ( \lambda \sum_{j=1}^d \theta_j^2 ),倾向于缩小参数值。

正则化参数 ( \lambda ) 控制正则化的强度,通常通过交叉验证选择。


逻辑回归的优缺点

优点

  1. 计算效率高,适合大规模数据集。
  2. 输出具有概率解释,便于后续决策。
  3. 可以通过正则化防止过拟合。

缺点

  1. 假设数据线性可分或通过特征变换线性可分,对非线性问题表现较差。
  2. 对异常值敏感。
  3. 在多分类问题中需要扩展(如OvR或softmax回归)。

逻辑回归的扩展

  1. 多分类逻辑回归:通过一对多(One-vs-Rest, OvR)或softmax回归扩展到多分类问题。
  2. 核逻辑回归:通过核方法引入非线性决策边界。
  3. 贝叶斯逻辑回归:引入先验分布,从贝叶斯角度估计参数。

逻辑回归的应用场景

逻辑回归广泛应用于以下领域:

  1. 医学诊断:预测疾病发生概率。
  2. 金融风控:评估客户违约风险。
  3. 自然语言处理:文本分类任务。
  4. 市场营销:客户响应预测。

相关推荐
咋吃都不胖lyh2 小时前
LangChain 内置工具全解析(按场景分类)
分类·数据挖掘·langchain
babe小鑫2 小时前
2026大专商务英语专业学习数据分析的价值分析
学习·数据挖掘·数据分析
点PY2 小时前
OpenGL学习(1)——创建窗口
学习
龙腾AI白云2 小时前
学习基于数字孪生的质量预测与控制
深度学习·学习·scikit-learn
骑驴看星星a2 小时前
Golang学习之time包与net/http 包
学习·http·golang
小陈phd2 小时前
多模态大模型学习笔记(十一)——transformer学习之绪论
笔记·学习·transformer
做怪小疯子2 小时前
AI大模型RAG与Agent开发学习
人工智能·学习
liliangcsdn2 小时前
LLM任务拆分方法的学习和探索
学习
hans汉斯2 小时前
【数据挖掘】基于轻量化GE-GRU-VAE模型的多维时间序列异常检测
人工智能·深度学习·机器学习·数据挖掘·gru·汉斯出版社