K-Nearest Neighbors(KNN)
KNN
算法是一种基本的监督学习方法 ,用于分类和回归问题。在分类问题中,KNN
算法通过测量不同特征值之间的距离,找出输入实例与训练数据集中最接近的 k
个样本,然后根据这 k 个邻居的类别来预测新实例的类别。对于回归问题,KNN
则是预测新实例的连续值输出。
基本步骤
选择 K 值
K 值是算法中的一个超参数,表示考虑最近的邻居数量。选择 K 值时,较小的
K 值会使决策边界更加复杂,可能过拟合;较大的 K
值会简化决策边界,可能欠拟合。
计算距离
对于每一个训练样本,计算其与待分类样本之间的距离。常见的距离度量有欧氏距离、曼哈顿距离等。
找到 K 个最近邻
从计算出的距离中选出最小的 k 个,这 k
个样本即为待分类样本的最近邻。
预测类别或值
对于分类任务,对这 k
个样本的类别进行投票,票数最多的类别作为预测结果。
对于回归任务,通常采用这 k
个样本的目标值的平均值或加权平均值作为预测结果。
优点
算法简单直观,易于理解和实现。
不需要假设数据分布,适用于非线性分类问题。
可以处理多类问题。
缺点
计算成本高,特别是在大数据集上,因为需要计算测试样本与所有训练样本之间的距离。
需要选择合适的距离度量和 K 值。
对于不平衡的数据集,少数类别的预测可能会受到影响。
支持向量机 Support Vector
Machine(SVM)
是一种非常强大的监督学习模型 ,主要用于分类和回归分析。在分类问题中,SVM
寻找一个最优的超平面(在高维空间中可能是一条线、一个平面或一个超平面),该超平面能够最大化地将不同类别的数据分开。这个超平面被称为最大间隔超平面,而那些离超平面最近的训练样本点则被称为支持向量。
SVM
的核心思想在于找到一个决策边界 ,使得正负两类样本被尽可能远地分开,同时确保边界两侧的样本被正确分类。在非线性情况下,SVM
通过使用核函数(Kernel
Function) 将低维空间中的数据映射到高维空间,从而在高维空间中找到一个线性的决策边界。
多类分类问题解决策略(如 K
类)
一对一(One-vs-One, OvO)
在这种策略中,每一对类别都会进行一次二分类,这意味着总共需要训练 C(K,
2) = K(K-1)/2 个 SVM 模型。最终分类时,每个样本都会被 K (K-1)/2
个模型分类,然后根据多数投票原则决定最终类别。
一对多(One-vs-All, OvA)
也称为 One-vs-Rest。对于 K 类问题,需要训练 K 个 SVM
模型,每个模型区分一类样本和其他所有类别的样本。当分类新的样本时,每个模型都会给出一个决策,样本会被分配给具有最高置信度分值的那类。
多分类 SVM
这是一种直接将多类分类问题建模的方法,它试图一次性找到一个超平面矩阵来区分所有的
K 类。
逐步二分类 DAGSVM
Directed Acyclic Graph SVM 策略,这是一个专门设计用于多类分类的 SVM
变体,可以避免传统的投票机制。在逐步二分类(DAGSVM)策略中,构造了一个有向无环图(DAG),其中每个节点代表一个二分类器。DAG
的构建方式是从所有类别中选择两个类别进行比较,胜者(即被分类器认为更有可能的类别)继续与其他类别进行比较,直到确定最终的类别。这种方式确保了每个测试样本只需要通过一系列的二分类器,而不必经历所有可能的二分类器组合,从而避免了简单的多数投票机制。
svm 为什么要转成对偶问题进行求解,为什么对偶问题的解是原问题的解? svm
如何进行多分类,多分类 hinge loss 什么形式?
朴素贝叶斯分类器
朴素贝叶斯分类器是一种基于概率论的分类方法,尤其在文本分类、情感分析、垃圾邮件过滤等领域有着广泛的应用。它基于贝叶斯定理以及特征条件独立的假设,尽管这个假设在现实世界的数据中往往不成立,但朴素贝叶斯分类器在许多情况下仍然表现出良好的性能,尤其是在数据量较大时。
贝叶斯定理
朴素贝叶斯分类器的基础是贝叶斯定理,它描述了已知某些条件下,事件 A
发生的概率 P(A|B),可以用以下公式表示:
先验概率 (Prior Probability)
先验概率是指在观察到任何数据或证据之前,基于以往知识或经验对某事件发生概率的估计。它是我们的“先验”信念,反映了我们对某个假设在没有任何新信息情况下的初始信心程度。例如,在投掷一枚硬币的情况下,如果我们没有任何关于这枚硬币是否公平的信息,我们可能会设定正反两面出现的概率都是
50%,这就是一种先验概率。
后验概率 (Posterior Probability)
后验概率是指在观察到某些数据或证据之后,对事件发生概率的更新估计。它是根据先验概率以及新的观测数据,通过应用贝叶斯定理计算得出的。后验概率反映了我们对某个假设的新信念,这种信念是在考虑到所有可用信息后形成的。继续用硬币的例子,如果我们连续投掷硬币十次,其中有九次正面朝上,我们可能会调整我们对硬币公平性的信念,认为硬币可能是偏向正面的,此时我们对硬币偏向正面的概率的估计就是后验概率。
特征条件独立假设
朴素贝叶斯分类器假设所有特征在给定类别的情况下是相互独立的。这意味着,对于分类问题中的每个特征,其取值不会受到其它特征取值的影响,即使在实际中这种独立性可能并不存在。这一假设简化了计算,使得分类器的训练变得相对简单,同时也使得朴素贝叶斯分类器能够处理高维数据。
分类过程
朴素贝叶斯分类器的工作流程通常包括以下步骤:
训练阶段:计算每个类别的先验概率以及每个特征在各类别下的条件概率。
预测阶段:对于一个新的输入样本,计算其属于每个类别的后验概率,然后选择具有最大后验概率的类别作为预测结果。
优点
算法简单,易于实现。
训练速度快,所需的计算资源较少。
在特征条件独立假设下,可以处理高维数据。
缺点
条件独立假设在实际应用中往往是不成立的,这可能会影响分类器的准确性。
对于从未在训练数据中出现过的特征值,朴素贝叶斯分类器会给出 0
的概率,这可能导致分类失败。为了避免这种情况,通常会采用平滑技术,如拉普拉斯平滑。
独立成分分析(ICA)
独立成分分析是一种统计和计算技术,用于估计一组随机变量的潜在因素或成分,这些成分被认为是相互独立的。ICA
的目标是找到一组变换,将混合的观测信号分解成独立的源信号。与主成分分析不同,ICA
关注的是信号的统计独立性,而非方差最大化。ICA
在信号分离、盲源分离等领域有广泛应用。
数据降维
奇异值分解(SVD)
异值分解是一种矩阵分解技术,广泛应用于信号处理、数据压缩、模式识别等多个领域。对于任意一个矩阵
A(m×n),SVD 将其分解为三个矩阵的乘积:UΣV^T,其中 U 是 m×m
的正交矩阵,Σ 是 m×n 的对角矩阵,其对角线上的元素是 A
的奇异值(通常是降序排列的非负实数),V 是 n×n 的正交矩阵。SVD
在数据分析中常用于提取矩阵的主要成分,如降维、数据压缩、特征提取等。
主成分分析(PCA)
主成分分析是一种常用的统计方法,用于识别数据中的模式和结构。PCA
通过正交变换将可能相关的变量转换为一组线性不相关的变量,称为主成分。主成分是原变量的线性组合,第一个主成分具有数据的最大方差,第二个主成分具有次大方差,同时与第一个主成分正交,以此类推。PCA
常用于降维、数据可视化和噪声消除。
线性判别分析(Linear
Discriminant Analysis, LDA)
是一种常用的数据分析和分类技术,最初由 R.A. Fisher
提出,因此有时也被称作 Fisher 判别分析。LDA
主要用于寻找最佳的低维空间投影,使得不同类别的样本在该空间中的分离度最大化,同时保持同类样本之间的紧凑性。LDA
经常被用于降维和分类任务,特别是在监督学习的场景下。
LDA 的主要目标
LDA
的主要目标是找到一个投影,使得投影后的数据在不同类别间具有最大的可区分性,同时在同一类别内具有最小的差异性。具体而言,LDA
试图最大化类间散度和最小化类内散度,以此来增强分类效果。
LDA 的步骤
计算类内散度矩阵 Sw 和类间散度矩阵 Sb: 类内散度矩阵 Sw
反映了同一类别内部样本之间的变异程度。 类间散度矩阵 Sb
则反映了不同类别之间中心点的变异程度。 求解特征向量和特征值: 通过求解
Sw 和 Sb 的广义特征值问题,找到能最大化类间差异的投影方向。
选择投影方向: 选择前 k 个最大的特征值对应的特征向量作为投影方向,其中 k
是希望得到的降维后的特征数量。 投影数据:
将原始数据投影到找到的投影方向上,得到降维后的数据。 分类:
降维后的数据可以使用各种分类器进行分类,如线性分类器。
LDA 的应用
LDA 在多个领域都有广泛应用,包括但不限于:
人脸识别:LDA
可以用于提取人脸图像的重要特征,从而在低维空间中进行人脸识别。
生物信息学:在基因表达数据的分析中,LDA
可以帮助识别不同疾病状态的基因表达模式。 市场细分:在市场营销中,LDA
可以用来识别消费者群体的不同特征,帮助进行市场细分。 医学诊断:LDA
可用于诊断疾病,通过分析患者数据来区分健康个体和患病个体。
LDA 与主成分分析(PCA)
方法类似,但 PCA 是一种无监督的降维方法,而 LDA
是有监督的,它利用了类标签信息,这使得 LDA
在分类任务中通常能提供更好的性能。然而,LDA
也有其局限性,比如它假设数据服从高斯分布,且不同类别的协方差矩阵相等,这在某些情况下可能不成立。
拉普拉斯特征映射(Laplacian
Eigenmaps)
是一种非线性降维技术,由 Belkin 和 Niyogi 在 2003
年提出,主要用于在保持数据局部结构的同时,将高维数据嵌入到低维空间中。Laplacian
Eigenmaps
的核心思想是利用数据点之间的相似性来构建一个图,然后在图上找到最优的低维表示,这种表示能够尽可能地保持原数据点间的局部距离不变。
拉普拉斯特征映射的基本步骤:
构建邻接矩阵:首先,为数据集中的每个点 i 找到其最近的 k
个邻居,然后构建邻接矩阵 W,其中 W(i,j) > 0 如果点 j 是点 i
的邻居,否则 W(i,j) = 0。W(i,j)的具体值可以是点 i 和点 j
之间的相似性度量,比如高斯核函数。 构建度矩阵:度矩阵 D
是一个对角矩阵,其中 D(i,i)等于第 i 个点的度,即邻接矩阵 W 中第 i
行元素之和。 构建拉普拉斯矩阵:拉普拉斯矩阵 L 定义为 L = D -
W。这是图拉普拉斯算子的一种形式,它捕获了图的连通性和拓扑性质。
求解特征值问题:寻找拉普拉斯矩阵 L
的特征向量和特征值。最小的几个非零特征值对应的特征向量提供了数据点在低维空间中的坐标。
数据点的低维表示:将数据点映射到低维空间中,使用最小的几个非零特征值对应的特征向量作为坐标轴。这些特征向量捕捉了数据集的内在几何结构,使得数据点在低维空间中的相对位置保持了它们在高维空间中的局部关系。
应用场景: 数据可视化:Laplacian Eigenmaps
可以用于将高维数据可视化,通过降维将数据投影到二维或三维空间,以便于人类观察和理解。
聚类分析:通过在低维嵌入空间中应用聚类算法,可以发现数据的潜在结构和簇。
图像处理:在图像分析和识别中,可以利用 Laplacian Eigenmaps
来提取图像的关键特征。
与其它降维技术的对比:
与 PCA(主成分分析)相比,Laplacian Eigenmaps
更关注数据的局部结构,而 PCA 则关注全局的方差最大化。PCA
是一种线性降维技术,而 Laplacian Eigenmaps
能够处理非线性数据集,这对于复杂数据结构特别有用。
总的来说,Laplacian Eigenmaps
是一种强有力的非线性降维工具,特别适用于保持数据的局部连通性和拓扑结构,使其成为分析高维数据集的有效手段。
LLE
KPCA
ISOMAP
决策树(Decision Trees)
决策树是一种用于分类和回归的机器学习算法。它通过构建一棵树形结构,其中内部节点表示特征上的测试,分支表示测试结果,而叶子节点表示类别或数值。决策树通过递归地分割数据集,每次分割都选择最优的特征和分割点,以最大程度地减少不纯度(如基尼不纯度或熵)。决策树易于理解和解释,可以处理数值和分类数据,但容易过拟合,通常需要剪枝技术来控制复杂度。
决策树对连续值和离散值特征是否会重复利用作为分割特征?
ID3 算法的局限性
只处理离散属性:ID3 算法只能处理离散属性,无法直接处理连续属性。
信息增益偏好:ID3
使用信息增益作为分裂标准,这导致它偏好具有更多值的属性,即使这些属性可能并不提供更多的分类信息。
缺失值处理:ID3 算法没有提供处理缺失值的有效机制。 过拟合问题:ID3
算法容易过拟合,因为它总是尽可能深地生长树,直到所有叶子节点都是纯的。
C4.5 的改进
处理连续属性:C4.5
可以处理连续属性,通过寻找最佳的切分点将连续属性转化为二元离散属性。
使用增益率:C4.5 使用增益率(Gain
Ratio)代替信息增益作为分裂属性的选择标准。增益率考虑了信息增益与属性的熵的比率,从而避免了信息增益偏好的问题。
处理缺失值:C4.5
提供了一种处理缺失值的方法,允许在不知道完整信息的情况下仍能进行分类。
剪枝策略:C4.5
引入了剪枝技术,以防止过拟合。它使用两种剪枝方法:悲观剪枝(使用一个用户定义的阈值来决定是否剪枝)和错误估计剪枝(基于树的错误率来决定是否剪枝)。
生成规则集:C4.5
不仅生成决策树,还可以从决策树中导出一套规则,这使得模型更容易被理解和解释。
处理多类分类:C4.5 可以很好地处理多类分类问题,而不仅仅是二分类。
CART 算法的特点:
二叉树结构:CART
生成的决策树是二叉树,每个非叶节点都有两个子节点,这使得树的结构更加简单,易于理解和实现。
变量选择:对于分类树,CART 使用基尼不纯度(Gini
Impurity)作为特征选择的标准;对于回归树,则使用平方误差(Mean Squared
Error)来评估分裂的质量。 可处理连续和离散变量:CART
能够自动处理连续和离散变量,对于连续变量,它会找到最佳的分割点来创建二元分裂。
缺失值处理:CART
提供了处理缺失值的策略,例如使用替代值或者通过预测缺失值的可能性来分配样本到不同的分支。
剪枝策略:CART 采用成本复杂性剪枝(Cost Complexity
Pruning)来防止过拟合,这是一种后剪枝方法,通过在树的复杂性和拟合数据的误差之间寻找平衡点来简化决策树。
BP
神经网络(Backpropagation Neural Networks)
BP
神经网络是人工神经网络的一种,通过前向传播计算输出,再通过反向传播调整权重,以最小化网络输出与期望输出之间的误差。BP
算法使用梯度下降法更新权重,使网络能够学习复杂的非线性映射。神经网络可以处理大量输入和输出,具有很强的学习能力,但训练时间可能较长,且可能遇到局部最优解的问题。
随机森林(Random Forests)
随机森林是一种集成学习方法,通过构建多个决策树并将它们的预测结果进行投票来改进预测性能。随机森林在构建每棵树时,不仅随机选择样本,还随机选择特征,这样可以减少过拟合风险并提高模型的泛化能力。随机森林能够处理高维数据,对于异常值和缺失值具有较好的鲁棒性。
随机森林与 GBDT,解释、比较异同、哪种方法单棵决策树的深度更大?
判别式模型 vs 生成式模型
判别式模型(Discriminative
Models)
直接学习输入特征和输出标签之间的映射关系,目标是最小化预测错误。例如,BP
神经网络、支持向量机都属于判别式模型的范畴,它们直接学习如何将输入映射到输出。
生成式模型(Generative
Models)
试图学习数据和标签的联合分布,通常用于估计类条件概率。例如,朴素贝叶斯分类器就是一种生成式模型,它估计了给定类别的条件下特征的概率分布。
NLP
TF-IDF(Term
Frequency-Inverse Document Frequency)
是一种用于信息检索和文本挖掘的统计方法,它评估一个词对一个文档集合或语料库中的某篇文档的重要程度。TF-IDF
由两部分组成:词频(TF)和逆文档频率(IDF)。词频是指一个词在文档中出现的频率,而逆文档频率则反映了一个词在整个文档集合中的罕见程度。
文本分类中,从含有兼类可分为多标签分类和单标签分类
距离算法
1. 欧几里得距离(Euclidean
Distance)
欧几里得距离是最直观的距离度量方式,它计算的是两个点在多维空间中的直线距离。在二维空间中,如果点
A 的坐标是((x_1, y_1)),点 B 的坐标是((x_2,
y_2)),那么它们之间的欧几里得距离为:
[ d_{AB} = ]
推广到 n 维空间,如果有两个 n 维向量( = (a_1, a_2, ..., a_n))和( =
(b_1, b_2, ..., b_n)),它们之间的欧几里得距离为:
[ d*{AB} = ]
2. 曼哈顿距离(Manhattan
Distance)
曼哈顿距离,也称为城市街区距离或 L1
距离,它衡量的是两点在坐标轴上的绝对距离之和。在 n
维空间中,两个向量()和()之间的曼哈顿距离为:
[ d*{AB} = ^{n}|a_i - b_i| ]
曼哈顿距离在网格布局或出租车行驶路径计算中很有用,因为它忽略了两点之间的直线距离,只考虑沿坐标轴方向的移动。
3. Canberra 距离
Canberra
距离是一种用于非负向量的度量,它在计算距离时考虑了分母,使得距离受向量元素值的影响更大。两个非负向量()和()之间的
Canberra 距离定义为:
[ d*{AB} = ^{n} ]
Canberra 距离在处理稀疏数据时特别有用,因为它可以更好地处理零值。
4. 切比雪夫距离(Chebyshev
Distance)
切比雪夫距离,也称为棋盘距离或 L∞
距离,它衡量的是两个点在任一坐标轴上的最大绝对差值。在 n
维空间中,两个向量()和()之间的切比雪夫距离为:
[ d*{AB} = (|a_i - b_i|) ]
切比雪夫距离在某些应用场景中特别有用,比如在国际象棋中计算棋子移动的最短步数。
每种距离度量都有其特点和适用场景,选择合适的距离算法对于数据的分析和建模至关重要。例如,欧几里得距离适用于测量连续空间中的相似性,而曼哈顿距离和切比雪夫距离可能在某些特殊的空间布局或数据结构中更有优势。
梯度算子
梯度算子是数字图像处理和计算机视觉领域中用于边缘检测和特征提取的重要工具。梯度算子能够突出图像中的边缘和纹理,通过计算图像像素强度的局部变化来检测边界。以下是几种常用的梯度算子模板:
1. Sobel 算子
Sobel
算子是使用最广泛的边缘检测算子之一,它通过计算图像在水平和垂直方向上的梯度来检测边缘。Sobel
算子由两个 3x3 的卷积核构成:
Sobel
算子对图像进行卷积操作后,可以得到水平和垂直方向上的梯度分量,最后通过合并这两个分量来获得边缘强度。
2. Prewitt 算子
Prewitt 算子与 Sobel 算子类似,也使用两个 3x3
的卷积核来检测水平和垂直方向上的梯度,但 Prewitt
算子的权重分布较为均匀:
3. Roberts 交叉算子
Roberts 交叉算子使用 2x2 的小型卷积核,可以快速计算图像的梯度:
Roberts 算子对噪声敏感,但在计算速度上有优势。
4. Laplacian 算子
Laplacian
算子不是直接检测梯度,而是检测二阶导数,用于检测边缘的拐点。一个常用的
Laplacian 算子模板是:
5. LoG 算子
全称为 Laplacian of Gaussian
算子,是一种在图像处理和计算机视觉中用于边缘检测和特征提取的算法。LoG
算子结合了高斯平滑滤波器(Gaussian filter)和拉普拉斯算子(Laplacian
operator),其主要目的是在抑制噪声的同时检测图像中的边缘和其他显著特征。
工作原理:
高斯平滑 :
首先,LoG
算子使用高斯滤波器对图像进行平滑处理。高斯滤波器通过应用一个高斯分布的权重矩阵(核)来对每个像素及其邻域进行加权平均,从而减少图像中的高频噪声。
拉普拉斯算子 :
接着,经过高斯平滑后的图像会被进一步应用拉普拉斯算子。拉普拉斯算子是一个二阶微分算子,它对图像的亮度变化进行二次导数计算,能够突出图像中的突变区域,如边缘。
LoG 滤波器 :
将上述两个步骤合在一起,LoG
算子实际上是计算高斯平滑后的图像的拉普拉斯变换。数学上,LoG
算子定义为高斯函数的拉普拉斯变换,表达式为: [ ^2 g(x,y,) = g(x,y,) +
g(x,y,) ] 其中 (g(x,y,)) 是二维高斯函数,()
是标准差,决定了高斯核的宽度。
应用:
实现:
在实践中,LoG 算子可以通过卷积操作实现,即将图像与预定义的 LoG
核进行卷积。LoG
核是高斯核和拉普拉斯算子的离散近似,其形状取决于选择的()值。
为了简化计算,有时会先应用高斯核,再单独应用拉普拉斯算子,尽管这在数学上不完全等同于
LoG 算子,但可以达到类似的效果,这种方法被称为 DoG(Difference of
Gaussians)算子,是 LoG
的一个近似版本,常用于尺度不变特征变换(SIFT)等算法中。
LoG
算子因其在抑制噪声和定位边缘及特征点方面的有效性,在图像处理领域有着广泛的应用。
色彩模型
是用来描述颜色的一种数学表示方法,它们按照不同的用途和目的对颜色进行分类和编码。你提到的色彩模型可以大致分为两大类:面向硬件设备的色彩模型和面向视觉感知的色彩模型。
面向硬件设备的彩色模型
这类模型主要用于设备的颜色表示,它们的设计是为了与特定类型的硬件或色彩再现过程兼容。
RGB 模型(Red, Green, Blue):
RGB
模型是基于加色法原理的色彩模型,通常用于显示设备如电视、电脑显示器和手机屏幕。在
RGB
模型中,红、绿、蓝三种颜色的光以不同的强度混合,可以产生广泛的色彩范围。
CMYK 模型(Cyan, Magenta,
Yellow, Key/Black):
CMYK
模型是基于减色法原理的色彩模型,主要用于印刷行业。在印刷过程中,青色、洋红色、黄色和黑色油墨以不同比例混合,可以复制出各种色彩。
YCrCb
模型(Luminance/Chrominance):
YCrCb 模型是一种用于视频系统的色彩模型,其中 Y
代表亮度(Luminance),Cr 和 Cb
分别代表红色和蓝色的色差(Chrominance)。这种模型被用于数字电视和图像压缩中,如
JPEG 2000 和 H.26x 系列视频编码标准。
面向视觉感知的彩色模型
这类模型的设计更贴近人类视觉系统对颜色的感知方式,通常用于色彩管理和色彩选择界面。
HSI 模型(Hue, Saturation,
Intensity):
HSI
模型将颜色分为色调(Hue)、饱和度(Saturation)和强度(Intensity)三个组成部分。色调描述了颜色的基本类型,饱和度表示颜色的纯度,强度则是颜色的亮度。
HSV 模型(Hue, Saturation,
Value):
HSV 模型与 HSI
模型类似,但将强度(Intensity)替换为价值(Value)。价值表示颜色的明暗程度,而色调和饱和度的定义与
HSI 模型相同。
HSB 模型(Hue, Saturation,
Brightness):
HSB 模型实际上与 HSV
模型是相同的,只是将“Value”称为“Brightness”。在某些软件中,如 Adobe
Photoshop,使用 HSB 来表示 HSV 模型。