【问题标题】:H2O variable importance for all discrete levels included in the model模型中包含的所有离散水平的 H2O 变量重要性
【发布时间】:2019-05-20 17:41:43
【问题描述】:

我想从给定模型的可变重要性角度提取各个分类级别。下面提供的数据集中有几个分类预测变量,但是当我去计算特征重要性时,只显示“整列”的重要性,而不是将重要性分解为 C1_level0: importance 和 C1_level1: importance 之类的东西。如果我手动对这些离散级别进行单热编码,我如何查看列的重要性?

>>> import h2o
>>> h2o.init()
Checking whether there is an H2O instance running at http://localhost:54321. connected.
--------------------------  ----------------------------------------
H2O cluster uptime:         48 mins 24 secs
H2O cluster timezone:       America/Chicago
H2O data parsing timezone:  UTC
H2O cluster version:        3.20.0.5
H2O cluster version age:    6 days
H2O cluster name:           H2O_from_python_user_9znggm
H2O cluster total nodes:    1
H2O cluster free memory:    1.464 Gb
H2O cluster total cores:    8
H2O cluster allowed cores:  8
H2O cluster status:         locked, healthy
H2O connection url:         http://localhost:54321
H2O connection proxy:
H2O internal security:      False
H2O API Extensions:         XGBoost, Algos, AutoML, Core V3, Core V4
Python version:             3.6.5 final
--------------------------  ----------------------------------------
>>>
>>> df = h2o.create_frame(categorical_fraction=0.5)
Create Frame progress: |██████████████████████████████████████████████████████████████████████| 100%
>>>
>>> model = H2OGradientBoostingEstimator()
>>> model.train(x=[c for c in df.columns if c != 'C1'], y='C1', training_frame=df)
gbm Model Build progress: |███████████████████████████████████████████████████████████████████| 100%
>>>
>>> model.varimp(True)
  variable  relative_importance  scaled_importance  percentage
0       C3          4448.583984           1.000000    0.255125
1       C9          4424.002930           0.994474    0.253715
2       C6          4273.684082           0.960684    0.245094
3       C4          4249.320312           0.955207    0.243697
4      C10            12.800615           0.002877    0.000734
5       C7            12.022744           0.002703    0.000689
6       C8             8.271964           0.001859    0.000474
7       C2             4.649746           0.001045    0.000267
8       C5             3.567022           0.000802    0.000205

【问题讨论】:

    标签: python h2o


    【解决方案1】:

    这是您在使用 model.std_coef_plot() 时可以通过 H2O 的 GLM 获得的东西,但是 model.varimp(True) 的预期行为是为您提供每个功能的重要性,而不是各个级别的重要性。

    如果您想了解个体水平与结果之间的关系,我建议您使用 H2O 的部分依赖图(文档 here 和 here。

    【讨论】:

      【解决方案2】:

      你想要的是partial dependency plots,你可以从pdp_data = model.partial_plot(data=fi_data, cols=variable_list, plot=False, nbins=30,plot_stddev = False )命令得到它

      在此数据表中,您拥有所需的信息,因此经过一些处理后,您可以为模型中的每个变量打印出这样的图表。

      红点表示 Y 的平均值,点表示 prediction 在其他条件不变的情况下每个级别

      【讨论】:

        猜你喜欢
        • 2017-10-20
        • 2015-07-25
        • 1970-01-01
        • 1970-01-01
        • 2019-04-17
        • 1970-01-01
        • 2017-09-20
        • 2020-08-18
        • 1970-01-01
        相关资源
        最近更新 更多