决策树和随机森林笔记

一、决策树

给定一个数据表怎么画决策树。每个内部节点表示在一个属性上的测试,每一个分支代表一个测试输出,

1. 以实例为基础的归纳信息。决策树的建立过程是一个递归的过程。以信息熵为度量构造一颗熵值下降信息的过程。信息越多,不确定性越小。决策树的建立过程是熵不断的下降过程。哪种下降更快,则以它作为优先节点。决策树的生成过程是贪心法,每一步都求当前最优。

决策树可以自学习。不需要使用者了解背景,只要训练实例进行标注,就能自己学习。是监督学习。

建立决策树的关键,在当前状态下选择那个属性作为分类依据。根据不同的目标函数,建立决策树的算法有ID3、C4.5、CART

2.信息增益:当熵和条件熵中的概率有数据估计(特别是极大似然估计)得到时,所对应的熵和条件熵分别称为经验熵和经验条件熵。表示得知特征A的信息而使得类X的信息的不确定性减少的程度。

特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差。其实就是互信息。

基本记号:设训练数据集为D,|D|表示其容量,即样本个数。设有K个类Ck, k = 1,2,...,k,|Ck|为属于类Ck的赝本个数。设特征A有n个不同的取值a1,a2,...,an,根据特征A的取值将D划分为n个子集D1,D2,...Dn,  。Di之和为D。记子集Di中属于类Ck的样本的几何为Dik。|Dik|为Dik的个数。

3.信息增益的计算方法

经验熵H(D)。计算特征A对数据集D的经验条件熵H(D|A)。信息增益:g(D,A) = H(D) - H(D|A).

其中

H(D|A) = -\sum p(D_{k},A_{i})logp(D_{k}|A_{i}) = -\sum p(Ai)p(D_{k}|A_{i})logp(D_{k}|A_{i})=-\sum p(A_{i})\sum p(D_{k}|A_{i})logp(D_{k}|A_{i}) = -\sum \frac{|D_{i}|}{|D|}\sum \frac{|D_{ik}|}{|D_{i}|}log\frac{|D_{ik}|}{|D_{i}|}

信息增益率:gr(D,A) = g(D,A)/H(A)

基尼指数:Gini(p) =\sum p_{k}(1-p_{k}) = 1-\sum p_{k}^{2} = 1-\sum (\frac{|C_{k}|}{D})^{2}

熵的一半与基尼系数、分类误差率三者关系。与熵有一定的相似性。

4.信息增益来进行特征选择的决策树学习过程,即为ID3决策。如果是取值更多的属性,更容易使得数据更纯,其信息增益更大,决策树会首先选这个属性作为树的定点。如果训练出来的限制是一棵庞大且深度很浅的树,这样划分是不合理的。

C4.5:信息增益率

CART:基尼指数

总结:一个属性的信息增益越大,表明属性对样本的熵减少的能力更强,这个属性使得数据由不确定性变确定性的能力越强。

决策树对训练属于有很好的分类能力,但对位置的测绘数据未必有好的分类能力,泛化能力弱,即可能发生过拟合现象。可以用剪枝,随机森林。

二、Bootstraping随机森林

来自成语“pull up by your own bootstraps”,意思是依靠自己的资源,称为自助法,它是一种有放回的抽样方法。

1.Bagging的策略。bootstrap aggregation。从样本集中重采样(有放回的)选出n个样本,之后再所有属性上,对着n个样本建立分类器(ID3、C4.5、CART、SVM、Logistic回归等),之后重复以上两步m次,即获得了m个分类器,再将数据放在这m个分类器上,最后根据这m个分类器的投票结果(可以是测试集的结果。需要给定一个权重),决定数据属于哪一类。

另一种表示方式,数据集D,数量n,生成新的测试集Di,每个是n‘,每个有放回的采样,n'大概有63.2%是不重复的。做决策树。进行投票,如果是回归则取均值。

2.随机森林在bagging基础说过那做了修改:从样本中用Bootstrap采样选出n个样本;从所有属性中随机选择k个属性,选择最佳跟个属性作为节点建立CART决策树;重复以上两步m次,即建立了m棵CART决策树;这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类。

m个决策树做出的总的结果就是随机森林。

eg1:求婴儿头骨半径:通过harr特征提取等对每幅图片分布处理,得到M个特征。N个图片形成N*M的矩阵;随机选择若干特征和样本,得到a*b的小矩阵,建立决策树;重复K此得到随机森林,投票方法选择少数服从多数。

