机器学习算法

(一):决策树

(一):决策树
1:定义
      书中的概念理解起来就是已知多组对象的属性和对象所属的分类,我们通过建立决策树来预测某一新加入的组对象所属的分类。决策树的建立是通过对已有数据的训练,叶子节点是对象所属的分类,非叶子节点包含属性的测试条件,每个分叉路径代表相应的属性取值。
      下图就是一个典型的决策树的例子:
2:如何生成决策树
(1):ID3
      因为一个对象有多个属性,既然决策树的每个非叶子节点都是一个属性,那么选取什么样的属性作为根节点。
      首先解决哪种生成树是最优的。书中给出了一个奥坎姆剃刀假设:优先选择拟合数据的最简单的假设。但并没有证明,貌似这是一个比较直观的原则,没有证明。
      我的理解是如果假设或者模型过于复杂,那么其限制条件更多,得到的结果更趋向于特殊化,则对已有数据的拟合是比较的高的,但对于预测的数据则是比较低的。
      接下来就是如何使决策树更简单,选取什么样的属性作为根节点。
      ID3算法通过自顶向下构造决策树来进行学习。构造过程是从“哪一个属性将在树的根节点被测试?”这个问题开始。分类能力最好的属性被选为根节点。然后为根节点属性的每个可能的值产生一个分支,然后递归地进行这一过程。如图
      ID3算法提出了“信息增益”的统计属性来衡量给定的属性区分训练样例的能力。
      先学习一下“熵”。ID3算法中利用熵来刻画属性划分后的不纯性的程度。不纯性的程度越低,则树越倾斜。
     熵
      
      其中p(i|t)表示给定节点t中属于类i的比例
      举一个例子:
      假设S是一个关于布尔概念的有14个样例的集合,它包括9个正例和5个反例(我们采用记号[9+,5-]来概括这样的数据样例),那么S相对于这个布尔样例的熵为:

Entropy([9+,5-])=-(9/14)log2(9/14)-(5/14)log2(5/14)=0.940。 

     信息增益:
            
其中Sv是S中属性A的值为v的子集
      举一个例子:
      假定S是一套有关天气的训练样例,描述它的属性包括可能是具有Weak和Strong两个值的Wind。像前面一样,假定S包含 14 个样例, [9+ 5-] 。在这 14 个样例中,假定正例中的 6 个和反例中的 2 个有Wind =Weak 其他的有Wind=Strong。由于按照属性Wind分类 14 个样例得到的信息增益可以计算如下:

       有了信息增益这个概念之后,在生成决策树的过程中不断迭代选择剩余属性中信息增益最大的属性作为子子树的根节点。
 
(2):C4.5
    C4.5是对 ID3的改进
     1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
     2) 在树构造过程中进行剪枝;
     3) 能够完成对连续属性的离散化处理;
     4) 能够对不完整数据进行处理。
      由于信息增益度量存在一个内在的偏置,偏袒具有较多值的属性。在C4.5中提出一个信息增益比率。
先介绍分裂信息:
                     
其中S1到Sc是c个值的属性A分割S而形成的c个样例子集。
      增益比率
                  

(二):贝叶斯分类器

  

  贝叶斯定理:

                    P(Y | X ) = P(X | Y ) P ( Y ) P ( X )

有人说,概率论只不过是把常识用数学公式表达了出来。上面的式子在概率课上大家都推导过,很简单,但是在所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,而且,贝叶斯是机器学习的核心方法之一。

         回到贝叶斯定理,假设X表示属性集,Y表示类变量,P(Y|X)表示在属性集已知的情况下属于某一类的概率。P(Y|X)被称为Y的后验概率,P(Y)称为Y的先验概率。在比较不同的Y值的后验概率时,P(X)总是常数,因此可以忽略。P(Y)可以通过计算训练集中属于每个类的训练记录所占的比例很容易估计。对P(X|Y)的估计,有朴素贝叶斯和贝叶斯信念网络。

 

1):朴素贝叶斯

         假设属性之间条件独立。设XYZ表示三个随机变量的集合,给定Z,X条件独立于Y,有P(X|Y,Z)=P(X|Z),那么

         

有了上式后将贝叶斯公式改写成

                

这样对于给定的Y只要计算每一个Xi的条件概率

 

    (2):贝叶斯信念网络

    朴素贝叶斯的条件独立假设过于严格,贝叶斯信念网络则不需要所有属性都条件独立

主要有两个组成成分:

    1: 一个有向无环图,表示变量之间的依赖关系

    2:一个概率表,把各节点和它的直接父节点连接起来

              

性质:如果一个节点的父母节点已知,则它条件独立于所有非后代的节点。

