小秦哥 发表于 2025-4-17 04:31:08

呆板学习常用算法总结

1. 概述

呆板学习的定义是对于某类使命T和性能度量P,如果一个计算机程序在T上其性能P随着履历E而自我美满,那么我们就称这个系统从履历E中学习,呆板学习是人工智能的一种方法,它通过在大量数据中学习隐蔽的规则,模式和履历,对新的环境作出有效的决议。呆板学习已经在多个行业广泛应用,在图像辨认,语音辨认,呆板翻译,情感分析等多个领域取得不错的成果。
https://i-blog.csdnimg.cn/direct/4cc5a2efaf954e1f94e34bc7ca62fb40.png
2. 分类

按学习的方式来分别,呆板学习主要包括:


[*] 监督学习:输入数据带有标签。监督学习创建一个学习过程,将预测结果与 “训练数据”(即输入数据)的实际结果进行比较,不断的调整预测模子,直到模子的预测结果达到一个预期的正确率,好比分类和回归问题等。常用算法包括决议树、贝叶斯分类、最小二乘回归、逻辑回归、支持向量机、神经网络等。
https://i-blog.csdnimg.cn/direct/1911388b063a42baab9cbc4948d6052e.png
[*] 非监督学习:输入数据没有标签,而是通过算法来推断数据的内涵联系,好比聚类和关联规则学习等。常用算法包括独立因素分析、K-Means 和 Apriori 算法等。
https://i-blog.csdnimg.cn/direct/e11d5a5769c9463285ee002781617a9a.png
[*] 半监督学习:输入数据部门被标识,部门没有被标识,这种学习模子可以用来进行预测,但是模子首先需要学习数据的内涵布局以便公道的构造数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此根本上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM)等。
https://i-blog.csdnimg.cn/direct/09b908121e62467eb061dfd500b742f5.png
[*] 强化学习:输入数据作为对模子的反馈,强调如何基于环境而行动,以取得最大化的预期利益。与监督式学习之间的区别在于,它并不需要出现正确的输入 / 输出对,也不需要精确校正次优化的举动。强化学习更加专注于在线规划,需要在探索(在未知的领域)和遵从(现有知识)之间找到平衡。 常见的应用场景包括动态系统以及呆板人控制等。常见算法包括Q-Learning以实时间差学习(Temporal difference learning)
https://i-blog.csdnimg.cn/direct/9f28d128ea824389930cdea8f725413c.png
在企业数据应用的场景下, 人们最常用的大概就是监督式学习和非监督式学习的模子。 在图像辨认等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。 而强化学习更多的应用在呆板人控制及其他需要进行系统控制的领域。
3. sklearn库

在正式总结常用算法之前,需要先相识sklearn 库。
sklearn,全名 Scikit-learn,是 Python 中最常用的呆板学习库之一,提供了各种常见的呆板学习算法(分类、回归、聚类、降维等),并封装得非常好用,尤其得当入门和快速原型开辟。
3.1 主要功能模块



[*]sklearn.linear_model :线性模子(如线性回归、逻辑回归)
[*]sklearn.naive_bayes :朴素贝叶斯分类器
[*]sklearn.tree :决议树、随机丛林
[*]sklearn.svm :支持向量机
[*]sklearn.neighbors :KNN(近邻算法)
[*]sklearn.cluster :聚类算法(如 KMeans)
[*]sklearn.decomposition :降维(如 PCA)
[*]sklearn.preprocessing :数据预处置惩罚(标准化、归一化、编码等)
[*]sklearn.model_selection :数据分别、交织验证、超参搜索
[*]sklearn.metrics :评估指标(正确率、F1 等)
3.2 典型的利用流程

以逻辑回归为例,展示 sklearn 的通用套路。


[*] 数据加载
[*] 数据分别
[*] 数据预处置惩罚
[*] 模子训练
[*] 模子预测
[*] 模子评估
[*] 模子生存 + 加载(可选)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix
import joblib# 模型保存/加载