eg2:对人的动作的特征来进行随机森林算法,通过投票来确定用做那个动作。

3.随机森林、Bagging和决策树的关系:当然可以使用呢决策树作为基本能分类器;但也可以用SVM、Logistic回归等其他分类器,习惯上,这些分类器组成的“总分类器”,依然叫作随机森林。

4.使用Bagging

过程:做100次bootstrap,每次得到的数据Di,Di的长度为N,对于每一个Di,使用局部回归拟合一条曲线;将这些曲线取平均,即得到红色的最终拟合曲线;显然,红色的曲线更加稳定,并且没有拟合明显减弱。

局部加权线性回归:在局部求\Theta值。拿出一小段来做线性回归,这样来做,几乎在任何一点都可以得到最优值。

随机森林定位信息。

5.投票机制

简单投票机制:一票否决(一致表决);少数服从多数(有效多数,加权);阈值表决,大于多少或者小于多少。

贝叶斯投票机制:简单投票发假设每个分类器都是平等的;实际生活中,一个的意见会考虑这个人过去的意见是否有用,加大或者减少权值,基于每个基本分类器在过去的分类表现设定一个权值来判断。

eg:假定有N个用户可以为X个电源投票,投票有1-5挡。如何根据用户投票,对电影排序?

对某个电影,有N个决策树,每个决策树对该电影有1个分类,求这个电影应该属于哪一类。(如果是小数,分类变成回归问题)

一种可能方案:WR = \frac{v}{v+m}R+\frac{m}{v+m}C,其中,WR为加权得分,R为该电影的用户投票的平均得分,C为所有电影的平均得分,v为该电影的投票人数,m排名前150名电影最低投票数(150可以具体来调整)

三、总结

1.拉普拉斯矩阵的定义

计算点之间的临界相似度矩阵W,若两个点的相似度值越大,这两个点越相似;W的第i行元素的和为vi的度,形成定点度对角阵D。未正则的拉普拉斯矩阵:L=D-W;正则拉普拉斯矩阵:对称拉普拉斯矩阵,随机游走拉普拉斯矩阵。

2.谱聚类算法:

(1)未正则拉普拉斯矩阵:输入n个点,簇的数目k,计算相似度矩阵W和度矩阵D;计算拉普拉斯矩阵L=D-W;计算特征向量;将列向量组成矩阵U;yi是U的第i行的向量;用kmeans将yi聚类成簇C1,C2,...,Ck;输出簇A1,A2,...,Ak。

(2)随机游走拉普拉斯矩阵,计算正则拉普拉斯矩阵,其他与(1)其他步骤一样

(3)对称拉普拉斯矩阵,计算正则拉普拉斯矩阵,对yi进行单位化,其他与(1)一样

3.切割图:聚类问题的本质:对于定值k和图G,选择一组划分,A1,A2,...Ak,最小化相似度矩阵和的一半。但是这个目标函数很多情况下,图分成了一个点和其余n-1个点,为了避免这个问题,目标函数应该要求A1,A2,...Ak足够大,以Ai的点数或者权值为被除数,使得函数的最小值在|Ai|相等时达到,函数最小数在vol(Ai)相等时达到。从而,目标函数能够师徒得到平衡的簇。

k=2时 RatioCut:minRatioCut(A,A)。minf'Lf。其中fi的加和为0,可以看成f和全1向量的点乘,从而f垂直1。f的模是定值。

如果将目标函数约束条件放松,将f的严格定义用性质代替,向量f各个分量的取值从离散若干个值延伸至整个实数域:

minf'Lf, s.t.f垂直1,||f||=\sqrt{n},根据Rayleigh-Rit定理,该目标解为L的次小特征向量。

推广到k次,前k个

4.谱聚类中的大k,怎么确定?可以考虑就散得到的各个特征值,旋转k,使得前k个特征值很小,而得到k+1特征值相对较大

  最后一步的kmeans,作用是怎么?事实上,目标函数是关于子图划分知识向量的函数,该向量的值根据子图划分确定,是离散的若干值。但由于问题NP的,转换成求连续实数域上的解,最后再k-means的办法离散化。可以用其他方法代替。如有人使用超平面,或者使用k个特征向量张成一个空间达到同样的目的。

 首选随机游走拉普拉斯矩阵。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值