代码之家  ›  专栏  ›  技术社区  ›  Kush Patel

catboost中非常相同的数据和非常相似的模型之间的显著不同的特征无效性

  •  1
  • Kush Patel  · 技术社区  · 7 年前

    首先让我解释一下我使用的数据集。

    我有三套。

    1. 评估集形状为(174927),目标出现的时间约为11.5%

    这个集合也使用时间片构建。列车组是最古老的数据。最新数据。评估集在中间。

    模型1:

    # Initialize CatBoostClassifier
    model = CatBoostClassifier(
        # custom_loss=['Accuracy'],
        depth=9,
        random_seed=42,
        l2_leaf_reg=1,
        # has_time= True,
        iterations=300,
        learning_rate=0.05,
        loss_function='Logloss',
        logging_level='Verbose',
    )
    
    ## Fitting catboost model
    model.fit(
        train_set.values, Y_train.values,
        cat_features=categorical_features_indices,
        eval_set=(test_set.values, Y_test)
        # logging_level='Verbose'  # you can uncomment this for text output
    )
    

    型号2:

    model = CatBoostClassifier(
        # custom_loss=['Accuracy'],
        depth=9,
        random_seed=42,
        l2_leaf_reg=1,
        # has_time= True,
        iterations= 'bestIteration from model1',
        learning_rate=0.05,
        loss_function='Logloss',
        logging_level='Verbose',
    
    )
    
    ## Fitting catboost model
    model.fit(
        train.values, Y.values,
        cat_features=categorical_features_indices,
        # logging_level='Verbose'  # you can uncomment this for text output
    )
    

    但是,当我比较功能重要性时。看起来有很大的不同。

      Feature  Score_m1  Score_m2     delta
    0      x0  3.612309  2.013193 -1.399116
    1      x1  3.390630  3.121273 -0.269357
    2      x2  2.762750  1.822564 -0.940186
    3      x3  2.553052       NaN       NaN
    4      x4  2.400786  0.329625 -2.071161
    

    关于这种情况,我有以下问题。

    1. 在这个模型中是否有这样一个特征,就是没有给出太多关于模型结果的信息,并且有随机的变化,它正在造成分裂。如果发生这种情况,如何检查这种情况?

    2. 这个catboost是适合这种情况的模型吗?

    任何关于这个问题的帮助都将不胜感激

    0 回复  |  直到 5 年前
        1
  •  0
  •   Clem Wang    5 年前

    对。一般来说,树木有点不稳定。如果删除最不重要的特性,则可以得到完全不同的模型。

    树算法本质上是随机的,所以结果会有所不同。

    尝试事项:

    1. 运行模型很多次,但是使用不同的随机种子。使用结果来确定哪个功能看起来最不重要(你有多少功能?)

    2. 试着平衡你的训练。这可能需要你对更罕见的病例进行抽样调查。

    3. 获取更多数据。也许你得把你的训练和测试集结合起来,用保持器做测试。

    推荐文章