关联的概率表

(1):如果没有父母节点,则表中只包含先验概率P(X);

(2):如果只有一个父母节点,则表中包含条件概率P(X|Y);

(3):如果有多个父母节点,则表中包含条件概率P(X|Y1,Y2,…,Yk)


(三):支持向量机(SVM)

1:最大边缘超平面

图显示了一个数据集,方块和圆圈分别属于不同的类

(1):数据集线性可分:找到一个超平面,使得所以方块位于超平面的一侧,而圆圈位于另一侧

(2):最大边缘超平面:图中B1就是最大边缘超平面。bi1平移一个与决策边界平行的超平面,直到触到最近的一个方块为止。bi1和bi2之间的间距称为分类器的边缘。B1的边缘最大,所以是最大边缘超平面。

                

 

2:线性支持向量机

2.1:可分情况

    考虑一个包含N个训练样本的二元分类问题。每个样本表示为(xi,yi)(i=1,2…N),yi属于{-1,1},则一个线性分类器的决策边界可以表示成:                  

                   

用下面的方式预测样本z的类编号

                  

SVM的训练阶段从训练数据估计w和b,w和b需要满足

                  

等价于:

                 

同时满足决策边界的边缘最大,既:

                               

SVM的学习任务被形式化描述为:

                 

 

2.2:不可分的情况

如图:

                 

B1虽然出错,但是仍优于B2,不过需要引进软边缘,如下:

                      

则目标函数修改为:

                     

 

3:非线性支持向量

正在学习中。。。。。。

