近期要使用随机森林这个分类器,因此花了一段时间弄清它的机理,现总结如下:
1、定义(参考Bremian, 2001. 随机森林的最原始的解释就在这里面)
简单地说,随机森林是由一棵一棵的决策树构成,每棵决策树通过从原始数据进行bootstrap抽样产生新的样本(样本的数量与原来样本的数量相同),每棵决策树之间相互独立,通过少数服从多数的机制投选出最佳的分类,可以用下面的图来显示:
2、Bootstrap抽样(主要参考概率论与数理统计的书)
所谓Bootstrap抽样简单形容就是有放回地摸同样数量的球,举个例子,假设原始的样本为:(1 2 3),
那么Boostrap样本可能为(1 1 1),( 2 1 3),(1 2 3) 等等。
3、决策树(主要参考Tom M.Mitchell的机器学习,这本书是机器学习的开山之作之一,非常值得推荐)
我以书本中的一个例子贯穿整个决策树的创立,理解了决策树之后,随机森林大部分也就理解了。
下面的这个例子是关于打不打网球(Play tennis?),它所用的4个特征(实际上只用了3个特征,因为用了这三个特征已经把决策树构建好了,
所以没有用特征Temperature)为:外面的天气情况(Outlook,这个特征有三个值:Sunny、Overcast、Rain),湿度(Humidity,这个特征有两个值:High、Normal),有没有风(Windy,这个特征有两个值:True、False), 温度(Temperature,这个特征有三个值:Hot、Cool、Mild),
它根据这4个特征构建的关于打不打网球的决策树如下(一个最简单的决策树):
它的意思就是如果Outlook为Overcast,那么不用考虑,一定去打网球,如果Outlook为Sunny,这个时候要考虑Humidity,
如果Humdity为Normal那么就去打,如果为High就不打;同样,如果Outlook为Rain,这个时候就考虑Wind,如果Wind为Strong,
那么就不去打了,如果为Weak时,就去打。
下面同样以这个为例子,加上具体的数据,然后下面也会详细描述每一步是怎样构建的。
下面为加进这个例子的数据
Day | Outlook | Temperature | Humidity | Wind | Play tennis? |
D1 | Sunny | Hot | High | Week | No |
D2 | Sunny | Hot | High | Strong | No |