# 2. 加载数据
iris = load_iris()
X, y = iris.data, iris.target
print("特征维度:", X.shape)
print("类别:", np.unique(y))

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

# 4. 数据预处理(标准化)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)

X_test = scaler.transform(X_test)


# 5. 模型训练
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)

# 6. 预测
y_pred = model.predict(X_test)

# 7. 模型评估
print("Confusion Matrix:")
print(confusion_matrix(y_test, y_pred))

print("\nClassification Report:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))

# 8. 模型保存
joblib.dump(model, 'logistic_model.pkl')
joblib.dump(scaler, 'scaler.pkl')

# 9. 模型加载示例(可选)
# model = joblib.load('logistic_model.pkl')
# scaler = joblib.load('scaler.pkl')
留意:
X_train = scaler.fit_transform(X_train)
fit_transform 是 两步合一:


[*] fit(X_train):计算训练集的均值和标准差
[*] transform(X_train):用刚才计算出的均值和标准差来标准化训练集
X_test = scaler.transform(X_test)
这里只执行了 transform,意思是:


[*] 用 训练集的均值和标准差来标准化测试集
[*] 这一步不会重新计算均值和标准差
4. 常用的算法

呆板学习算法主要可应用于三大场景:


[*]分类,即呆板被训练来完成对一组数据进行特定的分类。常见的算法有逻辑回归、朴素贝叶斯、决议树、随机丛林、K 近邻、支持向量机,以及神经网络等等。

[*]二分类:预测结果只有两个离散的值,如是否、1/0
[*]多分类:预测结果是多个离散的值,如A/B/C

[*]回归,即呆板根据先前标记的数据来预测未来。预测结果是连续的值,如房价的预测、库存的预测。
[*]聚类,无监督学习,将相似的样本归类在一起,如细分用户、消息聚类。假设,你现在是一个客服系统负责人,为了减轻人工客服的压力,想把一部门常见的问题交给呆板人来回复。解决这件事情的条件,就是我们要对用户咨询的商品问题先辈行分组,找到用户最关心的那些问题。这种需要根据用户的特点或举动数据,对用户进行分组,让组内数据尽大概相似的的问题,就属于聚类问题,用一个词概括它的特点就是 “物以类聚”。常见的聚类算法有层次聚类、原型聚类(K-means)、密度聚类(DBSCAN)。其实,聚类算法的原理很简单,就是根据样本之间的间隔把间隔相近的聚在一起,在实际应用场景里,衡量样本之间间隔关系的方法会更复杂,大概会用语义相似度、情感相似度等等。聚类分析较为重要的一个应用就是用户画像。
(1)逻辑回归

逻辑回归(Logistic Regression)是一种用于分类的呆板学习算法,只管它的名字中有“回归”二字,但它主要用于解决二分类问题。在逻辑回归中,目标变量(因变量)是离散的,通常是二元的(0和1),例如判断一封邮件是否是垃圾邮件(1表现垃圾邮件,0表现正常邮件)。和线性回归很像,但加了一个 Sigmoid 函数把结果压缩到 (0,1) 区间。
逻辑回归模子的情势可以表现为:
                                       P                            (                            Y                            =                            1                            ∣                            X                            )                            =                                       1                                           1                                  +                                             e                                                   −                                        (                                                       β                                           0                                                      +                                                       β                                           1                                                                     X                                           1                                                      +                                                       β                                           2                                                                     X                                           2                                                      +                                        ⋯                                        +                                                       β                                           n                                                                     X                                           n                                                      )                                                                              P(Y = 1 \mid X) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_n X_n)}}                     P(Y=1∣X)=1+e−(β0​+β1​X1​+β2​X2​+⋯+βn​Xn​)1​
