数据挖掘算法整合

线性回归模型

当变量之间存在互相依赖关系的时候,这时候可以进行回归分析。回归分析与相关分析在理论和方法上具有一致性,变量之间没有关系,就谈不上回归分析或者建立回归方程;相关程度越高,回归效果就越好,而且相关系数和回归系数方向一致,可以互相推算。

相关分析中的两个变量之间的地位是对等的,即变量 𝐴 与变量 𝐵 相关等价于变量 𝐵 与变量 𝐴 相关,相关分析的两个变量均为随机变量;而回归分析中要确定自变量和因变量,通常情况下只有因变量是随机变量,人们可以利用回归分析来对研究对象进行预测或控制。

回归分析往往是通过一条拟合的曲线来表示模型的建立 回归分析的参数估计 我们把因变量的观测值记为 𝑦𝑖 ,其期望值记为 𝑦¯ ,把估计值(用回归方程获得的预测值)记为 𝑦𝑖^ 。那么为了可以找到最代表原始数据信息的回归直线我们可以通过最小二乘法的方式来估计我们的参数

回归方程的检验及模型预测

对于估计出来的回归方程,可以从模型的解释程度,回归方程总体显著性以及回归系数的显著性等几个方面进行检验。

1.回归方程的拟合优度判定
回归方程的拟合优度主要用于判定 𝑦𝑖^ 估计 𝑦 的可靠性问题,可以用来衡量模型的解释程度。我们通过以下公式来表示回归方程的拟合程度
𝑅2=∑(𝑦𝑖−𝑦¯)2∑(𝑦𝑖−𝑦¯)2=1−∑(𝑦𝑖−𝑦𝑖)2∑(𝑦𝑖−𝑦¯)2,
其中 𝑅2 的取值范围为 [0,1] 。 𝑅2 越接近于1,说明变量之间的相互依存关系越密切,回归方程的拟合程度越好
2.回归方程总体显著性检验
利用最小二乘法拟合出来的回归方程,都是由样本数据进行的,那么用它来对总体进行推断是否显著呢?因此可以对回归方程整体的显著性进行检验。其原假设和备择假设如下:
𝐻0:𝛽1=𝛽2=…=𝛽𝑖=0,𝐻1:𝛽𝑖不全为0
3.回归方程系数显著性检验
如果模型的线性关系显著,还应对模型参数估计的结果即回归方程的系数进行显著性检验,用于考察单个自变量的线性关系是否成立。其原假设和备择假设如下
𝐻0:𝛽𝑖=0(𝑖=1,2,…,𝑘)𝐻1:𝛽𝑖≠0(𝑖=1,2,…,𝑘)

回归方程系数显著性检验要求对所有估计出来的回归系数分别进行检验(截距项通常不进行显著性检验)可以利用 𝑡 统计量及检验 𝑃 值。如果当前系数对应的 𝑃 值小于显著性水平 𝑎 值,可以认为再显著性水平 𝑎 下,该回归系数是显著的。
回归方程的预测
回归预测是一种有条件的预测,依据估计出来的回归方程,在给定自变量数值的条件下对因变量进行预测。
#非线性回归模型
现实生活中,很多变量之间的关系并不一定就像是我们在线性回归中描述的那样是线性关系,变量之间还可能存在非线性关系。如人的生长曲线,经济增长会随时间的推移而发生周期性的波动等。如果存在非线性关系的情况下去使用线性回归拟合曲线,则会丢失数据之间大量有用的信息,甚至会得出错误的结论。这种情况下,可以使用非线性回归分析来对数据之间的统计关系进行考察。

非线性形式的变量关系一般可以通过变量代换或转换的方式转化为线性关系。常见的一种模型为
𝑦=𝑎𝑥𝛽+𝜀

其中 𝑎,𝛽 为模型参数, 𝜀 为残差项
在实际建模过程中,可以把上述模型左右同时去对数,可得:
𝑙𝑛𝑦=𝑙𝑛𝑎+𝛽𝑙𝑖𝑛𝑥+𝜀→𝑦′=𝑎′+𝛽𝑥′+𝜀

其中 𝑦′=𝑙𝑛𝑦,𝑥′=𝑙𝑛𝑥,𝑎′=𝑙𝑛𝑎 ,转化之后的模型我们采取和线性回归一样的方式来进行参数估计和模型检验

对于其他的非线性模型比如对数模型 𝑦=𝑎+𝛽𝑙𝑛𝑥+𝜀 也可以转化成 𝑦=𝑎+𝛽𝑥+𝜀 包括其他类型的非线性模型都可以转化为一元线性回归。类似的存在多个自变量情形下的非线性回归,也可以按照上述变量转换和代换的方式把多元线性模型转化为多元线性模型。在statsmodels的ols中,用户可在建模的过程中张子杰把自变量和因变量按照指定方式转换并进行回归分析,其分析过程与之前的线性回归中介绍的内容无异。

