机器学习常见算法总结(二)

来源:互联网 发布:idc机房域名管理系统 编辑:程序博客网 时间:2024/05/10 22:08

5. Adaboost

adaboost算法通俗地讲,就是在一个数据集上的随机数据使用一个分类训练多次,每次对分类正确的数据赋权值较小,同时增大分类错误的数据的权重,如此反复迭代,直到达到所需的要求。Adaboost算法步骤如下:

  • 步骤1. 首先初始化训练数据的权值分布,每一个训练样本开始时被赋予相同的权重:1/N。这里写图片描述

  • 步骤2. 进行多轮迭代,用m=1,2,3,…,M表示迭代的第多少轮
    a. 使用权值分布Dm的训练数据集学习,得到基本分类器
    这里写图片描述
    b. 计算Gm(x)在训练数据集上的分类误差率
    这里写图片描述
    由上述公式可得:Gm(x)在训练数据集上的误分率em=被Gm(x)误分类样本的权值之和。
    c. 计算Gm(x)系数,am表示Gm(x)在最终分类器中的重要程度
    这里写图片描述
    当em<=1/2时am>=0,且am随着em的减小而增大,这意味着误分率越小的基本分类器在最终的分类器中作用越大。
    d. 更新训练数据集的权值分布,得到新的Dm分布,使得误分类样本权值增加,正确分类样本权值减小,这样,adaboost方法聚焦于那些较难分类的样本上。
    这里写图片描述
    这里写图片描述
    其中,Zm为规范化因子,使得Dm+1成为一个概率分布。

  • 步骤3. 组合m个弱分类器这里写图片描述,从而得到级联强分类器
    这里写图片描述

  • 性能评价
    优点:简单,泛化错误率低,可以将不同的分类算法作为弱分类器,充分考虑每个分类器的权重。
    缺点:弱分类器数目不好设定,可以使用交叉验证确定;数据不平衡导致分类精度下降;训练比较耗时,每次重新选择当前分类器最好切分点。
    应用领域:模式识别、计算机视觉领域、分类问题。

6. SVM

SVM是基于结构风险(经验风险和置信风险)最小化的机器学习算法,支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力[14](或称泛化能力)。

  • 选择最大间隔分类器的原因
    几何间隔与样本的误分次数间存在关系:这里写图片描述
    其中的分母就是样本到分类间隔距离,分子中的R是所有样本中的最长向量值。
  • 算法流程
  • 原始目标函数:这里写图片描述
  • 引入拉格朗日系数α:这里写图片描述
  • 将上述的公式采用对偶优化理论可以 转换为下面的目标函数(约束条件来自于上述的公式对w和b求导):
    这里写图片描述
  • 而这个函数可以用常用的优化方法求得α,进而求得w和b。
  • 按照道理,svm简单理论应该到此结束。不过还是要补充一点,即在预测时有:
    这里写图片描述
  • 关于松弛变量的引入,因此原始的目标优化公式为:
    这里写图片描述
    此时对应的对偶优化公式为:
    这里写图片描述
    与前面的相比只是α多了个上界。

  • 性能评价及应用领域

  • 优点:可用于线性/非线性分类,也可以用于回归;低泛化误差;容易解释;计算复杂度较低;无局部极小值问题。(相对于神经网络等算法);解决小样本下机器学习问题;可以很好的处理高维数据集。
  • 缺点:对参数和核函数的选择比较敏感;原始的SVM只比较擅长处理二分类问题;对缺失数据敏感;对于核函数的高维映射解释力不强,尤其是径向基函数。
  • 应用:文本分类、图像识别、主要二分类领域

7. K-Means

K-means算法是聚类分析中使用最广泛的算法之一。它把n个对象根据他们的属性分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。

Kmeans的计算过程大概表示如下:
- step1. 随机选择k个聚类中心. 最终的类别个数<= k
- step2. 计算每个样本到各个中心的距离
- step3.每个样本聚类到离它最近的中心
- step4.重新计算每个新类的中心
- step5.重复以上步骤直到满足收敛要求。(通常就是中心点不再改变或满足一定迭代次数).
伪代码如下:
这里写图片描述

时间复杂度:O(tKmn),其中,t为迭代次数,K为簇的数目,m为记录数,n为维数
空间复杂度:O((m+K)n),其中,K为簇的数目,m为记录数,n为维数

这里在看一下,K-Means的一些问题:
1. k的选择
k是用户自己定义的初始化参数,一般表示数据的一种分布方式。
2. 距离度量(看KNN)
3. 性能评价:
优点:本算法确定的K 个划分到达平方误差最小。当聚类是密集的,且类与类之间区别明显时,效果较好。对于处理大数据集,这个算法是相对可伸缩和高效的,计算的复杂度为O(NKt),其中N是数据对象的数目,t是迭代的次数。一般来说,K远远小于N,t远远小于N 。

缺点:聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适;Kmeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(可以使用Kmeans++算法来解决)

0 0