我正在研究一个多标签文本分类问题(目标标签总数 90)。数据分布有一个长尾和大约 1900k 条记录。目前,我正在研究具有相似目标分布的大约 10 万条记录的小样本。
一些算法提供了处理类不平衡的功能,如 PAC、LinearSVC。目前,我也在做 SMOTE 来为除多数和 RandomUnderSampler 之外的所有样本生成样本,以抑制多数类的不平衡。
同时使用算法参数和 imblearn 管道来处理类不平衡是否正确?
feat_pipeline = FeatureUnion([('text', text_pipeline)])
estimators_list = [
('PAC',PassiveAggressiveClassifier(max_iter=5000,random_state=0,class_weight='balanced')),
('linearSVC', LinearSVC(class_weight='balanced'))
]
estimators_ensemble = StackingClassifier(estimators=estimators_list,
final_estimator=LogisticRegression(solver='lbfgs',max_iter=5000))
ovr_ensemble = OneVsRestClassifier(estimators_ensemble)
classifier_pipeline = imblearnPipeline([
('features', feat_pipeline),
('over_sampling', SMOTE(sampling_strategy='auto')), # resample all classes but the majority class;
('under_sampling',RandomUnderSampler(sampling_strategy='auto')), # resample all classes but the minority class;
('ovr_ensemble', ovr_ensemble)
])