catboost 包中是否有像我们过去在 python 中的 xgboost 包中使用的“scale_pos_weight”这样的参数?
在大型数据集(约 1M 行,500 列)上运行 catboost,我得到:训练已停止(迭代 0 时的退化解决方案,可能 l2 正则化太小,尝试增加它)。
我如何猜测 l2 正则化值应该是多少?它与 y 的平均值、变量数量、树深度有关吗?
谢谢!
我正在尝试使用 csv 文件中大约 22GB 的数据来训练 CatboostClassifier,该文件大约有 50 列。我尝试在 pandas 数据框中一次性加载所有数据,但无法做到这一点。无论如何,我可以在 catboost 中使用多个数据帧块来训练模型吗?
考虑以下数据:
import pandas as pd
y_train = pd.DataFrame({0: {14194: 'Fake', 13891: 'Fake', 13247: 'Fake', 11236: 'Fake', 2716: 'Real', 2705: 'Real', 16133: 'Fake', 7652: 'Real', 7725: 'Real', 16183: 'Fake'}})
X_train = pd.DataFrame({'one': {14194: 'e',
13891: 'b',
13247: 'v',
11236: 't',
2716: 'e',
2705: 'e',
16133: 'h',
7652: 's',
7725: 's',
16183: 's'},
'two': {14194: 'a',
13891: 'a',
13247: 'e',
11236: 'n',
2716: 'c',
2705: 'a',
16133: 'n',
7652: 'e',
7725: 'h',
16183: 'e'},
'three': {14194: 's',
13891: 'l',
13247: 'n',
11236: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 CatBoost 分类器。使用它我确实使用方法执行网格搜索randomised_search()
。不幸的是,该方法将针对每个尝试的模型构建的每个树的迭代结果打印到标准输出。
有一个参数应该控制这个:verbose。理想情况下,可以将 verbose 设置为 False 以禁止所有标准输出打印,或者设置为整数,指定报告的模型之间的间隔(模型,无树)。
你知道如何控制这个吗?我在日志文件中收到数百万行...
这个问题在某种程度上与如何抑制 CatBoost 迭代结果?,但与该fit()
方法相关,该方法还有一个logging_level和静默参数。另一种方法是cv()
交叉验证,它响应于logging_level='Silent'
删除所有输出。
我想知道如何为排名任务配置 catboost。catboost 主页暗示它可以用于排名任务。然而,排名任务的文档似乎很少:https : //tech.yandex.com/catboost/doc/dg/concepts/cli-reference_train-model-docpage/
并且所有教程都专注于对单个实例进行分类:https : //github.com/catboost/catboost/tree/master/catboost/tutorials
理想情况下,会有一些类似于 LightGBM 的文档或示例用于排名:https : //github.com/Microsoft/LightGBM/tree/master/examples/lambdarank
有没有人用过 catboost 进行排名?
我能够使用插入符号(在 Rstudio 中)训练 Catboost 模型,并且效果很好。
my_catboost <- caret::train(x, y,
method=catboost.caret,
trControl=fitControl,
tuneGrid = param,
metric = "ROC")
Run Code Online (Sandbox Code Playgroud)
如果我使用该模型来预测同一会话中的新数据,没问题,它可以工作:
output <- caret::predict.train(my_catboost, newdata=x_testing, type="prob")
Run Code Online (Sandbox Code Playgroud)
但是,如果我保存模型并稍后加载(或保存模型,删除“my_catboost”并加载),则函数预测将使 R 和 Rstudio 崩溃,并且不会出现错误消息,并且在 Rstudio 日志中找不到任何内容。加载后,我可以看到在全局环境中创建的模型,看起来不错。
我尝试了 R 函数保存和加载、saveRDS 和 readRDS,但都崩溃了
谢谢 !
如何返回 CatBoost 模型的所有超参数?
注意:我不认为这是Print CatBoost 超参数的重复,因为该问题/答案不能满足我的需要。
例如,使用 sklearn 我可以做到:
rf = ensemble.RandomForestClassifier(min_samples_split=2)
print rf
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
oob_score=False, random_state=None, verbose=0,
warm_start=False)
Run Code Online (Sandbox Code Playgroud)
这将返回所有超参数,我定义的参数和其他默认值。
使用 Catboost 我可以使用 .get_params() 但它似乎只返回用户指定的参数:
cat = CatBoostClassifier(loss_function='Logloss',
verbose = False,
eval_metric='AUC',
iterations=500,
thread_count = None,
random_state=SEED)
print cat.get_params()
{'iterations': 500, 'random_state': 42, 'verbose': False, 'eval_metric': 'AUC', 'loss_function': 'Logloss'}
Run Code Online (Sandbox Code Playgroud)
例如,我想知道使用了什么 learning_rate,但理想情况下可以获取整个列表。
我需要使用 CatBoost 执行多类多标签分类。
示例数据:
X = [[1, 2, 3, 4], [2, 3, 5, 1], [4, 5, 1, 3]]
y = [[3, 1], [2, 8], [7, 8]]
Run Code Online (Sandbox Code Playgroud)
你能提供一个工作示例吗?
我想我需要用一些 sklearn 分类器包装 CatBoostClassifier。
谢谢!
我试图了解catboost过拟合检测器。此处描述:
https://tech.yandex.com/catboost/doc/dg/concepts/overfitting-detector-docpage/#overfitting-detector
其他渐变增强包(例如lightgbm和xgboost)使用一个名为early_stopping_rounds的参数,该参数很容易理解(一旦在Early_stopping_round步骤中验证错误没有减少,它就会停止训练)。
但是,我很难理解catboost使用的p_value方法。谁能解释这个过拟合检测器的工作原理以及何时停止训练?