首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时使用随机森林

何时使用随机森林
EN

Data Science用户
提问于 2019-06-29 20:28:29
回答 3查看 11.3K关注 0票数 5

我知道随机森林模型可以用于分类和回归情况。

是否有更具体的标准来确定随机森林模型在估计值时比一般回归(线性、拉索等)或Logistic回归进行分类时表现得更好?

EN

回答 3

Data Science用户

发布于 2019-06-30 13:20:11

在前一个答案中添加一些额外的一般性要点:

  • 作为一种决策树算法,与其他算法相比,随机林算法受异常值的影响较小。关于它的一个很好的讨论是这里
  • 它们也不对数据的基本分布做出任何假设,并且可以隐式处理特性中的共线性,因为如果您有两个高度相似的特性,那么在其中一个特性上拆分的信息增益也会耗尽另一个功能的预测能力。读一下吧,这里
  • 随机林可以用于特征选择,因为如果您将算法与无用的特性相匹配,该算法就不会使用它们对数据进行拆分。可以提取“最佳”特征(这可能是一个特征用于对数据进行拆分的总次数,或杂质等的平均减少)。但是,与我上面的观点一样,您不能过多地理解这些特性的相对重要性,特别是如果您有高度相关的特性。
  • 我认为是否使用RF或其他算法的最大决定因素可能是,如果您想更多地了解特征与目标之间的关系以及它们的影响程度。如果这对您的用例很重要(例如,您想知道某个特性是否与目标有积极或消极的关系,以及它对结果的影响程度),那么像Logistic回归和Lasso这样的其他特性是更好的选择。
  • 此外,如果您希望您的模型外推到对数据的预测,而这些数据超出了原始培训数据的范围,那么随机森林将不是一个好的选择。

希望这能有所帮助!

票数 5
EN

Data Science用户

发布于 2020-02-26 15:59:17

请考虑以下几点:

代码语言:javascript
复制
1) Random forest algorithm can be used for both classifications and regression task.
2) It typically provides very high accuracy.
3) Random forest classifier will handle the missing values and maintain the accuracy of a large proportion of data.
4) If there are more trees, it usually won’t allow overfitting trees in the model.
5) It has the power to handle a large data set with high dimensionality

最终,你所选择的工作都取决于你自己。你肯定希望algo的预测能力相当高(超过90%)。有时其他的徽标击败射频阿尔戈,但我发现,经常射频是相当好的!通常,我从射频开始,如果我看到了不错的表现,我就完蛋了。我相信,至少在80%的时间里,我就完蛋了。如果你没有得到好的结果从射频阿尔戈,测试其他一些。

这给了几个不同的标志很好的比较。

代码语言:javascript
复制
import pandas
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
# load dataset
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
# prepare configuration for cross validation test harness
seed = 7
# prepare models
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC()))
# evaluate each model in turn
results = []
names = []
scoring = 'accuracy'
for name, model in models:
    kfold = model_selection.KFold(n_splits=10, random_state=seed)
    cv_results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)
# boxplot algorithm comparison
fig = plt.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
plt.boxplot(results)
ax.set_xticklabels(names)
plt.show()

参考资料:如何比较Python中的机器学习算法和scikit-学习

票数 2
EN

Data Science用户

发布于 2019-06-29 23:15:13

这只是一个一般性的答案,但如果有帮助的话:

  • 一般来说,决策树往往是“健壮的”,因为它们可以处理几乎任何类型的数据,特别是在其他方法(如线性或逻辑回归)可能难以处理的情况下。例如,在异质特征的情况下,它们没有问题,例如,当将分类特征和数值特征混合,或者混合完全不同的值范围时,等等。
  • 随机森林增加了集合学习,使得决策树更加健壮,特别适合于处理含噪数据,而标准回归方法很容易被噪声混淆。

直觉上,我看到决策树(包括随机森林)是监督学习的“瑞士军刀”:高效、通用、易用。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/54751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档