此中,P(Y=1∣X) 是在给定特性 X 的条件下,目标变量 Y 取值为1的概率。                                             β                            0                                       β_0                  β0​ ,                                             β                            1                                       β_1                  β1​,                                              β                            2                                       β_2                  β2​,…,                                             β                            n                                       β_n                  βn​ 是模子的参数,                                             X                            0                                       X_0                  X0​ ,                                             X                            1                                       X_1                  X1​,                                              X                            2                                       X_2                  X2​,…,                                             X                            n                                       X_n                  Xn​ 是特性变量。这个模子的核心是一个逻辑函数,也称为 Sigmoid 函数,其情势为:                                        σ                            (                            z                            )                            =                                       1                                           1                                  +                                             e                                                   −                                        z                                                                              \sigma(z) = \frac{1}{1 + e^{-z}}                     σ(z)=1+e−z1​
Sigmoid 函数的输出范围在(0,1)之间,这使得它非常适适用来表现概率。
逻辑回归的丧失函数通常是交织熵丧失函数(Cross - Entropy Loss)。对于二分类问题,交织熵丧失函数可以表现为:
                                       L                            (                            β                            )                            =                            −                                       1                               m                                                 ∑                                           i                                  =                                  1                                          m                                                 [                                           y                                             (                                     i                                     )                                                      log                               ⁡                               (                                                      y                                     ^                                                         (                                     i                                     )                                                      )                               +                               (                               1                               −                                           y                                             (                                     i                                     )                                                      )                               log                               ⁡                               (                               1                               −                                                      y                                     ^                                                         (                                     i                                     )                                                      )                               ]                                          L(\beta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(\hat{y}^{(i)}) + (1 - y^{(i)}) \log(1 - \hat{y}^{(i)}) \right]                     L(β)=−m1​i=1∑m​
此中,m 是训练样本的数量,                                             y                            (                                  i                         )                              y^(i)                  y(i) 是第 i 个样本的真实标签,                                                         y                               ^                                                 (                               i                               )                                                 \hat{y}^{(i)}                  y^​(i) 是模子预测的样本为1的概率。这个丧失函数衡量了模子预测的概率分布和真实标签的概率分布之间的差异。当模子预测的概率和真实标签越接近时,丧失值越小。
逻辑回归模子的训练过程主要是通过优化算法来最小化丧失函数,从而找到最优的模子参数 β。常用的优化算法有梯度下降法(Gradient Descent)。
(2)朴素贝叶斯

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单概率分类器,它假设特性之间相互独立。只管这个假设在现实天下中往往不创建,但朴素贝叶斯分类器在许多实际应用中仍旧表现出色,特别是在文天职类和垃圾邮件过滤等领域。
朴素贝叶斯分类器的核心是贝叶斯定理,其公式如下:
                                       P                            (                                       C                               k                                    ∣                            X                            )                            =                                                   P                                  (                                  X                                  ∣                                             C                                     k                                              )                                  P                                  (                                             C                                     k                                              )                                                      P                                  (                                  X                                  )                                                       P(C_k \mid X) = \frac{P(X \mid C_k) P(C_k)}{P(X)}                     P(Ck​∣X)=P(X)P(X∣Ck​)P(Ck​)​
此中:
                                    P                         (                                 C                            k                                  ∣                         X                         )                              P(C_k \mid X)                  P(Ck​∣X) 是后验概率,即在给定特性 X 的条件下种别                                              C                            k                                       C_k                  Ck​ 的概率。
                                    P                         (                         X                         ∣                                 C                            k                                  )                              P(X \mid C_k)                  P(X∣Ck​) 是似然函数,即在种别                                              C                            k                                       C_k                  Ck​ 的条件下观察到特性 X 的概率。
                                    P                         (                                 C                            k                                  )                              P(C_k)                  P(Ck​) 是种别                                              C                            k                                       C_k                  Ck​ 的先验概率。
                                    P                         (                         X                         )                              P(X)                  P(X) 是特性 X 的边缘概率,通常在计算中可以忽略,因为它对于全部种别都是类似的。