逻辑回归

逻辑回归(Logistic Regression)是一种预测分析,解释因变量与一个或者多个自变量之间的关系,与线性回归不同之处就是它的目标变量有几种类别,所以逻辑回归主要用于解决分类问题。 线性回归适用于估计连续值(例如估算房价),但它不是预测观测数据点类别的最佳工具。为了估计分类,我们需要一些关于该数据点最可能的类别的指导。为此,我们使用Logistic回归。

回想一下线性回归:

线性回归找到一个函数,它将连续因变量 𝑦 与某些预测变量(自变量 𝑥1,𝑥2 等)相关联。简单的线性回归假设了以下形式的函数:

𝑦=𝜔0+𝜔1∗𝑥1+𝜔2∗𝑥2+…

并找到 𝜔0,𝜔1,𝜔2 等的值。术语 𝜔0 是“截距”或“常数项”(在下式中显示为 𝑏 ):

𝑦⃗ =𝜔⃗ ·𝑥⃗ +𝑏

Logistic回归是线性回归的变体,当观察到的因变量y是分类时是有用的。它产生一个预测类标签作为自变量函数的概率的公式。

尽管名称 logistic 回归 ,它实际上是一个概率分类模型。 logistic回归通过采用线性回归拟合特殊的S形曲线,并使用以下函数将数值估计转换为概率:

𝑃𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑦𝑂𝑓𝑎𝐶𝑙𝑎𝑠𝑠=𝜃(𝑦)=𝑒𝑦1+𝑒𝑦=𝑒𝑥𝑝(𝑦)/(1+𝑒𝑥𝑝(𝑦))=𝑝

它产生0(如y接近负无穷)和1(随着y接近正无穷)之间的p值。这现在成为一种特殊的非线性回归.

在这个等式中,y 是回归结果(由系数加权的变量之和), 𝑒𝑥𝑝 是指数函数以及 𝜃(𝑦) 是 logistic 函数,也称为logistic曲线。这是一种常见的“S”形(S形曲线),最初是为模拟人口增长而开发的。

在另一个配置中,您可能也会看到过此函数:

𝑃𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑦𝑂𝑓𝑎𝐶𝑙𝑎𝑠𝑠=𝜃(𝑦)=11+𝑒−𝑥

因此,简而言之,Logistic回归通过logistic/sigmoid 传递输入,但将结果视为概率:
#多项式回归模型
理论上来说我们可以运用非线性回归中学到的方式对任何曲线进行拟合,但前提条件是必须要对模型有正确的判断,即知道非线性模型的参数设置。在一般情况下通过绘制散点图可以做到这一点。但是在更一般的情况下,如有多个自变量的情况下,无法绘制散点图,同时也很难对模型进行预估,这个时候可以使用本次实验中所介绍的方法。根据数学的相关理论,任何曲线均可以使用多项式进行逼近。这种逼近的分析过程即多项式回归
多项式回归类似于可线性化的非线性模型,可通过变量代换的方式使用普通最小二乘对参数进行估计。设有因变量 𝑦 和自变量 𝑥 ,它们之间的关系为 𝑛 次多项式的关系,则有如下模型
𝑦=𝑎+𝛽1𝑥+𝛽2𝑥2+𝛽3𝑥3+…+𝛽𝑛𝑥𝑛+𝜀

我们令 𝑥1=𝑥,𝑥2=𝑥2…𝑥𝑛=𝑥𝑛 ,则多项式模型就转化为如下的多元线性模型
𝑦=𝑎+𝛽1𝑥1+𝛽2𝑥2+𝛽3𝑥3+…+𝛽𝑛𝑥𝑛+𝜀

对于多元的多项式模式
𝑦=𝑎+𝛽1𝑥1+𝛽2𝑥2+𝛽3𝑥21+𝛽4𝑥1𝑥2+𝛽5𝑥22+…+𝛽𝑚𝑥𝑛𝑚+𝜀

同样可以作变量代换,令 𝑧1=𝑥1,𝑧2=𝑥2,𝑧3=𝑥21,𝑧4=𝑥1𝑥2,𝑧5=𝑥22,…,𝑧𝑚=𝑥𝑛𝑚 ,则有
𝑦=𝑎+𝛽1𝑧1+𝛽2𝑧2+𝛽3𝑧3+…𝛽𝑚𝑧𝑚+𝜀

转化之后的模型同样可以按照多元线性回归模型进行分析。当多项式回归阶数过高时,待估计参数过多,在样本不大的情况下会比较困难,这是多项式回归的一大缺陷。因此,一般的多项式回归模型很少应用到三阶以上。

