机器学习理解(一)

来源:互联网 发布:unity3d 城市夜景资源 编辑:程序博客网 时间:2024/06/04 18:38

Spark这部分写完了,忽然发现自己没什么可写的了。。。还是把机器学习这部分写下,虽然有关机器学习的博客有很多,而且有的博客写的真的很好,但还是想将自己在学习机器学习时的一个理解记录下来,可能存在许多不足,因此如果有了新的理解,我会进行更新,当然,更加希望的是能借助之后在工作中的一些经验来逐步完善这方面的知识。。
1.分类决策树---有监督学习
分类决策树是一棵自上而下的树,用来进行预测,分支节点包括根节点是数据集的各个属性,属性有几个取值则节点就有几个分支,叶子节点则为分类结果,从根节点到叶子节点所走的路径即为一条规则,对新数据集的预测则是根据这棵树而来,常用的建树算法有ID3(Iterative Dichotomiser 3 迭代二叉树3代)和C4.5
ID3算法的基本思想:选取信息增益最大的属性作为根节点,如属性A,属性A有几个取值,就有几个分支,接着再选取其余属性作为各个分支下的子树的根节点,根节点的选取都是根据信息增益最大来取,信息增益又是根据信息熵来求的(PS:熵就是系统有序化的度量,或者可以认为熵=无序化,熵越大,无序化程度越高,有序化程度越低,即不稳定程度越大,或者更夸大一点就可以理解为不知道去哪个值),具体求法如下:

       
        1.求出系统熵;
        2.单独求出属性各个取值的信息熵;
        3.加权上一步求得的属性的各个取值的信息熵作为属性的信息熵;
        4.求得信息增益:系统熵-属性的信息熵;
        5.信息增益最大的作为根节点;
        6.重复步骤2,直至所有属性的信息熵为0;
优点:原理比较简单,易于理解;
缺点:用信息增益选择属性作为树或者子树的根节点时偏向于选择分支比较多的属性,即取值多的属性;需要重复扫描数据库,效率不高;
C4.5是对ID3算法的改进,它是选取信息增益率最大的属性作为树或者子树的根节点,解决了ID3中偏向于选择分支比较多的属性作为根节点的缺点,同时C4.5在处理属性为连续值的情况下比ID3更加有效率,C4.5也是将连续值转换为离散值,它先将属性的取值进行排序,在结果发生改变的取值处进行划分,这样就会形成多个取值段,这些取值段就为属性的离散取值
PS:互信息=I(X,Y)=entropy(X)+entropy(Y)-entropy(X,Y)

信息增益率=信息增益/分裂度    
比如属性A有A1,A2,A3三个取值,属性A有7个样例,其中A1有2个样例,A2有2个样例,A3有3个样例,则分裂度=-(2/7log2/7)-(2/7log2/7)-(3/7log3/7)

参考博客:http://www.cnblogs.com/zhangchaoyang/articles/2196631.html
                  http://www.cnblogs.com/zhangchaoyang/articles/2842490.html
CART分类回归树:实质上也是一棵决策树,不过不同的是它是一棵二叉树,同时非叶子节点多有两个孩子,因此对于某属性有多个取值时,我们要对这些属性值进行处理,如某属性A有B1,B2,B3三个属性,那就按照B1和非B1,B2和非B2,B3和非B3进行划分,分别求得各个情况下的GINI指数值,选取GINI指数值最小的作为分类情况,其余的大致上和决策树类似
2.朴素贝叶斯分类器---有监督学习
朴素贝叶斯分类器的基本原理是利用贝叶斯公式,即条件概率的公式:,求得给定条件下,其所属各个分类的概率,哪个分类下的概率最大,则其就为哪个分类,如事件所给定的条件为B1,B2,B3,分类为A1,A2,则该事件的分类结果可以通过如下公式求得:

因为P(B)都一样,因此只需比较分母的大小即可

,则该事件属于分类A2,否则属于分类A1
若某属性的取值中出现了零频问题,可以通过数据平滑的方法来解决,最简单的就为拉普拉斯估计--即为每个计数加1;
若某属性为连续取值,则一可以将其像决策树那样转换为离散取值,二可以通过计算该分类下给定的相应属性取值的概率密度函数作为其概率;

优点:思路比较简单,有效;
缺点:朴素贝叶斯分类器假设属性之间是相互独立的,当属性之间不独立的时候结果可能就会产生误差
参考博客:http://www.cnblogs.com/zhangchaoyang/articles/2586402.html


0 0
原创粉丝点击