在计算                                    P                         (                         X                         ∣                                 C                            k                                  )                              P(X \mid C_k)                  P(X∣Ck​) 时,假设全部特性                                              x                            1                                  ,                                 x                            2                                  ,                         .                         .                         ,                                 x                            n                                       x_1,x_2,..,x_n                  x1​,x2​,..,xn​ 条件独立:
                                       P                            (                            X                            ∣                                       C                               k                                    )                            =                            P                            (                                       x                               1                                    ,                                       x                               2                                    ,                            …                            ,                                       x                               n                                    ∣                                       C                               k                                    )                            =                                       ∏                                           i                                  =                                  1                                          n                                    P                            (                                       x                               i                                    ∣                                       C                               k                                    )                                  P(X \mid C_k) = P(x_1, x_2, \ldots, x_n \mid C_k) = \prod_{i=1}^{n} P(x_i \mid C_k)                     P(X∣Ck​)=P(x1​,x2​,…,xn​∣Ck​)=i=1∏n​P(xi​∣Ck​)
这就是“朴素”的地方 —— 实际上大多数环境下特性并不独立,但这种简化让计算变得高效,而且在许多实际使命中效果 surprisingly 好。
常见的朴素贝叶斯模子:


[*] 高斯朴素贝叶斯(GaussianNB):用于连续数据,假设特性值服从高斯分布(正态分布)
[*] 多项式朴素贝叶斯(MultinomialNB):用于离散计数数据,常用于文天职类(如词频)
[*] 伯努利朴素贝叶斯(BernoulliNB):特性为二元(0或1),表现某个词是否出现,得当短文天职类
(3)决议树

决议树是一种树状模子,用于决议过程。它通过学习简单的决议规则从数据特性中推断出目标变量的值。其核心头脑是通过一系列问题的判断,将数据逐步分别为不同的种别或预测目标值。它从根节点开始,通过选择最优的特性进行分别,逐步天生内部节点和叶子节点。最终,每个叶子节点代表一个种别或预测值。
例如,在一个二分类问题中,决议树大概会先根据一个特性(如年龄是否大于30)将数据分为两部门,然后在每个子部门继续根据其他特性进行分别,直到满意制止条件(如叶子节点的样本数量小于某个阈值或者树达到最大深度)。
分类树:用于分类使命,目标是将数据分别为不同的种别。
回归树:用于回归使命,目标是预测连续的数值。
决议树的布局: 由节点(Node)和分支(Branch)组成:


[*]根节点(Root Node):决议树的起始点,包罗整个数据集。
[*]内部节点(Internal Node):表现一个特性或属性。
[*]分支(Branch):表现从特性到两个子节点的决议路径。
[*]叶节点(Leaf Node):表现最终的决议结果,即分类或回归的输出值。
https://i-blog.csdnimg.cn/direct/8addd389016744dd842ad2f92c3844fe.png
构建过程:
构建决议树的关键在于如何选择最优的特性进行分别。常见的特性选择方法包括:


[*]信息增益(Information Gain):基于信息熵的概念,选择使信息增益最大的特性。
[*]增益率(Gain Ratio):对信息增益进行归一化,制止方向于具有较多值的特性。
[*]基尼不纯度(Gini Impurity):衡量数据的不纯度,选择使基尼不纯度最小的特性。
常见的决议树算法:


[*]ID3(Iterative Dichotomiser 3):利用信息增益作为特性选择标准。不能处置惩罚连续特性。
[*]C4.5:利用增益率作为特性选择标准。可以处置惩罚连续特性。
[*]CART(Classification and Regression Tree)可以用于分类和回归使命。利用基尼不纯度作为特性选择标准。
剪枝技能:
为了防止决议树过拟合,通常会采用剪枝技能,减少树的复杂度。常见的剪枝方法包括:


[*]预剪枝(Pre-pruning):在树完全生长之前制止生长,例如限定树的深度或节点数量。
[*]后剪枝(Post-pruning):先天生完整的树,然后通过剪掉一些分支来简化树布局。
优点:


[*]决议树的布局直观,容易明白,可以清晰地展示决议过程。
[*]既可以用于分类使命,也可以用于回归使命。
[*]不需要特性缩放:对特性的数值范围不敏感。
缺点:


[*]容易过拟合:在训练数据上表现很好,但在测试数据上大概泛化能力差。
[*]对噪声数据敏感:噪声数据大概导致树布局发生较大变革。
[*]计算复杂度高:尤其是当特性数量较多时,构建决议树的计算成本较高。
https://i-blog.csdnimg.cn/direct/e20c66da409d44df92c5bf38e5126a79.png
(4)随机丛林

随机丛林的核心是决议树。它通过构建多棵决议树来进步模子的性能。这些决议树是独立训练的,并且每棵树都是在不同的数据子集上训练的。
在训练随机丛林中的每棵决议树时,会从原始训练数据会集利用有放回抽样方法抽取一个与原数据集大小类似的数据子集。这种方法称为Bootstrap抽样。例如,假设原始数据集有100个样本,对于随机丛林中的第一棵决议树,会从这100个样本中有放回地抽取100个样本作为训练数据。由于是有放回抽样,所以这个子会集大概会有重复的样本,而有些样本大概一次也没有被抽到。这种抽样方式使得每棵决议树看到的数据是略有差异的,从而增加了模子的多样性。因为不同的数据子集大概会导致决议树在特性选择和分别方式上有所不同。
在构建每棵决议树的过程中,每次分裂节点时,并不是思量全部特性。随机丛林会从全部特性中随机选择一部门特性作为候选特性。例如,在一个有10个特性的数据会集,每次分裂节点时大概只随机选择3个特性来思量。这样做的目标是进一步增加模子的随机性和多样性。如果每次都思量全部特性,那么不同决议树之间的差异大概主要来源于数据抽样,而特性子集的选择可以让决议树在布局上更加不同,从而减少过拟合的风险。
对于分类使命,随机丛林通过多数投票的方式来进行预测。例如,假设随机丛林中有100棵决议树,对于一个测试样本,每棵决议树都会给出本身的预测种别。最后,随机丛林会统计全部决议树预测结果中出现次数最多的种别作为最终的预测结果。
对于回归使命,随机丛林则通过对全部决议树的预测结果取平均值来得到最终的预测值。如果每棵决议树对某个回归目标的预测值分别是1.2、1.5、1.3……,那么随机丛林的预测值就是这些值的平均值。
https://i-blog.csdnimg.cn/direct/625d7d33360d48da8920b56023fb6d44.png
优点:


[*]抗过拟合能力强
由于随机丛林通过Bootstrap抽样和特性子集选择等方式引入了随机性,使得每棵决议树的布局和预测结果都有所不同。这种多样性使得随机丛林在面对复杂的、含有噪声的数据时,比单棵决议树更不容易过拟合。即使数据中存在一些异常值或者不重要的特性,随机丛林也能够通过集成的方式降低它们对模子的影响。
[*]适用范围广
随机丛林既可以用于分类使命,也可以用于回归使命。对于分类使命,它可以处置惩罚多分类问题,并且对不平衡数据集也有一定的顺应性。例如,在一个二分类问题中,正样本和负样本的比例大概相差很大,随机丛林可以通过调整每棵决议树的训练数据等方式来缓解这种不平衡带来的影响。在回归使命中,它能够很好地拟合连续的数值目标变量。
[*]特性重要性评估
随机丛林可以提供特性重要性评分。在训练过程中,它会根据每个特性在全部决议树中的表现(如在分裂节点时对目标变量的贡献大小)来评估特性的重要性。这对于明白数据中的关键因素非常有资助。例如,在一个医疗诊断问题中,通过随机丛林可以发现哪些症状或检查指标对疾病的预测最为关键,从而为医学研究和临床诊断提供参考。
[*]易于并行计算
随机丛林中的每棵决议树是独立训练的,这意味着可以同时在多个处置惩罚器或者计算节点上并行训练这些决议树。这大大进步了模子的训练效率,尤其是在处置惩罚大规模数据集时。例如,如果有足够的计算资源,可以同时训练随机丛林中的全部决议树,而不需要像一些顺序训练的模子那样等待前一步的完成。
缺点:


[*]模子复杂度高
随机丛林包罗多棵决议树,每棵决议树本身又是一个复杂的布局。这使得随机丛林模子的存储和计算成本相对较高。例如,对于一个包罗几百棵决议树的随机丛林模子,存储这些决议树布局需要占用较大的内存空间。在预测阶段,也需要对每棵决议树进行遍历,这会增加预测的计算时间。
[*]可表明性较差
虽然随机丛林可以提供特性重要性评分,但是相比于单棵决议树,它的整体可表明性要差一些。因为随机丛林是由多棵决议树组合而成的,很难像单棵决议树那样直观地展示出模子的决议过程。例如,单棵决议树可以通过树状图清晰地展示出样本是如何根据特性逐步被分别到不同种别或预测值的,而随机丛林的预测结果是基于多棵决议树的综合判断,很难用一个简单的逻辑来描述其决议路径。
(5)K 近邻

K 近邻算法(K-Nearest Neighbors,简称 KNN)是一种根本的分类与回归方法,通常用于分类问题。它的工作原理非常简单直观:给定一个训练数据集,对新的输入样本,算法会找到训练会集与其最接近的 K 个样本(即“邻人”),然后根据这些邻人的已知标签来预测新样本的标签。
主要步骤:


[*]选择参数 K:K 是用户指定的一个正整数,表现邻人的数量。K 值的选择对算法的性能有很大影响。较小的 K 值意味着模子对数据中的噪声更敏感,而较大的 K 值则大概导致模子对数据的局部布局不敷敏感。
[*]间隔度量:计算新样本与训练会集每个样本之间的间隔。常用的间隔度量方法包括欧氏间隔、曼哈顿间隔和闵可夫斯基间隔等。
[*]寻找近来的 K 个邻人:根据计算出的间隔,选择间隔近来的 K 个训练样本。
[*]决议规则:

[*]分类:在 K 个邻人中,选择出现次数最多的种别标签作为新样本的预测标签。
[*]回归:计算 K 个邻人的目标值的平均值,作为新样本的预测值。

[*]输出预测结果:根据决议规则,输出新样本的预测种别或连续值。
https://i-blog.csdnimg.cn/direct/ccacadbf2d9b42bc88f385128c464355.png
优点:


[*]无需训练:KNN 是一种惰性学习算法,它不需要在训练阶段构建模子,全部的计算都在预测阶段进行。
[*]适用于多分类问题:KNN 可以很容易地扩展到多分类问题。
[*]可以用于非线性数据:KNN 不需要假设数据的分布,因此适用于非线性可分的数据。
缺点:


[*]计算成本高:对于大数据集,计算每个新样本与全部训练样本的间隔大概非常耗时。
[*]存储成本高:KNN 需要存储整个训练数据集,这大概导致较高的存储需求。
[*]对不平衡数据敏感:如果数据会集的种别分布不均匀,KNN 大概会方向于多数类。
[*]对噪声敏感:KNN 对数据中的噪声点较为敏感,这大概会影响分类的正确性。
(6)支持向量机

支持向量机(Support Vector Machine,简称SVM)是一种用于分类和回归分析的监督学习算法。它通过在特性空间中找到一个最优的超平面来区分不同种别的数据点。在二分类问题中,这个超平面能够最大化两个种别之间的隔断,从而实现良好的分类性能。
工作原理:


[*] 线性可分环境

[*]超平面的定义
在二维空间中,超平面就是一条直线;在三维空间中,超平面是一个平面;在更高维空间中,超平面是一个线性子空间。假设我们有一个线性可分的数据集,每个数据点                                                                x                                     i                                                      x_i                           xi​ 都有一个种别标签                                                                y                                     i                                                      y_i                           yi​ ,此中                                                                y                                     i                                              ∈                                  {                                  −                                  1                                  ,                                  +                                  1                                  }                                          y_i \in \{-1, +1\}                           yi​∈{−1,+1}。超平面可以用方程                                                   w                                  ⋅                                  x                                  +                                  b                                  =                                  0                                          w⋅x+b=0                           w⋅x+b=0 表现,此中 w 是超平面的法向量,b 是截距。
[*]隔断最大化
SVM的目标是找到一个超平面,使得两个种别之间的隔断最大。隔断可以用公式                                                                2                                                   ∣                                        w                                        ∣                                                                   \frac{2}{|\mathbf{w}|}                           ∣w∣2​ 来表现。为了最大化隔断,我们需要最小化 ∥w∥。这可以通过求解以下优化问题来实现:
                                                                                     min                                           ⁡                                                                     w                                           ,                                           b                                                                              1                                        2                                                ∥                                     w                                                   ∥                                        2                                                         \min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2                              w,bmin​21​∥w∥2
                                                                y                                     i                                              (                                  w                                  ⋅                                             x                                     i                                              +                                  b                                  )                                  ≥                                  1                                          y_i(w \cdot x_i + b) \geq 1                           yi​(w⋅xi​+b)≥1
https://i-blog.csdnimg.cn/direct/dc389d84d9f54a12b3104df509353582.png

[*] 线性不可分环境

[*] 核函数的引入
在实际问题中,数据往往是线性不可分的。为了处置惩罚这种环境,SVM引入了核函数。核函数的作用是将数据映射到高维空间,在这个高维空间中数据大概变得线性可分。常见的核函数有:

[*]线性核:                                                            K                                        (                                                       x                                           i                                                      ,                                                       x                                           j                                                      )                                        =                                                       x                                           i                                                      ⋅                                                       x                                           j                                                                K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i \cdot \mathbf{x}_j                                 K(xi​,xj​)=xi​⋅xj​ ,适用于线性可分的环境。
[*]多项式核:                                                            K                                        (                                                       x                                           i                                                      ,                                                       x                                           j                                                      )                                        =                                        (                                                       x                                           i                                                      ⋅                                                       x                                           j                                                      +                                        c                                                       )                                           d                                                                K(\mathbf{x}_i, \mathbf{x}_j) = (\mathbf{x}_i \cdot \mathbf{x}_j + c)^d                                 K(xi​,xj​)=(xi​⋅xj​+c)d ,此中 c 和 d 是参数。可以处置惩罚非线性关系。
[*]径向基函数(RBF)核:                                                            K                                        (                                                       x                                           i                                                      ,                                                       x                                           j                                                      )                                        =                                        exp                                        ⁡                                        (                                        −                                        γ                                        ∥                                                       x                                           i                                                      −                                                       x                                           j                                                                     ∥                                           2                                                      )                                                K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma \|\mathbf{x}_i - \mathbf{x}_j\|^2)                                 K(xi​,xj​)=exp(−γ∥xi​−xj​∥2) ,此中 γ 是参数。它是最常用的核函数之一,能够处置惩罚复杂的非线性关系。
[*]sigmoid核:                                                            K                                        (                                                       x                                           i                                                      ,                                                       x                                           j                                                      )                                        =                                        tanh                                        ⁡                                        (                                        α                                                       x                                           i                                                      ⋅                                                       x                                           j                                                      +                                        c                                        )                                                K(\mathbf{x}_i, \mathbf{x}_j) = \tanh(\alpha \mathbf{x}_i \cdot \mathbf{x}_j + c)                                 K(xi​,xj​)=tanh(αxi​⋅xj​+c) ,与神经网络中的激活函数类似,但利用较少。

