目录
一、K临近算法
二、决策树
三、多层感知器
四、伯努利贝叶斯算法
五、高斯贝叶斯
一、K临近算法
K 临近算法(K-Nearest Neighbors,简称 KNN)是一种监督学习算法,用于分类和回归任务。
它通过计算样本之间的距离来进行预测,特别适合小规模数据集和对计算速度要求不高的场景。KNN 是一种基于实例的算法,因为它在做出预测时不需要预先训练模型,而是直接根据训练数据进行决策。
KNN 算法的基本思想:
对于一个未知样本,找到训练集 中 距离它最近的 K 个样本(邻居),然后根据这些邻居的类别或特征来进行分类或回归预测。
KNN 的分类流程:
-
选择参数 K: 选择一个正整数 K,表示在进行分类或回归时需要参考的邻居个数。
-
计算距离:
- 对于给定的测试样本,计算它与训练集中每个样本之间的距离。常用的距离度量方法是欧氏距离(Euclidean Distance),也可以使用其他距离度量方法(如曼哈顿距离、余弦相似度等)。
- 欧氏距离公式
-
选择 K 个最近邻居:
- 根据计算的距离,选择与测试样本距离最近的 K 个训练样本。
-
进行分类或回归:
- 分类任务:
- 通过多数投票法,预测测试样本所属的类别。即查看 K 个邻居中哪个类别出现次数最多,然后将测试样本分为该类别。
- 回归任务:
- 通过取平均值或加权平均值,预测测试样本的数值结果。
- 分类任务:
KNN 算法的关键参数:
-
K 值:
K 的选择直接影响算法的效果:K 值过小(如 K=1):算法对噪声敏感,容易过拟合。K 值过大:可能会导致欠拟合,因为考虑了过多的邻居,会掩盖真正的局部信息。 -
距离度量:
- 常用的距离度量方法有:
- 欧氏距离:适用于连续数值型数据。
- 曼哈顿距离:适用于高维空间或稀疏数据。
- 余弦相似度:适用于文本或方向性数据。
- 常用的距离度量方法有:
-
权重:
- 有时邻居距离不同,对预测结果的贡献也不同,可以给邻居加上权重,通常距离越近的邻居权重大,距离越远的权重小。
KNN 的优点:
- 简单易懂:算法容易理解和实现。
- 无需训练:KNN 不需要复杂的训练过程,只需要保存训练数据。
- 适合小规模数据:在小规模数据集上表现良好。
KNN 的缺点:
- 计算复杂度高:对于大规模数据集,由于需要计算每个测试样本与所有训练样本的距离,计算开销很大。
- 对特征空间不敏感:在高维数据中,距离度量会受到维度的影响,可能导致“维度灾难”。
- 对噪声敏感:KNN 对异常点敏感,容易受到异常样本的影响。
KNN 分类示例:
假设我们有以下数据集:
样本点 | X1 | X2 | 类别 |
---|---|---|---|
A | 1 | 2 | 红色 |
B | 2 | 3 | 红色 |
C | 3 | 3 | 蓝色 |
D | 6 | 5 | 蓝色 |
现在我们有一个新样本 E (X1=3, X2=4),想要预测它的类别。假设 K=3。
- 计算 E 与 A、B、C、D 的距离。
- 选择距离最近的 3 个邻居(可能是 B、C、D)。
- 查看这 3 个邻居的类别,通过多数投票决定 E 的类别。
总结:KNN 算法是一种简单、直观的分类和回归算法,但在处理大规模数据或高维数据时可能存在性能瓶颈。通过合理选择 K 值和距离度量方法,可以获得不错的结果。
二、决策树
决策树(Decision Tree)是一种常见的监督学习算法,广泛用于分类和回归任务。
决策树通过一系列的二元分割来逐步将数据划分为多个子集,最终形成一个类似于树结构的模型,用于预测新样本的类别或数值。
决策树的基本概念:
-
根节点(Root Node):决策树的最上方节点,它代表整个数据集。通过特征划分,根节点决定了数据如何分裂为多个子节点。
-
内部节点(Internal Nodes):
- 每个内部节点表示一个特征上的决策条件(如某特征值是否大于某个阈值)。
- 每个内部节点会根据条件分裂成多个子节点。
-
叶节点(Leaf Nodes):
- 叶节点代表决策树的最终输出。
- 在分类任务中,叶节点对应类别标签;在回归任务中,叶节点是预测的数值。
-
分支(Branches):
- 决策树的分支表示决策的结果,即从一个节点到其子节点的路径。
决策树的构建过程:
-
选择最佳特征进行划分:
- 在每一步决策时,决策树会选择一个特征来对数据进行划分。
- 常用的划分标准包括信息增益(Information Gain)和基尼系数(Gini Index):
- 信息增益:基于熵的概念,表示通过某个特征对数据进行划分后,不确定性减少的程度。
- 基尼系数:表示一个集合中随机抽取两个样本,其类别不同的概率。基尼系数越小,数据集的纯度越高。
-
递归构建子树: 对每个分裂后的子集,重复选择最佳特征进行划分,直到数据集无法继续划分或者达到终止条件(如节点的样本数量过少或纯度足够高)。
-
停止条件:当所有样本都属于同一个类别,或无法找到更好的分裂方式时,决策树停止生长,生成叶节点。
分类决策树示例:
假设我们有一个简单的数据集用于判断是否要去户外活动,特征包括天气(晴天、阴天、雨天)、温度(高、中、低)等,目标是通过这些特征预测“是否去户外活动”(类别为是或否)。决策树模型可能先根据“天气”这一特征分裂数据,如果是“晴天”,继续判断温度,如果是“阴天”,则直接决定去户外。
决策树的优点:
- 易于理解和解释:决策树的结构非常直观,可以通过可视化清楚地展示决策过程。
- 处理非线性数据:决策树可以处理特征之间复杂的非线性关系。
- 适合处理分类和回归任务:决策树不仅可以用于分类任务,还可以处理回归问题。
- 无需数据预处理:决策树不需要特征归一化或标准化,且可以处理缺失数据。
决策树的缺点:
- 容易过拟合:决策树很容易生成过复杂的树结构,导致模型在训练集上表现很好,但在测试集上表现较差(即过拟合)。为了防止过拟合,通常需要对决策树进行剪枝(pruning)。
- 对噪声敏感:数据中的噪声可能会对树的生成产生很大影响,导致不稳定的决策边界。
- 偏向于表现较好的特征:某些特征可能在前几次划分中得到优先选择,导致决策树依赖这些特征而忽略了其他有用的特征。
剪枝(Pruning):
剪枝是一种减少过拟合的方法,通过削减冗余的分支使模型更简单。剪枝可以在树生成后进行(后剪枝)或在生成时控制树的复杂度(前剪枝)。
常见的剪枝方法有:
- 设定最大深度:限制决策树的最大深度。
- 设定最小分裂样本数:限制每个节点所需的最少样本数量,防止过小的分支。
- 设定最小信息增益:只有当信息增益达到某个阈值时才进行分裂。
决策树的常用算法:
- ID3(Iterative Dichotomiser 3):
- 以信息增益为标准来选择分裂特征。
- 【决策树算法1】ID3算法 数据挖掘 期末考试 计算题 详细步骤讲解_哔哩哔哩_bilibili
- C4.5:
- 是 ID3 的改进版本,支持连续数据,使用信息增益率(Gain Ratio)作为分裂标准,避免了 ID3 偏向多值特征的问题。
- CART(Classification and Regression Trees):
- 同时适用于分类和回归任务,分类时使用基尼系数作为标准,回归时使用方差或平方误差。
决策树的应用场景:
- 分类问题:如邮件分类(垃圾邮件与正常邮件)、病人诊断(健康与患病)等。
- 回归问题:如房价预测、股票市场价格预测等。
- 特征选择:决策树的结构可以显示出哪些特征对预测结果最为重要,帮助我们进行特征选择。
总结:
决策树是一种灵活且直观的模型,适用于多种任务。然而,由于其容易过拟合和对噪声敏感,通常需要与其他算法(如随机森林或梯度提升树)结合使用,以获得更好的效果。
三、多层感知器
多层感知机(Multilayer Perceptron,MLP)是一种前馈神经网络,也是最简单的人工神经网络(Artificial Neural Network,ANN)之一。
MLP 通过多个隐藏层(hidden layers)来学习复杂的模式,适用于分类和回归任务。它是最早的深度学习模型的基础构成,常用于模式识别、分类、回归等任务。
多层感知机的结构:
MLP 的结构由以下几部分组成:
-
输入层(Input Layer):
- 输入层的节点数与输入数据的特征数一致。每个节点代表输入数据的一个特征,不做任何计算,仅仅将数据传入模型。
-
隐藏层(Hidden Layers):
- 隐藏层是 MLP 的核心部分。它包含一个或多个层,每层由若干个神经元(Neuron)组成。
- 每个神经元接收上一层传来的输入,通过加权求和和激活函数进行非线性变换后,将结果传递到下一层。
- MLP 的强大之处在于隐藏层的非线性激活函数,使其能够处理复杂的非线性问题。
-
输出层(Output Layer):
- 输出层的节点数取决于任务类型:
- 分类任务:输出层的节点数通常等于类别数。
- 回归任务:输出层通常只有一个节点,输出一个连续值。
- 输出层的神经元输出经过激活函数处理,最终给出模型的预测值。
- 输出层的节点数取决于任务类型:
神经元的计算过程:
每个神经元的计算过程可以分为三步:
-
加权求和:每个神经元接收来自前一层的输入,乘以相应的权重后加总,外加一个偏置(bias)项:
z=w1x1+w2x2+⋯+wnxn+bz = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + bz=w1x1+w2x2+⋯+wnxn+b其中 w1,w2,…,wnw_1, w_2, \dots, w_nw1,w2,…,wn 是权重,bbb 是偏置项。
-
激活函数:将加权和输入到激活函数,激活函数引入非线性,使模型能够拟合复杂的模式:
a=f(z)a = f(z)a=f(z);常用的激活函数包括:- Sigmoid 函数:
- ReLU(Rectified Linear Unit)函数
- Tanh 函数
-
输出:激活后的结果传递给下一层,或作为最终输出结果。
MLP 的训练过程:
MLP 的训练过程基于反向传播算法(Backpropagation)和梯度下降法(Gradient Descent),主要分为以下步骤:
-
前向传播(Forward Propagation):
- 输入数据从输入层开始逐层传递,经过每个隐藏层的计算,最终在输出层生成预测值。
-
计算损失(Loss Calculation):
- 计算预测值与实际值之间的误差,常用的损失函数包括:
- 均方误差(Mean Squared Error, MSE):用于回归问题。
- 交叉熵损失(Cross-Entropy Loss):用于分类问题。
- 计算预测值与实际值之间的误差,常用的损失函数包括:
-
反向传播(Backpropagation):
- 通过链式法则,计算损失函数对每个参数(权重和偏置)的梯度。
- 从输出层开始,逐层计算梯度并更新每个神经元的权重。
-
梯度下降(Gradient Descent):
- 使用梯度下降算法更新权重和偏置,以最小化损失函数。
- 更新公式: wnew=wold−η∂L∂ww_{new} = w_{old} - \eta \frac{\partial L}{\partial w}wnew=wold−η∂w∂L 其中 η\etaη 是学习率,∂L∂w\frac{\partial L}{\partial w}∂w∂L 是损失函数关于权重的梯度。
-
迭代训练:
- 反复执行前向传播、计算损失、反向传播和梯度下降,直到模型收敛,即损失函数不再显著下降或达到预定的迭代次数。
多层感知机的优缺点:
优点:
- 能够处理非线性问题:通过非线性激活函数和多个隐藏层,MLP 可以处理复杂的非线性关系。
- 适应性强:MLP 可以用于分类和回归任务,适用于各种数据集。
- 可扩展性:MLP 是深度学习的基础,扩展到多层和更多神经元后可以构建更强大的深度神经网络。
缺点:
- 训练时间长:MLP 的训练过程涉及大量参数,特别是隐藏层较多时,训练时间较长。
- 依赖超参数选择:学习率、层数、神经元数量等超参数的选择对模型性能影响很大,通常需要大量实验来调参。
- 容易陷入局部最优:梯度下降算法可能会陷入局部最优解,导致模型不能达到全局最优。
多层感知机的应用场景:
- 图像分类:识别图像中的对象或特征。
- 语音识别:识别并处理语音信号,转换为文本或其他格式。
- 自然语言处理:如情感分析、文本分类、语言翻译等。
- 回归分析:用于预测连续值,如房价预测、股票市场预测等。
总结:
多层感知机是神经网络中的基础模型,具有很强的学习能力和非线性处理能力。通过多层结构和反向传播算法,MLP 能够有效地在大量数据中学习复杂的模式。然而,随着网络规模的增加,MLP 的计算复杂度也会增加,因此在大规模任务中,通常会结合更先进的神经网络架构(如卷积神经网络、递归神经网络等)来提升性能。
四、伯努利贝叶斯算法
伯努利贝叶斯算法(Bernoulli Naive Bayes)是一种基于贝叶斯定理的朴素贝叶斯分类器,专门用于处理二元数据(也称为“0/1”数据或布尔数据)。
它属于朴素贝叶斯算法的一个变体,主要适用于在每个特征上只有两种可能值的任务(如文本分类中的“词是否存在”)。
伯努利贝叶斯的基本概念
-
朴素贝叶斯分类器:
- 朴素贝叶斯分类器是基于贝叶斯定理的一种概率分类方法,假设特征之间相互独立。其目标是计算给定输入数据属于某个类别的后验概率,然后选择概率最大的类别作为预测结果。
- 贝叶斯定理公式: P(y∣X)=P(X∣y)P(y)P(X)P(y|X) = \frac{P(X|y)P(y)}{P(X)}P(y∣X)=P(X)P(X∣y)P(y) 其中,P(y∣X)P(y|X)P(y∣X) 是给定特征 XXX 时类别 yyy 的后验概率,P(X∣y)P(X|y)P(X∣y) 是在类别 yyy 下观测到特征 XXX 的概率,P(y)P(y)P(y) 是先验概率,P(X)P(X)P(X) 是特征 XXX 的边际概率。
-
伯努利分布:
- 伯努利贝叶斯算法假设每个特征都服从伯努利分布,即每个特征只有两种可能的取值:0 或 1(表示某个属性是否存在)。例如,在文本分类中,伯努利贝叶斯模型假设每个单词要么出现在文档中(值为 1),要么没有出现(值为 0)。
伯努利贝叶斯的工作原理:
-
数据表示:
- 特征值是二元的,例如在文本分类中,使用词袋模型将每个文档表示为词汇表中词的存在(1)或不存在(0)。
- 如果我们有一个包含 5 个单词的词汇表,那么每篇文档可以表示为一个 5 维的向量,如
[1, 0, 1, 0, 1]
,表示这篇文档中第 1、3、5 个单词出现了,而第 2、4 个单词没有出现。
-
条件概率计算:
- 伯努利贝叶斯模型在训练阶段会计算每个类别 yyy 下,每个特征 xix_ixi 取值为 1 或 0 的概率。
- 对于每个类别 yyy,它计算特征 xix_ixi 取值为 1 的概率 P(xi=1∣y)P(x_i = 1 | y)P(xi=1∣y) 以及取值为 0 的概率 P(xi=0∣y)P(x_i = 0 | y)P(xi=0∣y)。
- 这些条件概率会用于计算给定输入特征 XXX 属于某个类别 yyy 的概率。
-
预测:
- 在预测阶段,模型会计算输入特征 XXX 对应的各类别的后验概率 P(y∣X)P(y|X)P(y∣X),并选择概率最大的类别作为预测结果。
- 对于二分类问题,计算公式为:
- P(X∣y)P(X|y)P(X∣y) 是在类别 yyy 下,所有特征取值为 XXX 的概率,假设特征独立,可以表示为所有特征条件概率的乘积:
-
拉普拉斯平滑:
- 伯努利贝叶斯算法经常使用拉普拉斯平滑来避免某些特征在训练集中从未出现的问题(即条件概率为零)。拉普拉斯平滑通过在每个特征的频数上加一个常数(通常为 1),从而保证每个特征都有一个正的条件概率。
伯努利贝叶斯 vs. 多项式贝叶斯 vs. 高斯贝叶斯
- 伯努利贝叶斯:
- 假设数据是二元的,适用于特征是布尔值(0 或 1)的情况。
- 主要用于文本分类中的词袋模型,尤其是当我们关心的是单词是否出现,而不是单词的出现次数时。
- 多项式贝叶斯(Multinomial Naive Bayes):
- 假设特征是离散的,适用于特征是计数的情况(如词频)。
- 例如在文本分类中,多项式贝叶斯模型考虑的是单词的出现次数,而不是简单的是否出现。
- 高斯贝叶斯(Gaussian Naive Bayes):
- 假设数据服从高斯分布,适用于特征是连续值的情况。
- 例如在现实场景中处理连续数据时,高斯贝叶斯模型可以应用于这些数据的概率预测。
伯努利贝叶斯的优缺点
优点:
- 高效处理二元数据:伯努利贝叶斯特别适合处理二元特征数据,尤其在文本分类中的表现非常好。
- 简单且快速:计算复杂度低,训练和预测速度快,适合大规模数据。
- 适用于稀疏数据:伯努利贝叶斯适用于处理稀疏数据(大多数特征值为 0 的数据),如文本分类中的词袋模型。
缺点:
- 假设特征独立性:朴素贝叶斯假设所有特征是相互独立的,这在实际数据中往往不成立,可能导致模型性能下降。
- 不适用于非二元数据:伯努利贝叶斯只适用于二元特征,如果特征不是二元的,需要先进行二值化处理。
应用场景:
- 文本分类:伯努利贝叶斯常用于垃圾邮件分类、新闻分类等文本分类任务,特别是当文本表示为词袋模型时。
- 文档过滤:如根据某些关键词(0/1 特征)判断文档是否相关。
- 情感分析:通过检测情感词汇是否存在来分析文本的情感倾向。
总结:
伯努利贝叶斯是一种简单而高效的分类算法,特别适合处理二元数据。在文本分类任务中,当我们只关心词汇的出现与否时,伯努利贝叶斯通常比多项式贝叶斯表现更好。虽然它假设特征独立性,这在某些情况下不合理,但由于其计算效率高且易于实现,仍然是许多应用场景中的首选方法。
五、高斯贝叶斯
高斯贝叶斯(Gaussian Naive Bayes, GNB)是朴素贝叶斯分类器的一个变体,专门用于处理连续数据。它假设每个特征服从高斯分布(正态分布),即在每个类别中,各个特征的概率分布都是正态分布。
高斯贝叶斯的基本概念
-
朴素贝叶斯分类器:
- 朴素贝叶斯是基于贝叶斯定理的分类算法,假设特征之间相互独立。这种独立性假设尽管不完全符合现实,但在很多情况下表现良好。
- 贝叶斯定理计算条件概率:
-
高斯分布(正态分布):
- 在高斯贝叶斯中,假设每个特征在给定类别条件下服从高斯分布,也就是对于类别 yyy 下的特征 XiX_iXi,其概率密度函数可以表示为:
高斯贝叶斯的优缺点
优点:
- 计算效率高:高斯贝叶斯的训练和预测都很快,计算复杂度低,适合大规模数据。
- 适用于连续数据:高斯贝叶斯特别适合处理连续特征的分类任务,比如在医疗数据、传感器数据等场景下。
- 适用于高维数据:在高维空间中,高斯贝叶斯往往能有效地工作,尤其是当特征独立性假设近似成立时。
- 适合小样本学习:在小数据集下,高斯贝叶斯也能表现良好,因为它需要估计的参数较少。
缺点:
- 独立性假设不总是成立:朴素贝叶斯的一个核心假设是所有特征之间相互独立,但在实际任务中,特征往往是相关的。这种独立性假设会导致分类器在某些任务中的性能下降。
- 假设特征服从高斯分布:高斯贝叶斯假设所有特征都服从高斯分布,但在很多实际场景中,这个假设并不成立。如果数据分布偏离正态分布,模型的表现可能会受影响。
- 对异常值敏感:由于高斯分布的形状,对异常值较为敏感,这可能会导致模型误差较大。
应用场景:
-
文本分类:
- 尽管文本数据通常是离散的,但在使用 TF-IDF 等技术将文本转换为连续数值表示后,高斯贝叶斯仍然可以应用于文本分类任务。
-
医疗诊断:
- 医疗数据通常包含许多连续特征(如血糖、血压等),这些数据通常符合或接近正态分布,因此高斯贝叶斯常用于疾病分类或预测。
-
图像识别:
- 在某些图像识别任务中,高斯贝叶斯可以用于基于像素强度的分类。
-
传感器数据分析:
- 传感器数据通常是连续的,例如温度、湿度等数据,高斯贝叶斯可以用于分析这些数据。
总结:
高斯贝叶斯是一种简单但高效的分类器,特别适合处理连续特征数据。尽管它依赖特征独立性假设和高斯分布假设,但在许多应用场景中仍表现良好。由于其计算简单且训练速度快,它常常被用作分类任务中的基线模型。