机器学习十大算法简介

2022-11-16 18:04:27 浏览数 (2)

具体可见:http://xxxzhi.github.io/2014/12/16/machine-learning-10-biggest/

K-Means算法

K-Means算法是一种聚类算法,把n个对象根据他们的属性分成k个分类,并且使这K个分割的内部相似度最大,而分割之间的相似度最小。 其主要的算法流程如下: 1. 从n个对象中任意选K个对象,作为每个聚类的中心 2. 根据K个中心,按照每个对象离K个中心的最小距离(离那个中心近,就划分到哪个中心),将n个对象划分成K个分割(聚类) 3. 然后计a ge su a分割的中心(分割中的所有对象的均值),将这些中心作为聚类新的中心。 4. 计算标准测度函数,当计算函数满足一定的条件,如收敛了,则程序结束,否则返回第2步。

它是一种基于样本间相似度的聚类算法,是一种非监督算法。是一种较典型的逐点修改迭代的动态聚类算法。

优点

  • K-Means算法简单
  • 对于处理大数据时,该算法是相对可伸缩和高效率的。其算法是O(nkt)的,依赖于t
  • 当样本间每个簇相差较大时,分来效果较好。

缺点

  • K-means要求用户事先得给出要生成的簇的数目K
  • 对初值比较敏感
  • 不适合发现大小差别很大的簇
  • 对于噪声和孤立点敏感

适用情况

这个适用,基本也在优缺点里面讲述了。

朴素贝叶斯算法

朴素贝叶斯算法是基于一个简单假设:在给定的目标值时,各个属性是相互独立的。贝叶斯是依据贝叶斯定理来的。计算极大后验概率。其具体原理如下:

Vmap=argmaxP(hi|a0,a1,...,an)=argmaxP(a0,a1,...,an|hi)∗P(hi)P(a0,a1,...,an)=argmaxP(a0,a1,...an|hi)∗P(hi)=argmax(∏j=0nP(aj|hi))∗P(hi)

其中 h 是目标类别。 a 是属性 原理就是上面这个式子,基于给定目标值时,各个属性相互独立,通过将后验概率转换成先验概率。其中 P(hi) 与 P(aj|hi) 可有训练数据的频率估算出。

优点

  • 实用性高
  • 模型简单

缺点

  • 独立性假设
  • 有限的数据集不可能具有完备的数据,当某个属性值出现的概率很小时,估计变得很差

适用范围

适用于属性之间独立性较强的问题

PageRank

PageRank是来源与google搜索最初的算法模型。PageRank的核心思想是通过一些方法计算当前网络的积分,通过积分来给每个网页排序。每个网络的PageRank值总是递归地由其他网页的PageRank值决定的。

它由两个假设: – 数量:每个网页接受其他网页页面指向的入页数量越多,该网页的pageRank值越高 – 质量:质量高的网页通过链接向其他网页传递更多的权重。

它通过马尔科夫链来计算PageRank值,有个公式如下:

Pi=∑P(j)O(j)

其中 i,j∈E , O(j) 表示节点j出页的数量.

另外它也需要解决下面三个问题: 1. 只有入边没有出边的节点 2. 不是非周期性 3. 不是不可约的

优点

  • 是一个与主题无关的算法
  • 所有的计算是在离线情况下做的
  • 响应时间快

缺点

  • 忽略了主题相关性
  • 旧的页面等级会比新的页面高,旧的页面会比新的页面具有更多的上游页面

应用场景

  • 排序(论文)
  • 网络爬虫(重要性的页面数量抓取多一点)
  • 关键词与句子的抽取

KNN

KNN即最近邻分类器,它是通过与样本数据中进行比较,离哪个样本类近就是哪个。 KNN算法步骤如下: 1. 计算,计算节点K个最近的邻居。通过计算得出 2. 分类,根据K个邻居的主要类别来对测试对象进行分类

KNN使用查找K邻居的算法是KD树

优点

  • 算法简单
  • 重新训练代价低
  • 算法适用于样本较大的类域分类
  • 对类域交叉较多的样本,KNN相对比较适用

缺点

  • KNN可以说是一种慵懒的算法。
  • 样本类别数量不平衡时,效果可能不佳
  • 类别评分不规范,不像概率评分
  • 计算量大

适用范围

  • 海量数据分类可能适合,基本就是跟优缺点差不多

Apriori算法

Apriori算法是一种数据挖掘算法。Apriori算法是一种最有影响力的挖掘布尔关系频繁项集的算法。其核心是基于两阶段频繁项集思想的递推算法。这里的频繁项集是指支持度大于最小支持度的项集。其算法步骤如下: 1. 根据支持度找出所有频繁项集(频度) 2. 根据置信度找出强关联规则(强度)

优点

  • 使用Apriori性质生成候选集的办法,大大地压缩了候选集,取得很好的性能

缺点

  • 产生大量的频繁项集
  • 频繁地查询事物数据库

适用范围

Apriori(先验的,推测的)算法应用广泛,可用于消费市场价格分析,猜测顾客的消费习惯;网络安全领域中的入侵检测技术;可用在用于高校管理中,根据挖掘规则可以有效地辅助学校管理部门有针对性的开展贫困助学工作;也可用在移动通信领域中,指导运营商的业务运营和辅助业务提供商的决策制定。