3:非线性支持向量机
(1):对于非线性的问题的,找一个映射 ϕ(.) ,然后把原来的数据映射到新空间中,再做线性 SVM 即可.但这样带来的将是维灾难,所以如果能够在原来的空间上进行计算则对于解决问题将是极大帮助的。
      核函数就是这样的方法。例如向量 x1=(η1,η2)T 和向量 x2=(ξ1,ξ2)T ,通过 (x1,x2+1)2=2η1ξ1+η21ξ21+2η2ξ2+η22ξ22+2η1η2ξ1ξ2+1 得到的结果和利用高维转化的结果很接近。那么在通过简单的转化就行。这里的 (x1,x2+1)2 就是我们要寻找的核函数。得到核函数之后解决方法就和前面线性的方法一致。这里就不做介绍了。

      对于核函数的选取,有一些常用的核函数:

  • 多项式核 k(x1,x2)=(x1,x2+R)d
  • 高斯核 κ(x1,x2)=exp(x1x222σ2)


    (五):K均值

    1:聚类领域的K均值
           K均值算法不难,直接给出算法的具体步骤:
    (1):选择K个点作为初始质心;
    (2):将每个点指派到最近的质心,形成K个簇;
    (3):重新计算每个簇的质心;
    (4):重复(2)、(3)直到质心不发生变化
    2:初始质心的选择
           这个过程通常是针对具体的问题有一些启发式的选取方法,或者大多数情况下采用随机选取的办法。因为前面说过 k-means 并不能保证全局最优,而是否能收敛到全局最优解其实和初值的选取有很大的关系,所以有时候我们会多次选取初值跑 k-means ,并取其中最好的一次结果。
    3:指派到最近的质心
           通常使用欧几里得距离就可以了,因为算法需要重复计算每个点与每个质心的相似度
    4:目标函数
           使用误差的平方和来作为度量聚类质量的目标函数(SSE)。
           SSE =  SSE=ki=1xCidist(ci,x)2

    (六):最近邻分类器(KNN)


    1:积极和消极的学习方法
    (1):积极的学习方法。这种学习方法在收到训练数据之后就开始学习从输入属性到类编号的映射模型
    (2):消极的学习方法。推迟对训练数据的建模,直到需要进行分类测试样例的时候再进行。
    2:原理
          个人觉得这个方法有点“近朱者赤近墨者黑”的思想。对你周围的朋友进行考察,不断变化这个朋友圈的范围。如果这个圈内好的朋友对于坏的朋友,那么你就被贴上坏的标签。
    3:算法
    (1):令K为近邻的数目,D是训练样例的集合
    (2):为每个测试样例选择距离其最近的K个训练样例集合
    (3):计算得到的集合,判断该测试样例所属类别
    (4):循环(2)、(3)

    (七):高斯混合模型GMM

    1:问题介绍
            有 N个数据 X ={x1,x2,…,xn},每个数据时 D维的,根据 K个高斯分布(每个被称作 Component)将数据聚成 K个类。
            由中心极限定理知大量的独立随机变量之和具有近似于正态的分布,所以我们认为每个 xi独立同正态分布,又 X D维的,则多元高斯模型:
         
     
    2:引入隐藏随机变量 Z
            思想:我们要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:首先随机地在这 个 Component 之中选一个,每个 Component 被选中的概率实际上就是它的系数 ,选中了 Component 之后,再单独地考虑从这个 Component 的分布中选取一个点就可以了──这里已经回到了普通的 Gaussian 分布,转化为了已知的问题。
    实际上就是 Z 一个K维的二元随机变量,表示每一个点属于哪一个Component的。
    1): Z 是一个 K维的二元随机变量满足 1-of- K representation
            Z 中只有一个 zk1,其余均为 0,例如 K=6z=1,于是 Z  表示为( 0,0,1,0,0,0)T
           z k { 0 , 1 }并且 k z k = 1 并令 p(z k = 1 ) = π k π k 满足: 0π k 1 并且  K k=1 π k = 1
          那么 p(Z)为:
           p(Z ) = k=1 K π z k k
     
    2)我们认定在给定 zkX的条件概率为高斯分布,则有
          p(X | z k = 1 ) = N ( x | μ k , Σ k )那么得到 xz的联合分布,在通过边缘分布得到
          p(X ) = Z p ( Z ) p ( X | Z )
                   = K k=1 π k N ( x | μ k , Σ k )
         这样我们就可以用 X , Z 的联合分布来代替 p(X )
     
    3)估计数据X由每个 Component 生成的概率(并不是每个 Component 被选中的概率):即Z在给定X下的条件概率,利用贝叶斯公式得到
             
     
    3:参数估计
            因为我们不知道参数,所以就是进行参数估计,一般采取数理统计中的极大似然函数去估计参数
    通常取对数的似然估计函数
     
    4:应用 EM
    由于上式对数函数里面又有加和,我们没法直接用求导解方程的办法直接求得最大值。所以利用 EM思想来做
    1):初始化 μk , Σk 等参数
    2): E
           利用现有参数得到
              
     
    3): M
    重新估计参数
     
     
    (4):评估 log 似然函数是否收敛,否则转到第二步
     
    E步的思想就是,如果是第一步,则先选一个初始参数值,否则利用当前的参数值,计算出数据由每个 Component生成的概率
     
    M步的思想就是
    估计每个 Component 的参数:现在我们假设上一步中得到的 就是正确的“数据 由 Component 生成的概率”,亦可以当做该 Component 在生成这个数据上所做的贡献,或者说,我们可以看作 这个值其中有 这部分是由 Component 所生成的。集中考虑所有的数据点,现在实际上可以看作 Component 生成了 这些点。由于每个 Component 都是一个标准的 Gaussian 分布,可以很容易分布求出最大似然所对应的参数值

    (八):关联分析


    一:关联分析的基本概念
    1:购物篮事务
    如图。表中每一行对应一个事务,包含一个唯一标示TID和给定顾客购买的商品集合。
    2:关联分析
    (1):关联分析:用于发现隐藏在大型数据集中的有意义的联系。所发现的联系一般用关联规则或频繁项集的形式表示。
    如下:
            {尿布}->{啤酒}:表明两者的销售之间存在很强的联系。
    (2):二元表示
    如图。每行对应一个事务,每一列对应一个项。项用二元变量表示,若项在事务出现则值为1,否则为0
     
    (3):项集
         令 I=i1,i2,...,id 是购物篮数据中所有项的集合, T=t1,t2,...,tN 是所有事务的集合。包含0个多多个项的集合被称为项集。如果一个项集包含k个项,则称为k-项集。
         例如:{啤酒,尿布,牛奶}称为3-项集。
    (4):支持度计数
       1:如果项集X是事务 tj 的子集,则称事务 tj 包含项集X;
       2:支持度计数:包含特定项集的事务个数,即:
                              σ(X)=|ti|Xti,tiT|
          例如:在上图中项集{啤酒,尿布,牛奶}的支持度计数为2,有两个事务同时包含这3个项。
    (5):关联规则:形如X->Y的蕴含表达式。X与Y不相交。
        1:支持度
                              s(X>Y)=σ(XY)N :规定数据集的频繁程度
        2:置信度
                              c(X>Y)=σ(XY)σ(X) :确定Y在包含X的事务中出现的频繁程度
    (6):关联规则的发现
            给定事务的集合T,找出支持度大于等于某个支持度并且置信度大于等于某个置信度的所有规则。分为两个子问题
        1:频繁项集产生:发现满足最小支持度阈值的所有项集
        2:规则的产生:从上步发现的频繁项集中提取所有高置信度的规则
     
    二:相关算法
    1:频繁项集的产生
    Apriori算法
    (1):先验原理:如果一个项集是频繁的,则它的所有子集一定也是频繁的。
    (2):Apriori算法大致过程
          令 Ck 为候选k-项集的集合, Fk 为频繁k-项集的集合
       1:初始单遍扫描数据集,确定每个项的支持度,得到所有频繁1-项集的集合 F1
       2:使用上一次迭代得到的频繁(k-1)-项集,产生新的候选k-项集
       3:重新扫描数据集得到候选项的支持度计数。删除支持度小于阈值的所有候选项集
       4:跳转到2
       5:没有新的项集产生,算法结束
     
    2:规则的产生
        将频繁项集Y划分为两个非空的子集X和Y-X,使得X->Y-X满足置信度的阈值
    Apriori算法:
         初始,提取规则后件只含有一个项的所有高置信度规则,然后,使用这些规则来产生新的候选规则。
    例如:如果{acd}->{b}和{abd}->{c}是两个高置信度的规则,则通过合并这两个规则的后件产生候选规则{ad}->{bc}
     

    (九):聚类

    一:聚类的相关概念
    1:聚类分析
         根据在数据中发现的描述对象及其关系的信息,将数据对象分组。
         目标:组内的对象相互之间相似度高,不同组对象之间的相似度低。
    2:不同的聚类类型
    (1):划分聚类
                   将数据对象集划分成不重叠的簇
               层次聚类
                   允许嵌套,组织成一棵树
            
    (2):互斥聚类
                 每个对象都指派到单一的簇
               重叠聚类
                 一个对象可以同时从属于多个簇
               模糊聚类
                 每个对象以一个0和1之间的隶属权值属于每个簇
    3:不同的簇类型
    (1):明显分离的
          每个对象到同簇对象的距离近于不同簇的任意对象
              
     
    (2):基于中心的簇
          每个点到其簇中心的距离比到其他簇中心的距离更近
                
    (3):基于近邻的簇
          每个点到簇中至少一个点的距离比到不同簇中任意点的距离更近
                  
    (4):基于密度的簇
          簇是被低密度区域分开的高密度区域
                        
    二:聚类算法
    1:k-均值
        见我的另一篇博文: http://bbs.sciencenet.cn/blog-796597-628676.html
    2:凝聚层次聚类
         从个体点作为簇开始,相继合并两个最接近的簇,直到只剩下一个簇
     
     算法中的邻近性定义:
    (1):MIN(单链)不同簇的两个最近点之间的邻近度
    (2):MAX(全链)不同簇的两个最远点之间的邻近度
    (3):组平均:取不同簇所有点对邻近度的均值
    3:DBSCAN 一种基于密度的聚类算法
    (1):根据基于中心的密度进行点分类
             核心点:点在基于密度的簇内部
             边界点:不是核心点,但它落在某个核心点的邻域内
             噪声点:既非核心点又非边界点
                 
    (2):算法
     
    4:混合模型聚类
     

    (十):HITS


    一:解决的问题:

    1:用户查询分类

    1):Specific queries :例如.Does Netscape support the JDK 1.1 code-signing API

    2):Broad-topic queries:例如. Find information about the Java programming language

    2:问题

    1):对于Specific queries ,由于相关term太少,很难查找出来想要的结果

    2):对于 Broad-topic queries,相关的查询结果太多,很难找到the authoritative or definitive pages

    3:基于文本分析的局限

    大多数popular网页时缺乏有效充足的自描述的,例如www.harvard.edu是一个authoritative网页,但是往往是其他的大量网页会包括harvardwww.harvard.edu反而不会有很多。

    二:问题的解决

    1:利用link structure

    2:提出Authorities and Hubs 概念

    1):Authoritiespages that are recognized as providing significant, trustworthy, and useful information on a topic.

    2):HubsHubs are index pages that provide lots of useful links to relevant content pages (topic authorities)

    3):In-degree. Number of pointers to a page and is one simple measure of authority

    4):Out-degree. Number of pointers from a page to other pages

    3:Roor Set and Base Set

    (1):p.查询语句

    (2):Root Set Rp.包含查询结果的网页

    (3)  :Base Set:扩展Root Set

    1:all pages linked to by pages in root set

    2:all pages that link to a page in root set

     

     

    4:子图构建算法

                       

     

       5:计算Hubs和Authorities

    (1):对于每一个 pS ,有

                    Authority score : a(vector a)

                    Hub score         : hp       (vector h)

    (2):Initialize all ap = hp = 1

    (3):Maintain normalized scores:

                       pS (ap)2=1

                       pS (hp)2=1

      

    (4):迭代算法

           

     

     


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值