我正在尝试使用lightgbm对4类问题进行分类。但是这四个类别是不平衡的,接近2000:1:1:1。
在lightgbm中,参数'is_unbalance'和scale_pos_weight仅用于二进制分类。
params = {
'objective':'multiclassova',
'num_class':4,
'is_unbalance':True,
'metric': 'multi_logloss',
'max_depth':2,
'learning_rate':0.15,
'feature_fraction':0.8,
'bagging_fraction':0.8,
'bagging_freq':4,
'reg_alpha':5,
'reg_lambda':3,
'cat_smooth':0,
'num_iterations':53,
}
lgb_train = lgb.Dataset(X_train,Y_train,
categorical_feature=category_feature)
gbm = lgb.train(params,lgb_train)
答案 0 :(得分:0)
您可以参考以下链接: https://github.com/Microsoft/LightGBM/blob/master/docs/Parameters.rst#weight_column
详细信息: 参数名称:weight_column,默认=“”,类型= int或字符串,别名:weight
关于使用的一些注意事项:
答案 1 :(得分:0)
要使用lightgbm构建分类器,请使用LGBMClassifier。 LGBMClassifier具有参数 class_weight ,通过它可以直接处理不平衡数据。
对于您的特定问题,您可以执行以下操作:(最后添加参数class_weight)
params = {
'objective':'multiclassova',
'num_class':4,
'is_unbalance':True,
'metric': 'multi_logloss',
'max_depth':2,
'learning_rate':0.15,
'feature_fraction':0.8,
'bagging_fraction':0.8,
'bagging_freq':4,
'reg_alpha':5,
'reg_lambda':3,
'cat_smooth':0,
'num_iterations':53,
'class_weight':{'class_label1':2000, 'class_label2':1, 'classlabel3':1, 'classlabel4':1}
}
有关更多信息,请查看LGBMClassifier的文档,尤其是参数https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMClassifier.html。