Adaboost

Adaboost是一种集成学习算法。boosting跟bagging都是集成学习的一种。Adaboost其实也是将多个若分类器,按照权重的方式组合起来,构成一个强分类器。Adaboost将不同的训练集,训练同一个模型,得到若干个若分类器,然后再将这些若分类器组合起来,构成一个强分类器。理论上证明,如果这些若分类器的效果比随机性要好,那么当若分类器的数量趋向于无穷个时,强分类器的错误率将趋于0。

其抽象算法描述如下:

  1. AdaBoost算法中不同的训练集是通过调整每个样本对应的权重实现的。最开始的时候,每个样本对应的权重是相同的,在此样本分布下训练出一个基本分类器 hi(x) (i=1)。
  2. 对于 hi(x) 错分的样本,则增加其对应样本的权重;而对于正确分类的样本,则降低其权重。这样可以使得错分的样本突出出来,并得到一个新的样本分布。同时,根据错分的情况赋予 hi(x) 一个权重,表示该基本分类器的重要程度,错分得越少权重越大。
  3. 在新的样本分布下,再次对基本分类器进行训练,得到基本分类器 hi 1(x) 及其权重。
  4. i=i 1 ,如果i不超过T,则返回第2步。超过则经过T次这样的循环,就得到了T个基本分类器,以及T个对应的权重。最后把这T个基本分类器按一定权重累加起来,就得到了最终所期望的强分类器。结束

优点

  • 能够将若分类器的性能增加,是一个精度很高的分类器
  • 提供的是一个框架,可以使用不同的若分类器算法
  • 易于执行

缺点

  • 受若分类器选择影响
  • 易受噪声数据的影响

适用情况

  • 在人脸检测,目标检测都取得了不错的效果。

C4.5算法

C4.5是改进于ID3算法的,所以也是一种分类决策树算法。主要的算法流程是 1. 建立一个节点N 2. 通过一些判断,选择样本集中,能最优地分开样本的属性(信息增益比),按照每个属性值对树进行分支。每个分支是一种属性值。 3. 对每个属性值按照类似的方式进行分支,直到某个分支都是同一种类别,或者其他类别的数量少于阀值。将这个分支集合中数量最多的类别作为这个分支的分类。这个节点不再往下扩展。 4. 在简历树的过程中和建立树结束后,可以对树进行剪纸

上面是决策树算法的通用算法。

优点

  • 结构相对简单
  • 相对于ID3来讲,能够处理非离散问题

缺点

  • 属性种类多的总是会被优先选择作为节点属性。
  • 忽略了属性集间的相关性
  • 构造的树不够小,存在过拟合问题
  • 一般情况下,C4.5 只适合能够驻留于内存的数据集

适用范围

主要是在数据挖掘上面进行一些适用。不是很适合直接在很大数据上面的适用。擅长处理非数值性问题

CART算法

分类与回归树算法,其实是一个二叉分类树。算法本身跟决策树是差不多的,但是算法在每个节点分叉的时候,只有两个分支。它使用的进行属性选择的方式是用GINI指数。

优点

  • 相对于c4.5来讲,它能够避免属性值种类多的节点被优先选择的问题
  • 计算量不大
  • 能够处理连续字段
  • 能够清晰地显示哪些字段比较重要
  • 可以生产可以理解的规则
  • 灵活

缺点

  • 当类别太多的时候,错误率可能会增加地比较快
  • 有时间顺序的数据,需要很多预处理工作
  • 对连续性的字段比较难预测

适用范围

目前有人使用分类与回归树进行信誉评估,以及故障检测方面。节点属性类别太多,可能不是很适合。

EM算法

极大似然估计算法:对于已经出现的现象,假定这个现象或事件出现的概率是最大的。依据于此,来通过迭代地计算概率期望,最大化概率。也就是迭代地进行E步和M步。直到算法收敛。

Exception:根据参数{ θi } 得到每个观察数据的期望 Maximization: 根据期望,重新计算参数,使得似然函数最大。

优点

  • 能够根据已知现象,计算参数。

缺点

  • 依赖于初始参数的设置
  • EM算法收敛速度较慢

适用情况

  • 高斯模型参数的估计
  • 隐马尔科夫模型参数的估计
  • 基于概率模型的聚类

SVM算法

支持向量机分类器,其主要思想是通过在样本数据中,找到一些支持向量,让这些支持向量构造一个超平面,这个超平面到两个类别的支持向量间的距离最小。用这个超平面来划分处于超平面两边的类别。其中,它可以通过构造高维空间来对非线性数据进行分类。它主要下面几种核函数:

  • 线性
  • 径向基(高斯)
  • 多项式
  • 傅里叶

优点

  • 能够对小样本分类效果很好
  • 能够处理非线性分类
  • 能够处理高维问题
  • 避免局部最小点
  • 泛化能力较好

缺点

  • 对于大数据,直接分类效果可能不加,速度慢
  • 对于非线性的,处理效果不够好,没有通用的解决办法
  • 对于缺失数据敏感

耐心勿急,事了拂衣去,深藏身与名

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/234687.html原文链接:https://javaforall.cn

0 人点赞