随机梯度提升给出不可的结果(gradient boosting python)

我正在使用 Python 的 Scikit 模块实现随机梯度提升。我的数据集有 2700 个实例和 1700 个特征 (x),并包含二进制数据。我的输出向量是 'y',并包含 0 或 1 (二进制分类)。我的代码是,

我正在使用 Python 的 Scikit 模块实现随机梯度提升。我的数据集有 2700 个实例和 1700 个特征 (x),并包含二进制数据。我的输出向量是 'y',并包含 0 或 1 (二进制分类)。我的代码是,

gb = GradientBoostingClassifier(n_estimators=1000,learn_rate=1,subsample=0.5) gb.fit(x,y) print gb.score(x,y)

一旦我运行它,并得到了 1.0(100 %)的精度,有时我得到的精度约为 0.46(46 %)。

5

首先,有几点评论:

该算法的名称是梯度提升(回归树或机器),与随机梯度下降没有直接关系

使用sklearn.cross_validation.train_test_splitXy拆分为X_trainy_train用于拟合,X_testy_test用于评分。

现在来回答你的问题,GBRT 模型确实是非确定性模型。为了获得确定性 / 可重现的运行,您可以通过random_state=0来播种伪随机数生成器(或者通过max_features=None,但不建议这样做)。

事实上,你在训练误差中观察到如此大的变化是很奇怪的,也许你的输出信号与非常少量的信息特征非常相关,而大多数其他特征只是噪音?

您可以尝试使RandomForestClassifier模型适合您的数据,并使用计算的feature_importance_数组来丢弃噪声特征并帮助稳定 GBRT 模型。

1

您应该查看每次迭代的训练损失,这可能表明损失是否突然“跳跃”,这可能表明数值困难:

import pylab as plt
train_scores = gb.train_score_
plt.plot(np.arange(train_scores.shape[0]), train_scores, 'b-')

结果图应该逐渐减少,就像左图中的蓝线一样http://scikit-learn.org/dev/auto_examples/ensemble/plot_gradient_boosting_regression.html

如果你看到一个逐渐减少但突然跳跃,它可能表明一个数值稳定性问题-为了避免它们,你应该降低学习率(例如尝试 0.1)。

如果您没有看到突然的跳跃,并且没有实质性的减少,我强烈建议先关闭子采样并调整学习率。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(259)
在Microsoft365管理中心中部署OfficeWeb加载项
上一篇
登录前带光标的黑屏(windows black screen on boot)
下一篇

相关推荐

  • python浅拷贝和深拷贝区别、原理与实现

    示例示例Python中的浅拷贝和深拷贝是指在复制对象时,复制的结果和原来的对象之间的关系。浅拷贝:浅拷贝只复制一层,也就是说,它只复制最外围的对象,而不复制它包含的对象。如果最外围的对象中包含其他对象,那么这些对象将不会被复制,而是使用原来的对象。…

    2023-05-30 14:25:17
    0 38 94
  • python程序员待遇:Python程序员薪酬最高,收入惊人!

    Python程序员的待遇取决于他们的技能水平和工作经验。一般来说,Python程序员的薪资水平较高,尤其是对于那些有丰富工作经验的Python程序员而言,他们的薪资水平更高。此外,Python程序员还可以获得许多其他福利,包括住房补贴、交通补贴、带薪休假等。…

    2023-06-22 01:21:15
    0 31 33
  • python文本情感分析(含代码示例)

    Python文本情感分析是一种使用自然语言处理技术来分析文本中的情感倾向的过程。它可以帮助我们了解用户对特定主题的看法,从而改善产品和服务。…

    2023-04-23 00:28:07
    0 58 87
  • python字符串拼接数字从零开始

    实例实例Python字符串拼接数字,可以使用format()函数或者%运算符来实现。代码实例:…

    2023-08-20 08:25:28
    0 89 44
  • python中import re:如何使用Python中的re模块进行正则表达式匹配

    import re 是Python中正则表达式模块,可以用来处理字符串。它提供了一系列的函数,可以用来查找、替换和分割字符串,以及检查字符串是否符合特定的格式。…

    2023-05-02 10:25:33
    0 34 32
  • python安装pygame失败:解决python安装pygame失败的方法

    Python安装pygame失败的原因可能有很多,下面是一些常见的原因:安装环境不兼容:pygame只支持python2.7以上版本,而您可能安装的是python3.x或更低版本。…

    2023-04-15 03:55:19
    0 55 22
  • python是面向Python的优势

    Python是一种面向对象的编程语言,它提供了一种简单而强大的方法来创建可重用的代码。它使用类和对象来实现面向对象编程,允许程序员将代码封装在类中,以便在不同的程序中重复使用。…

    2023-05-02 04:34:35
    0 66 98
  • python程序包:如何使用Python程序包构建高效的应用程序

    Python程序包是一种用于组织Python模块的形式,它允许程序员将相关的模块组合在一起,以便更轻松地管理和使用它们。Python程序包可以包含函数、类、变量和其他Python代码,以帮助简化程序的开发。…

    2024-03-20 06:08:18
    0 24 73

发表评论

登录 后才能评论

评论列表(35条)