You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

零膨胀回归模型仅输出两类预测值,如何优化覆盖全部9个计数类别?

优化零膨胀计数预测模型的方案

针对你遇到的零膨胀计数预测问题(98.4%为0,目标取值0-9),结合当前模型的问题,给出以下优化方向:

1. 纠正预测后处理逻辑

首先停止将模型输出通过阈值转成0/1的操作。ZeroInflatedRegressor的设计逻辑是:先通过分类器判断样本是否为0,再对非0样本用回归器预测计数值,最终输出的是连续型的计数预测值,你只需将其取整(如np.round())即可得到0-9的离散计数结果,无需额外阈值转换。

2. 调整零膨胀模型的组件

分类模块(判断是否为0)

  • 替换SVC为更适合不平衡二分类的模型:
    • 用LogisticRegression并设置class_weight='balanced',自动给少数类(非0样本)赋予更高权重;
    • 或选用XGBoost/LightGBM分类器,通过scale_pos_weight参数(设置为len(0样本)/len(非0样本))平衡类别权重,这类模型对不平衡数据的拟合能力更强。

回归模块(预测非0计数值)

  • 替换LinearRegression为更适配计数数据的模型:
    • 选用泊松回归或负二项回归:这类模型专为计数数据设计,能捕捉计数的离散分布特性,比线性回归更适合处理0-9的离散计数;
    • 或用XGBRegressor/LightGBMRegressor,通过设置sample_weight给高计数(>3)样本赋予更高权重,强制模型关注稀有类别。

3. 数据层面优化

  • 分层采样划分数据集:训练/验证/测试集划分时采用分层采样,确保每个计数类别(尤其是>3的稀有类)都有样本进入训练集,避免模型完全没见过高计数样本;
  • 过采样稀有类别:对非0样本中的高计数(>3)样本,使用SMOTE或ADASYN算法做过采样,增加这类样本的数量,提升模型对其的拟合能力;
  • 特征工程强化:挖掘能区分高计数样本的特征,比如构建交互特征、聚合统计特征(如特征的分位数、频次),或对连续特征做分箱处理,帮助模型捕捉稀有类的特征模式。

4. 损失与权重策略调整

  • 给模型添加样本权重:分类模块中给非0样本更高权重,回归模块中给高计数样本设置与样本量成反比的权重(如weight = total_samples / (class_samples * num_classes));
  • 替换回归损失函数:放弃MSE,改用对 outliers 更鲁棒的MAE,或自定义损失函数——对高计数样本的预测误差施加更大惩罚,比如当真实值>3时,误差乘以2倍权重。

5. 改用多阶段多分类策略

如果回归方式仍难以覆盖全类别,可以拆分模型为两阶段:

  1. 第一阶段:二分类模型(0 vs 非0),识别样本是否为0;
  2. 第二阶段:对非0样本训练多分类模型(目标为1-9),设置class_weight='balanced'平衡各类别权重,直接输出离散的计数类别。
    这种方式更贴合0-9的离散计数目标,能直接解决多数类别无预测样本的问题。

6. 调整评估指标

  • 分类场景下:放弃普通分类报告的准确率,改用加权F1-score、Kappa系数评估整体性能,同时重点关注高计数类别的召回率(确保模型能捕捉到这类样本);
  • 回归场景下:用MAE、Poisson deviance(泊松偏差)替代MSE,更贴合计数数据的分布特性。

内容的提问来源于stack exchange,提问作者user14738548

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:15:43