目前,人们已经对多种机器学习的模型进行了比较,随机森林经常独占鳌头[1]。
----题记 随机森林算法,在图像处理中经常见到,另外一个经常见到的是贪婪算法,一直以来不太清楚它们是做什么用的。那天,上网搜了下随机森林算法,发现李欣海老师的博客中有介绍,从头到尾仔细地看了下。下面是以我的方式将博客里的内容整理了一下,有兴趣了解细节的可以点击链接 http://blog.sciencenet.cn/home.php?mod=space&uid=661364&do=blog&id=728330
Q: 随机森林算法的基本思想是什么?
A: 随机森林是一种基于分类树的算法。这个算法需要模拟和迭代,被归类为机器学习中的一种方法。
Q: 随机森林算法解决什么问题?
A: 解决回归问题和分类问题。(笼统一点儿来说,以我个人理解来看,两者都是拟合问题,前者拟合一个连续函数,后者拟合一个非连续函数)
Q: 回归问题和分类问题不是有很多成熟的算法,简单如线性和广义线性回归模型,复杂如神经网络等算法,为什么还要使用随机森林算法呢?
A: 随机森林算法较以上提到的算法有优势。概括来说,它用较小的计算量(相对于神经网络的庞大的计算量)实现了较高的预测精度(相较于线性和广义线性回归模型而言)。
Q: 除了以上的优点,随机森林还有其他优点吗?
A: 这个必须有。比如学习速度快;不需要考虑自变量的共线性问题(而Logstic模型在回归问题的使用中必须考虑);部分数据缺失,仍可以维持一定的准确度;对离群值(也称为野值)不敏感,算法健壮;不易产生过拟合(此观点尚存争议)
Q: 说了这么多随机森林法的优点,那它的缺点呢?
A: 虽然可以假称这个不能有,但是这个还真有。它的缺点主要集中在以下两点:一、算法预测结果倾向于样本中观测值较多的类别;二、水平分类多的自变量(如一个自变量有20个等级)比分类少的自变量(如一个自变量有3个等级)对模型的影响更大。(虽然我对随机方面的算法没有多少了解,但是直观感觉上面两条缺点,其他算法或多或少都有)
Q: 如果只想使用随机森林,而不想了解背后的理论基础和编程细节,怎么办?
A: 使用 R 语言的 RandomForest 软件包,把数据准备好,调用算法即可。顺手上网搜了下,Matlab 的 RandomForest 的软件包也有人写过,感兴趣的可以搜索下载使用。
A: 随机森林是一种基于分类树的算法。这个算法需要模拟和迭代,被归类为机器学习中的一种方法。
Q: 随机森林算法解决什么问题?
A: 解决回归问题和分类问题。(笼统一点儿来说,以我个人理解来看,两者都是拟合问题,前者拟合一个连续函数,后者拟合一个非连续函数)
Q: 回归问题和分类问题不是有很多成熟的算法,简单如线性和广义线性回归模型,复杂如神经网络等算法,为什么还要使用随机森林算法呢?
A: 随机森林算法较以上提到的算法有优势。概括来说,它用较小的计算量(相对于神经网络的庞大的计算量)实现了较高的预测精度(相较于线性和广义线性回归模型而言)。
Q: 除了以上的优点,随机森林还有其他优点吗?
A: 这个必须有。比如学习速度快;不需要考虑自变量的共线性问题(而Logstic模型在回归问题的使用中必须考虑);部分数据缺失,仍可以维持一定的准确度;对离群值(也称为野值)不敏感,算法健壮;不易产生过拟合(此观点尚存争议)
Q: 说了这么多随机森林法的优点,那它的缺点呢?
A: 虽然可以假称这个不能有,但是这个还真有。它的缺点主要集中在以下两点:一、算法预测结果倾向于样本中观测值较多的类别;二、水平分类多的自变量(如一个自变量有20个等级)比分类少的自变量(如一个自变量有3个等级)对模型的影响更大。(虽然我对随机方面的算法没有多少了解,但是直观感觉上面两条缺点,其他算法或多或少都有)
Q: 如果只想使用随机森林,而不想了解背后的理论基础和编程细节,怎么办?
A: 使用 R 语言的 RandomForest 软件包,把数据准备好,调用算法即可。顺手上网搜了下,Matlab 的 RandomForest 的软件包也有人写过,感兴趣的可以搜索下载使用。