[*] 优化问题的调整

[*]当引入核函数后,SVM的优化问题变为:
                                                                                                   min                                                 ⁡                                                                               w                                                 ,                                                 b                                                 ,                                                 ξ                                                                                          1                                              2                                                          ∥                                           w                                                         ∥                                              2                                                          +                                           C                                                         ∑                                                               i                                                 =                                                 1                                                            n                                                                        ξ                                              i                                                                     \min_{\mathbf{w}, b, \xi} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^{n} \xi_i                                    w,b,ξmin​21​∥w∥2+Ci=1∑n​ξi​
                                                                                                                                                                   y                                                       i                                                                      (                                                    w                                                    ⋅                                                                     x                                                       i                                                                      +                                                    b                                                    )                                                    ≥                                                    1                                                    −                                                                     ξ                                                       i                                                                      ,                                                                     i                                                    =                                                    1                                                    ,                                                    2                                                    ,                                                    …                                                    ,                                                    n                                                                                                                                                                                                   ξ                                                       i                                                                      ≥                                                    0                                                    ,                                                                     i                                                    =                                                    1                                                    ,                                                    2                                                    ,                                                    …                                                    ,                                                    n                                                                                                                \begin{align*}\quad y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 - \xi_i, \quad i = 1, 2, \ldots, n & \quad \xi_i \geq 0, \quad i = 1, 2, \ldots, n\end{align*}                                 yi​(w⋅xi​+b)≥1−ξi​,i=1,2,…,n​ξi​≥0,i=1,2,…,n​
此中,                                                                     ξ                                        i                                                         \xi_i                              ξi​ 是松懈变量,用于答应一些数据点违反隔断约束。C 是正则化参数,用于控制隔断最大化和误分类之间的平衡。通过拉格朗日对偶方法,可以将优化问题转化为对偶问题,利用核函数来计算数据点之间的相似度。


多分类SVM:
原始的SVM是为二分类问题设计的。为了处置惩罚多分类问题,可以采用一些方法,如一对多(One - vs - All)、一对一(One - vs - One)等计谋。在一对多方法中,对于每个种别,训练一个SVM模子,将该种别与其他全部种别区分开来。在一对一方法中,每两个种别之间训练一个SVM模子,最后通过投票等方式确定最终的种别。
优点:


[*]分类性能好
SVM在许多实际问题中都表现出良好的分类性能,尤其是在高维空间中。它通过最大化隔断来寻找最优超平面,能够有效制止过拟合。
[*]适用于小样本数据
SVM对小样本数据具有较好的顺应性。它不需要大量的样本数据来训练模子,这在一些样本获取困难的领域(如生物医学领域)非常有上风。
[*]核函数的灵活性
核函数的引入使得SVM能够处置惩罚非线性问题。通过选择合适的核函数,可以将数据映射到高维空间,从而找到更好的分类边界。
缺点:


[*]计算复杂度高
SVM的训练过程涉及求解二次规划问题,计算复杂度较高。特别是当数据量较大时,训练时间大概会很长。
[*]对核函数和参数选择敏感
SVM的性能很大程度上依赖于核函数的选择和参数的调整。不同的核函数和参数设置大概会导致不同的分类结果。在实际应用中,需要通过交织验证等方法来选择合适的核函数和参数,这增加了模子的调试难度。
[*]不适用于大规模数据集
由于计算复杂度的限定,SVM在处置惩罚大规模数据集时大概会碰到困难。相比之下,一些基于深度学习的算法在大规模数据集上大概具有更好的性能。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 呆板学习常用算法总结