贝叶斯

贝叶斯心态

贝叶斯世界观将概率解释为事件中可信度的度量,即我们对事件发生的信心。而且这种信度是会跟着对客观世界的观察发生改变的。

还是引用上面的例子:

𝑃(𝐴): 表示这段复杂的代码存在错误的概率,这是先验概率(然而这个概率是未知的)。
𝑋 表示发生的事件,这里即为这段代码通过了3轮测试。
𝑃(𝐴|𝑋): 表示在已经得知了 𝑋 事件后,代码没有错误的概率,这是条件概率。
贝叶斯公式

上述所说的更新对某事件的信念的过程,遵循以下的贝叶斯定理:

𝑃(𝐴|𝑋)=𝑃(𝑋|𝐴)𝑃(𝐴)𝑃(𝑋)∝𝑃(𝑋|𝐴)𝑃(𝐴)(∝表示成正比 )
其中,𝑃(𝐴) 表示先验概率,𝑃(𝐴|𝑋)表示后验概率。

朴素贝叶斯算法

贝叶斯分类是一种分类算法的总称,这种算法均已贝叶斯定理为基础,故统称为贝叶斯分类。

贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为对象所属的类。

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布,然后基于此模型,对给定的输入𝑥,利用贝叶斯定理,利用贝叶斯定理求出后验概率最大的输出𝑦
在所有的机器学习分类算法中,朴素贝叶斯(Naive Bayesian Model,NBM)和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数𝑌=𝑓(𝑋),要么是条件分布𝑃(𝑌|𝑋)。但是朴素贝叶斯却是生成方法,也就是直接找出特征输出Y和特征X的联合分布𝑃(𝑋,𝑌),然后用𝑃(𝑌|𝑋)=𝑃(𝑋,𝑌)/𝑃(𝑋)得出。

朴素贝叶斯很直观,计算量也不大,在很多领域有广泛的应用。

** 条件概率公式**

条件概率公式(Condittional probability),是指在事件B发生的情况下,事件A发生的概率,用𝑃(𝐴|𝐵)来表示。

根据文氏图可知:在事件B发生的情况下,事件A发生的概率就是𝑃(𝐴|𝐵)除以𝑃(𝐵)。
𝑃(𝐴|𝐵)=𝑃(𝐴∩𝐵)𝑃(𝐵)=>𝑃(𝐴∩𝐵)=𝑃(𝐴|𝐵)𝑃(𝐵)
同理可得:

𝑃(𝐴∩𝐵)=𝑃(𝐵|𝐴)𝑃(𝐴)
所以,

𝑃(𝐴|𝐵)𝑃(𝐵)=𝑃(𝐵|𝐴)𝑃(𝐴)=>𝑃(𝐴|𝐵)=𝑃(𝐵|𝐴)𝑃(𝐴)𝑃(𝐵)
** 全概率公式 **

如果事件𝐴1,𝐴2,𝐴3,𝐴𝑁构成一个完备事件且都有正概率,那么对于任意一个事件𝐵则有:

𝑃(𝐵)=𝑃(𝐵𝐴1)+𝑃(𝐵𝐴2)+…+𝑃(𝐵𝐴𝑛)=𝑃(𝐵|𝐴1)𝑃(𝐴1)+𝑃(𝐵|𝐴2)𝑃(𝐴2)+…+𝑃(𝐵|𝐴𝑛)𝑃(𝐴𝑛)
𝑃(𝐵)=∑𝑖=1𝑛𝑃(𝐴𝑖)𝑃(𝐵|𝐴𝑖)
贝叶斯公式推断

根据条件概率和全概率公式,可以得到贝叶斯公式如下:
𝑃(𝐴|𝐵)=𝑃(𝐴)𝑃(𝐵|𝐴)𝑃(𝐵)
  转换为分类任务的表达式:
