常用机器学习算法简单介绍

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、分类

1.1 K-最近邻算法(K-NN)

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

伪代码:

对未知类别属性的数据集中的每个点依次执行以下操作:

(1)计算已知类别数据集中的点与当前点之间的距离;

(2)按照距离递增依次排序;

(3)选取与当前点距离最小的k个点;

(4)确定前k个点所在类别的出现频率;

(5)返回前k个点出现频率最高的类别作为当前点的预测分类。

如图,平面有3个样本集将空间分为三类,输入新的数据点,使用欧拉距离来计算当前点与已知类别数据集中的点之间的距离,并选择K=5作为参数。在距离最近的5个特征点中,有4个点属于类别w1,1个点属于类别w2,因此分类器将输入点划分至w1类。

1.2 决策树

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部节点和叶节点,内部节点表示一个特征或属性,叶节点表示一个类。分类的时候,从根节点开始,对实例的某一个特征进行测试,根据测试结果,将实例分配到其子结点;此时,每一个子结点对应着该特征的一个取值。如此递归向下移动,直至达到叶结点,最后将实例分配到叶结点的类中。如下图所示流程图就是一个决策树模型。

在构造决策树时,需要确定当前数据集上哪个特征在划分数据分类时起到决定性的作用。为了找到决定性的特征,划分出最后的结果,必须评估每个特征。完成测试之后,原始数据集就被划分为几个数据子集。这些数据子集会分布在第一个决策点的所有分支上。如果某个分支下的数据属于同一类型,则当前的数据子集已经正确地划分数据分类,无需进一步对数据集进行分割。如果数据子集内的数据不属于同一类型,则需要重复划分数据子集的过程。如何划分数据子集的算法和划分原始数据集的方法相同,直到所有具有相同类型的数据均在一个数据子集内。

创建分支函数的伪代码:

检测数据集中的每个子项是否属于同一分类:

If so return 类标签;

Else

寻找划分数据集的最好特征

划分数据集

创建分支节点

for 每个划分的子集

调用创建分支函数并增加返回结果到分支节点中

return 分支节点

1.3 朴素贝叶斯

数学知识:P(A|B)表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发

生下事件A的条件概率。其基本求解公式为:

贝叶斯定理:

朴素贝叶斯分类原理:

对于给定的待分类项,求解在此项出现的条件下,该项来自各个类别的概率,将此项

划分为求解概率最大的那个类别。

例如,假设我们有一个数据集,它由两类数据组成,c1与c2。给定某个由(x,y)表示的

数据点,根据贝叶斯准则计算p(c1|x,y)与p(c2|x,y)。

若p(c1|x,y) > p(c2|x,y) ,那么该数据点属于类别c1。

若p(c1|x,y) < p(c2|x,y) ,那么该数据点属于类别c2。

1.4 基于Logistic 回归和Sigmoid函数的分类

主要思想:根据现有数据对分类边界线建立回归公式,依次进行分类。

Sigmoid函数计算公式如下:

曲线图如下图所示:

当x为0时,Sigmoid函数值为0.5,随着x的增大,对应的Sigmoid函数值将逼近于1;而随着x的增大,对应的Sigmoid函数值将逼近于0,看起来很像一个阶跃函数。

因此,为了实现Logistic 回归分类器,我们可以在每个特征上都乘一个回归系数,如下,然后把所有值相加,如下:

将总和z代入Sigmoid函数中,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分为1类,小于0.5即被归入0类。

确定分类器的函数形式之后,问题变为:如何确定最佳回归系数。为了找到最佳回归

系数,需要用到最优化理论的一些知识:梯度上升法or 梯度下降法,此处不做介绍。

1.5 支持向量机(Support Vector Machines, SVM)

SVM是一种训练机器学习的算法,可以用于解决分类和回归问题,同时还使用了一种称之为kernel trick(支持向量机的核函数)的技术进行数据的转换,然后再根据这些转换信息,在可能的输出之中找到一个最优的边界(超平面)。简单来说,就是做一些非常复杂的数据转换工作,然后根据预定义的标签或者输出进而计算出如何分离用户的数据。

算法原理:如图,上述将数据集分割开来的直线称为分平面。在上图中,由于数据点

都在二维平面上,所以此时分隔超平面就只是一条直线。但是,若果所给数据点是三维的,那么此时用来分割数据的就是一个平面。若为N维,则为N-1维的超平面,也就是分类的

决策边界。

如果数据点离决策边界越远,那么其最后的预测结果也就越可信。我们希望找到离分

割平面最近的点,确保它们离分割面的距离尽可能远。这里点到分割面的距离被称为间隔。支持向量就是离分割超平面最近的那些点。接下来要试着最大化支持向量机到分割面的距离,需要找到此问题的优化求解方法。此处不做介绍。

注意:SVM本身是一个二类分类器,对多类问题应用SVM需对代码做修改。

当直线不能将数据点分开时,即非线性可分,如下图所示,可以使用一种称为核函数

的工具将数据转换为易于分类器理解的形式。核函数作用是实现从一个特征空间到另一个特

相关文档
最新文档