机器学习部分算法

分类算法

感知机利用误差最小的原则求得分离超平面,但是这样的平面有无数多个;SVM利用最大间隔求分离超平面,这样的解释唯一的。

2 K-Means

原始数据集合为(x1,x2,...,xN),并且每个xid维的向量,K-means聚类的目的是将原始数据分成K类S={S1,S2,...,SK},使下式取得最小值:

J=j=1KxjSiXjμi2=n=1Nk=1KrnkXjμi2
这里μi表示分类Si的平均值,其中rnk在数据xn被分到k类时为1,否则为0.
具体算法步骤如下:

  1. D中随机选取K个元素,分别作为K个簇的中心,即先固定μk
    • 计算其他元素到这K个簇的中心差异,并将其划分为差异度最低的簇,即已知μkrnk
    • 根据聚类结果,分别重新计算K个簇的中心,即利用μk更新rnk
    • 重复步骤2,直到聚类结果不再改变。
    • 4 Apriori

      5 EM算法

      6 PageRank

      7AdaBoost

      大多数提升方法是通过改变训练数据的概率分布(训练数据的权值分布)针对不同的训练数据分布调用弱分类学习算法学习一系列弱分类
      器。这样有两个问题:一是,在每一轮训练中如何改变数据的权值或概率分布;二是如何将弱分类器组合成一个强分类器。对第一个问题
      AdaBoost的做法是,提高前一轮被弱分类器错误分类的样本权值,降低被正确分类样本的权值,以提升那些被错误分类的数据被后一轮弱分类
      器关注的程度。对于第二个问题,AdaBoot采取加权多数表决的方式,对于误差率小的弱分类器加大权重,对于误分类率大的弱分类器减小
      其权重。
      AdaBoost算法
      输入:训练数据集T={(x1,y1),(x1,y1),,(xN,yN)}其中xiXRN,yi{1,+1},

      输出:最终分类器G(x)

      1. 初始化训练数据的权值分布D1=(w11,...,w1i,...,w1N),w1i=1N,i=1,2,,N
      2. m=1,2,...,M
        1)使用具有权值分布Dm的训练数据集学习,得到基本分类器
        Gm(x):X{1,+1}

        2)计算Gm(x)在训练数据集上的分类误差率
        em=P(Gm(xi)yi)=i=1NwmiI(Gm(xi)yi)

        3)计算Gm(x)的系数
        αm=12ln1emem

        4)更新训练数据集的权重
        Dm+1=(wm+1,1,...,wm+1,i,...,wm+1,N)wm+1,i=wmiZmexp(αmyiGm(xi))

        其中,Zm是规范化因子。
        Zm=i=1Nwmiexp(αmyiGm(xi))
      3. 构建基本分类器的线性组合

        f(x)=m=1MαmGm(x)
        最终分类器
        G(x)=sign(f(x))=sign(m=1MαmGm(x))

        注解:f(x)的符号说明了分类的结果,绝对值的大小说明置信度。

      8 KNN

      KNN的三个问题

      距离度量通常使用欧式距离;
      K值选择 K较小时,学习的近似误差减小,对邻近实例点较敏感,如果邻近实例点是噪声那么预测就会出错,K值减小那么模型就会变复杂,容易产生过拟合;如果K值较大,减少学习的估计误差,但是较远的不相关的实例点也可能对预测产生影响,K增大模型变简单忽略了实例中的大量有用信息。
      分类决策规则多数表决

      kd树

      实现k近邻的最简单的方法是线性扫描,这时计算输入实例与每一个训练实例的距离,当训练数据集大时,这种方法不可行,所以通过使用kd树来减少计算距离的次数,提高k近邻搜索的效率。
      构造平衡kd树算法
      输入:k维空间数据集T={x1,x2,...,xN},其中,xi=(x(1)i,x(2)i,...,x(k)i)T,i=1,2,...,N;
      输出:kd树。

      1. 构造根节点,根节点对应包含Tk维空间的超矩形区域。选择x(1)为坐标轴,以T中所有实例的x(1)坐标的中位数为切分点,将根节点对应的超矩形分为两个子区域,切分面与坐标x(1)轴垂直。落在切分面上的实例点位根节点。
      2. 重复:对深度为j的结点,选择x(l)为切分的坐标轴,l=j(modk)+1,并以该节点的区域中所有实例的x(l)的中位数为切分点,将该节点对应的超矩形区域切分为两个子区域,落在切分面上的实例点保存为该节点。
      3. 直到两个区域没有实例存在时停止,从而形成kd树的区域划分。

      用kd树的最近邻搜索
      输入:已构造的kd树,目标点x;
      输出:x的最近邻。

      1. 在kd树中找到包含目标点x的叶结点。以此叶节点为“当前最近点”。
      2. 递归地向上回退,在每个结点进行一下操作:
        1)如果该结点保存的实例点比当前最近点距离里最近目标点更近,则以该实例点为“当前最近点”
        2)当前最近点一定存在于该结点一个子节点对应的区域,检查该子节点的父节点的另一个子节点对应的区域是否有更近的点。具体地,检查另一个节点对应的区域是否与目标点为球心、以目标点与“当前最近点”间的距离为半径的超球体相交。如果相交,移动到另一个子节点,接着递归搜索;如果不相交,向上回退。
      3. 当回退到根节点时,搜索结束。

      对于随机分布的实例点,kd树搜索的平均计算复杂度为O(logN).

      9 贝叶斯分类器

      分类算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值