𝑃(类别|特征)=𝑃(类别)𝑃(特征|类别)𝑃(特征)
𝑃(𝐴𝑖|𝐵)=𝑃(𝐴𝑖)𝑃(𝐵|𝐴𝑖)∑𝑛𝑖=1𝑃(𝐴𝑖)𝑃(𝐵|𝐴𝑖)
P(A)称为“先验概率”(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。

P(A|B)称为“后验概率”(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。

P(B|A)/P(B)称为“可能性函数”(Likely hood),这是一个调整因子,使得预估概率更接近真是概率。

如果“可能性函数”>1,意味着“先验概率”被增强,事件A的发生的可能性变大;
如果“可能性函数”=1,意味着B事件无助于判断事件A的可能性;
如果“可能性函数”<1,意味着“先验概率”被削弱,事件A的发生的可能性变小;
  所以条件概率可以理解为:后验概率=先验概率*调整因子

朴素贝叶斯算法

输入:训练数据 𝐷={(𝑥1,𝑦1),(𝑥2,𝑦2),⋯,(𝑥𝑁,𝑦𝑁)} ,其中 𝑥𝑖=(𝑥(1)𝑖,𝑥(2)𝑖,⋯,𝑥(𝑛)𝑖) , 𝑥(𝑗)𝑖 是第 𝑖 个样本的第 𝑗 个特征, 𝑥(𝑗)𝑖∈{𝑎𝑗1,𝑎𝑗2,⋯,𝑎𝑗𝑆𝑗}𝑇 , 𝑎𝑗𝑙 是第 𝑗 个特征可能取的第 𝑙 个值, 𝑗=1,2,⋯,𝑛 , 𝑙=1,2,⋯,𝑆𝑗 , 𝑦𝑖∈{𝑐1,𝑐2,⋯,𝑐𝐾} ;实例 𝑥=(𝑥(1),𝑥(2),⋯,𝑥(𝑛))𝑇
输出:实例 𝑥 的分类

算法步骤如下:

计算先验概率即条件概率
𝑃(𝑌=𝑐𝑘)=∑𝑁𝑖=1𝐼(𝑦𝑖=𝑐𝑘)𝑁,𝑘=1,2,⋯,𝐾

𝑃(𝑋(𝑗)=𝑎𝑗𝑙|𝑌=𝑐𝑘)=∑𝑁𝑖=1𝐼(𝑥(𝑗)𝑖=𝑎𝑗𝑙,𝑦𝑖=𝑐𝑘)∑𝑁𝑖=1𝐼(𝑦𝑖=𝑐𝑘)

𝑗=1,2,⋯,𝑛;𝑙=1,2,⋯,𝑆𝑗;𝑘=1,2,⋯,𝐾

对于给定的实例 𝑥=(𝑥(1),𝑥(2),⋯,𝑥(𝑛))𝑇 ,计算:
𝑃(𝑌=𝑐𝑘)∏𝑗=1𝑛𝑃(𝑋(𝑗)=𝑥(𝑗)|𝑌=𝑐𝑘),𝑘=1,2,⋯,𝐾

确定实例 𝑥 的类
𝑦=argmax𝑐𝑘𝑃(𝑌=𝑐𝑘)∏𝑗=1𝑛𝑃(𝑋(𝑗)=𝑥(𝑗)|𝑌=𝑐𝑘),𝑘=1,2,⋯,𝐾

SVM(支持向量机)算法

SVM 最早是由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis 在1963年提出,目前的版本(soft margin)是由 Corinna Cortes 和 Vapnik 在1993年提出,并在1995年发表。深度学习(2012)出现之前,SVM 被认为机器学习中近十几年来最成功,表现最好的算法。

支持向量机(SVM)是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机还包括核技巧,这使它成为实质上的费线性分类器。支持向量机的学习策略就是间隔最大化,可形式上化为一个求解凸二次规划的问题,即支持向量机的学习算法就是求解凸二次规划的最优化算法。

线性可分支持向量机(也称为硬间隔支持向量机):当训练数据线性可分时,通过硬间隔最大化,学得一个线性可分支持向量机。
线性支持向量机(也称为软间隔支持向量机),当训练数据近似线性可分时,通过软间隔最大化,学得一个线性支持向量机。
非线性支持向量机:当训练数据线性不可分时,通过使用核技巧以及软间隔最大化,学得一个非线性支持向量机。
支持向量与超平面

在了解svm算法之前,我们首先需要了解一下线性分类器这个概念。比如给定一系列的数据样本,每个样本都有对应的一个标签。为了使得描述更加直观,我们采用二维平面进行解释,高维空间原理也是一样。

这个超平面在二维平面上看到的就是一条直线,在三维空间中就是一个平面…,因此,我们把这个划分数据的决策边界统称为超平面。离这个超平面最近的点就叫做支持向量,点到超平面的距离叫间隔。支持向量机就是要使超平面和支持向量之间的间隔尽可能的大,这样超平面才可以将两类样本准确的分开,而保证间隔尽可能的大就是保证我们的分类器误差尽可能的小,尽可能的健壮。

决策树算法

决策树(decision tree)是功能强大而且相当受欢迎的分类和预测方法,它是一种有监督的学习算法,以树状图为基础,其输出结果为一系列简单实用的规则,故得名决策树。决策树就是一系列的if-then语句,决策树可以用于分类问题,也可以用于回归问题。本文主要讨论分类决策树。

决策树模型基于特征对实例进行分类,它是一个树状结构。决策树的优点是可读性强,分类速度快。学习决策树时,通常采用损失函数最小化原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。

算法

在本文中,训练集用𝐷表示,𝑇表示一棵决策树

假设,给定训练集𝐷={(𝑥1,𝑦1),(𝑥2,𝑦2),⋯,(𝑥𝑁,𝑦𝑁)},其中𝑥𝑖=(𝑥(1)𝑖,𝑥(2)𝑖,⋯,𝑥(𝑛)𝑖)为输入实例,𝑛为特征个数;𝑦𝑖∈{1,2,⋯,𝐾}为类标记,𝑖=1,2,⋯,𝑁;𝑁为样本容量
基尼指数

假设有𝐾个分类,样本点属于第𝑘类的概率为𝑝𝑘=𝑃(𝑌=𝑐𝑘)。则概率分布的基尼指数定义为
𝐺𝑖𝑛𝑖(𝑝)=∑𝑘=1𝐾𝑝𝑘(1−𝑝𝑘)=1−∑𝑘=1𝐾𝑝2𝑘
对于二分类的问题,若样本点属于第一个类的概率是𝑝,则概率分布的基尼指数为
𝐺𝑖𝑛𝑖(𝑝)=2𝑝(1−𝑝)
对于给定的样本集合𝐷,其基尼指数为
𝐺𝑖𝑛𝑖𝑛(𝐷)=1−∑𝑘=1𝐾(|𝐶𝑘||𝐷|)2
这里,𝐶𝑘是𝐷中属于第𝑘类的样本子集,𝐾是类的个数

如果样本集合𝐷根据特征𝐴是否取某一可能值𝑎被分割成𝐷1,𝐷2两部分,即

𝐷1={(𝑥,𝑦)∈𝐷|𝐴(𝑥)=𝑎},𝐷2=𝐷−𝐷1
则在特征𝐴的条件下,集合𝐷的基尼指数定义为
𝐺𝑖𝑛𝑖(𝐷,𝐴)=|𝐷1||𝐷|𝐺𝑖𝑛𝑖(𝐷1)+|𝐷2||𝐷|𝐺𝑖𝑛𝑖(𝐷2)
基尼指数𝐺𝑖𝑛𝑖(𝐷)表示集合𝐷的不确定性,基尼指数𝐺𝑖𝑛𝑖(𝐷,𝐴)表示经𝐴=𝑎分割后集合𝐷的不确定性。基尼指数值越大,样本集合的不确定性也就越大。

CART生成算法

输入:训练数据集𝐷,停止计算的条件;

输出:CART决策树

根据训练数据集,从根节点开始,递归敌对每个结点进行以下的操作,构建二叉决策树:

(1)设结点的训练数据集为𝐷,计算现有特征对该数据集的基尼指数。此时,对每个特征𝐴,对其可能 去的每个值𝑎,根据样本点对𝐴=𝑎测试为“是”或“否”将𝐷分割成𝐷1,𝐷2两部分,利用𝐺𝑖𝑛𝑖(𝐷,𝐴)=|𝐷1||𝐷|𝐺𝑖𝑛𝑖(𝐷1)+|𝐷2||𝐷|𝐺𝑖𝑛𝑖(𝐷2)计算𝐴=𝑎时的基尼指数。
(2)在所有可能的特征𝐴以及它们所有可能的切分点𝑎中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子节点,将训练数据集依特征分配到两个子结点中去。
(3)对两个子结点递归地调用(1),(2),直到满足停止条件。
(4)生成CART决策树

CART剪枝算法

输入:CART算法生成的决策数 𝑇0 ;

输出:最优决策树 𝑇𝛼
(1)设 𝑘=0,𝑇=𝑇0
(2)设 𝛼=+∞
(3)自下而上地对个内部结点 𝑡 计算 𝐶(𝑇𝑡) , |𝑇𝑡| 以及
𝑔(𝑡)=𝐶(𝑡)−𝐶(𝑇𝑡)|𝑇𝑡|−1
𝛼=𝑚𝑖𝑛(𝛼,𝑔(𝑡))
这里, 𝑇𝑡 表示以 𝑡 为根结点的子树, 𝐶(𝑇𝑡) 是对训练数据的预测误差, |𝑇𝑡| 是 𝑇𝑡 的叶节点个数, 𝑔(𝑡) 表示剪枝后整体损失函数减少的程度
(4)对 𝑔(𝑡)=𝛼 的内部结点 𝑡 进行剪枝,并对叶结点 𝑡 以多数表决法觉定其类,得到树 𝑇
(5)设 𝑘=𝑘+1,𝛼𝑘=𝛼,𝑇𝑘=𝑇
(6)如果 𝑇𝑘 不是由根结点及两个叶结点构成的树,则回到步骤(2);否则令 𝑇𝑘=𝑇𝑛
(7)采用交叉验证法在子树序列 𝑇0,𝑇1,⋯,𝑇𝑛 中选取最优子树 𝑇𝛼

KNN(K近邻)算法

是一个有监督学习算法。该方法的主要思想是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。即是给定一个训练数据集,对新的样本属于哪一类,在训练数据集中找到与该样本最邻近的K个样本,这K个样本的多数所属的类,即可认为新样本也属于这一类。

下面是K-Nearest Neighbors算法的可视化。

算法

KNN的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,通常k是不大于20的整数,最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

算法关键:

1、计算样本距离

预测数据与样本数据之间的相关性,我们通过两者间的距离来衡量,距离近的比距离远的相关性强。计算距离的方法有很多种,这里列出较常用的两种。
欧几里得度量( Euclidean Distance )

欧式距离源自N维欧氏空间中两点𝑥1,𝑥2 :
𝑑12=∑𝑘=1𝑛(𝑥1𝑘−𝑥2𝑘)2⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
曼哈顿距离( Manhattan distance )

又被称作出租车几何,用以标明两个点在标准坐标系上的绝对轴距总和
𝑑12=∑𝑘=1𝑛|𝑥1𝑘−𝑥2𝑘|

2、距离排序
在这个计算的过程中,需要将最终的计算进行一个排序的。为下一步操作做好准备。
3、K的选择
很明显,对于这算法,K的选取决定了整个算法分类预测的准确性,可以说是其核心参数。从上面的例子也可以看出来,K=3和K=5得到的决然不同的结果的。
算法步骤

(1)初始化距离
(2)计算待分类样本和每个训练集的距离
(3)排序
(4)选取K个最邻近的数据
(5)计算K个训练样本的每类标签出现的概率
(6)将待分类样本归为出现概率最大的标签,分类结束。

输入:训练数据集

𝑇=(𝑥1,𝑦1),(𝑥2,𝑦2),⋯,(𝑥𝑁,𝑦𝑁)

其中, 𝑥𝑖∈∈ℝ𝑛 为实例的特征向量, 𝑦𝑖∈y=𝑐1,𝑐2,⋯,𝑐𝐾 为实例的类别, 𝑖=1,2,⋯,𝑁 ;实例特征向量 𝑥 ;

输出:实例 𝑥 所属的类 𝑦
(1)根据给定的距离度量,在训练集 𝑇 中找出与 𝑥 最近邻的 𝑘 个点,涵盖这 𝑘 个点的 𝑥 的邻域记作 𝑁𝑘(𝑥) ;

(2)在 𝑁𝑘(𝑥) 中根据分类决策规则(如多数表决)决定 𝑥 的类别 𝑦 :

𝑦=argmax𝑐𝑗∑𝑥𝑖∈𝑁𝑘(𝑥)𝐼(𝑦𝑖=𝑐𝑗),𝑖=1,2,⋯,𝑁;𝑗=1,2,⋯,𝐾

注:

K近邻算法的特殊情况是 𝑘=1 的情形,称为最近邻算法,对于输入的实例点(特征向量) 𝑥 ,最近邻算法将训练数据集中与 𝑥 最近邻点的类作为 𝑥 的类。
K近邻模型的特征空间一般是n维实数向量空间 𝑅𝑛 ,使用的距离是欧式距离。
#Kmeans算法的原理
###k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。k-means算法的处理过程如下:

首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心,即选择K个初始质心;对剩余的每个对象,根据其与各簇
中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛,直到质心不发生明显的变化。
通常,采用平方误差准则,误差的平方和SSE作为全局的目标函数,即最小化每个点到最近质心的欧几里得距离的平方和。此时,簇
的质心就是该簇内所有数据点的平均值。

k中心算法的基本过程是:

k-means算法对于异常值十分敏感,因为具有极大值的对象可能会产生严重扭曲的数据分布。因此我们可以使用k-medoids算法,它是集群中位于最中心的对象,
而不是将集群中的平均值作为参考点。因此,分区的方法仍然可以基于最小化每个对象与其参考点之间的不相似程度之和的原理来进行。这构成了k-medoids方法的基础。

聚类算法可以将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”(cluster),通过这样的划分,每个簇可能对应于一些潜在的概念或类别。
也可以对数据进行数据归约,即在尽可能保证数据完整的前提下,减少数据的量级,以便后续处理。也可以对聚类数据结果直接应用或分析。

K-mediods算法就是基于划分方法的一种聚类算法 ,确切的说,是对K-means算法的一种改进算法。

关于K 中心点算法( K-medoids )正好能解决 k-means 算法中的 “噪声”敏感这个问题。解决过程如下:

我们得介绍下 k-means 算法为什么会对“噪声”敏感。K-means 寻找质点的过程中,对某类簇中所有的样本点维度求平均值,即获得该类簇质点的维度。当聚类的样本点中有“噪声”(离群点)时,在计算类簇质点的过程中会受到噪声异常维度的干扰,造成所得质点和实际质点位置偏差过大,从而使类簇发生“畸变”。例子如下:

类簇 𝐶1中已经包含点 𝐴(1,1)、𝐵(2,2)、𝐶(1,2)、𝐷(2,1) 假设 𝑁(100,100)为异常点,当它纳入类簇𝐶1时,计算质点

𝐶𝑒𝑛𝑡𝑟𝑜𝑖𝑑((1+2+1+2+100)/5,(1+2+2+1+100)/5)=𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑(21,21)
此时可能造成了类簇𝐶1质点的偏移,在下一轮迭代重新划分样本点的时候,将大量不属于类簇 C1 的样本点纳入,因此得到不准确的聚类结果。

为了解决该问题, K 中心点算法( K-medoids )提出了新的质点选取方式,而不是简单像 k-means 算法采用均值计算法。在 K 中心点算法中,每次迭代后的质点都是从聚类的样本点中选取,而选取的标准就是当该样本点成为新的质点后能提高类簇的聚类质量,使得类簇更紧凑。该算法使用绝对误差标准来定义一个类簇的紧凑程度。

K-medoids对噪声和孤立点不敏感,但是事情都具有两面性,这种聚类准确性的提高是牺牲聚类时间来实现的,不难看出K-medoids需要不断的找出每个点到其他所有点的距离的最小值来修正聚类中心,这大大加大了聚类收敛的时间。但K-medoids对于大规模数据聚类就显得力不从心,只能适应较小规模的数值聚类。

K-mediods算法处理过程

首先,随机选择k个对象作为初始的k个簇的代表点,将其余对象按与代表点对象的距离分配到最近的簇;

然后,反复用非代表点来代替代表点,以改进聚类质量。(用一个代价函数来估计聚类质量,该函数度量对象与代表点对象之间的平均相异度。)

目标函数仍然可以采用平方误差准则。

输入:n个对象的数据库,期望得到的k个聚类簇

输出:k个簇,使所有对象与其所属簇中心点的偏差总和最小化

方法:

1.设样本为X{x(1),x(2)…}
2.首先在样本中随机选取k个聚类中心.
3.然后对除开聚类中心外的样本点计算到每个聚类中心的距离.将样本归类到距离样本中心最近的
样本点.这便实现了最初的聚类
4.再对每个类中除类中心的点外的其他样本点计算到其他所有点的距离和的最小值.将该最小值点
作为新的聚类中心便实现了一次聚类优化.
5.重复步骤四,直到两次聚类中心的位置不再变化,这便完成了最终的聚类
   注:步骤4正体现了kmeans和kmediod的核心差异

层次聚类(Hierarchical Clustering)

层次聚类的应用广泛,核心思想是通过对数据集按照层次,把数据分到不同层的簇,从而形成一个树形的聚类结构。层次聚类算法可以揭示数据的分层结构,在树形结构上不同层次进行划分,可以得到不同粒度的聚类结果。按照层次聚类的过程分为自底向上的聚合聚类和自顶向下的分裂聚类。

本实验主要介绍的是自底向上的层次聚类–凝聚法(AGglomerative NESting,AGNES)

AGENS算法原理:AGENS首先将数据集中的每个样本看做一个厨师的聚类簇,然后在不断地找出距离最近的两个聚类簇进行合并。就这样不断地合并直到达到预设的聚类簇的个数。

算法描述

输入:

数据集 𝐷={𝑥1,𝑥2,⋯,𝑥𝑁} ,其中 𝑥𝑖=(𝑥(1)𝑖,𝑥(2)𝑖,⋯,𝑥(𝑛)𝑖)
聚类簇距离度量
聚类簇数量K
输出:簇划分 ={𝐶1,𝐶2,⋯,𝐶𝐾}
算法步骤如下

初始化:将每个样本都作为一个簇
𝐶𝑖={𝑥𝑖},𝑖=1,2,⋯,𝑁

迭代,终止条件为聚类簇的数量为K。迭代过程如下:
计算聚类簇之间的距离,找出距离最近的两个簇,将这两个簇合并。

注:
计算聚类簇之间的距离有如下几种方法:
最小距离:两个簇的样本对之间距离的最小值
最大距离:两个簇的样本对之间距离的最大值
平均距离:两个簇的样本对之间距离的平均值

密度的聚类算法

利用密度思想,将样本中的高密度区域(及样本点分布稠密的区域)划分为簇,将簇看作是样本空间中被稀疏区域(噪声)分隔开的稠密区域。这一算法的主要目的是过滤样本空间中的稀疏区域,获取稠密区域作为簇。基于密度的聚类算法是根据密度而不是距离来计算样本相似度,所以基于密度的聚类算法能够用于挖掘任意形状的簇,并且能够有效过滤掉噪声样本对于聚类结果的影响。DBSCAN是一种著名的密度聚类算法。

DBSCAN采用基于中心的密度定义,样本的密度通过核心对象在𝜀半径内的样本点个数(包括自身)来估计。DBSCAN算法基于邻域来描述样本的密度,输入数据集𝐷={𝑥1,𝑥2,⋯,𝑥𝑁},其中𝑥𝑖=(𝑥(1)𝑖,𝑥(2)𝑖,⋯,𝑥(𝑛)𝑖),参数(𝜀,𝑀𝑖𝑛𝑃𝑡𝑠)刻画邻域的样本分布密度,其中,𝜀表示样本的邻域距离阈值,𝑀𝑖𝑛𝑃𝑡𝑠表示对于某一样本𝑝,其𝜀-邻域中样本个数的阈值。

属性定义

𝜀-邻域:𝑁𝜀(𝑥𝑖)={𝑥𝑗∈𝐷|𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒(𝑥𝑖,𝑥𝑗)≤𝜀},𝑁𝜀(𝑥𝑖)包含了样本集𝐷中与𝑥𝑖距离不大于𝜀的所有的样本。

核心对象(core object):若|𝑁𝜀(𝑥𝑖)|≥𝑀𝑖𝑛𝑃𝑡𝑠,则称𝑥𝑖是一个核心对象,即:若𝑥𝑖的𝜀-邻域至少包含𝑀𝑖𝑛𝑃𝑡𝑠个样本,则𝑥𝑖是一个核心对象

密度直达(directyl density-reachable):若𝑥𝑖是一个核心对象,且𝑥𝑗∈𝑁𝜀(𝑥𝑖),则称𝑥𝑗由𝑥𝑖密度直达

密度可达(density-reachable):对于𝑥𝑖和𝑥𝑗,若存在样本序列(𝑝0,𝑝1,⋯,𝑝𝑚,𝑝𝑚+1),其中𝑝0=𝑥𝑖,𝑝𝑚+1=𝑥𝑗,𝑝𝑠∈𝐷,𝑠=1,2,⋯,𝑚。如果𝑝𝑠+1由𝑝𝑠,𝑠=0,1,2,⋯,𝑚密度直达,则称𝑥𝑗由𝑥𝑖密度可达,记作𝑥𝑖⇝𝑥𝑗
密度相连(density-connected):对于𝑥𝑖和𝑥𝑗,若存在𝑥𝑘,使得𝑥𝑖和𝑥𝑗均有𝑥𝑘密度可达,则称𝑥𝑖和𝑥𝑗密度相连,记作𝑥𝑖∼𝑥𝑗
聚类思想

DBSCAN算法的簇定义:给定邻域参数(𝜀,𝑀𝑖𝑛𝑃𝑡𝑠),一个簇𝐶⊆𝐷是满足下列性质的非空样本子集:

连接性:若𝑥𝑖∈𝐶,𝑥𝑗∈𝐶,则𝑥𝑖∼𝑥𝑗
最大性:若𝑥𝑖∈𝐶,且𝑥𝑖⇝𝑥𝑗,则𝑥𝑗∈𝐶。
一个簇是由密度可达关系导出的最大的密度相连样本集合
DBSCAN算法思想:

若𝑥为核心对象,则𝑥密度可达的所有样本组成的集合记作𝑋={𝑥′∈𝐷|𝑥⇝𝑥′},可以证明𝑋就是满足连接性和最大性的簇。于是DBSCAN算法首先任选数据集中的一个核心对象作为种子,在由此出发确定相应的聚类簇。
算法

DBSCAN算法如下:

输入:数据集 𝐷={𝑥1,𝑥2,⋯,𝑥𝑁} ,其中 𝑥𝑖=(𝑥(1)𝑖,𝑥(2)𝑖,⋯,𝑥(𝑛)𝑖) ,参数 (𝜀,𝑀𝑖𝑛𝑃𝑡𝑠)
输出:簇划分 ={𝐶1,𝐶2,⋯,𝐶𝐾}

算法步骤:

初始化核心对象集合为空集: Ω=𝜙
寻找核心对象:遍历所有样本点 𝑥𝑖,𝑖=1,2,⋯,𝑁 ,计算 𝑁𝜀(𝑥𝑖) ,如果 |𝑁𝜀(𝑥𝑖)|≥𝑀𝑖𝑛𝑃𝑡𝑠 ,则 Ω=Ω⋃{𝑥𝑖}
迭代:以任一未访问的核心对象为出发点,找出有其密度可达的样本生成的聚类簇,直到所有核心对象都被访问为止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值