【问题标题】:Multi-features modeling based on one binary-feature which is rarely 1 (imbalanced data) when there is a cost基于一个二元特征的多特征建模,当有成本时,该二元特征很少为 1(不平衡数据)
【发布时间】:2019-12-26 05:24:31
【问题描述】:

我需要对多变量时间序列数据进行建模,以预测很少为 1 的二进制目标(不平衡数据)。 这意味着我们要建模基于一个特征是二元(爆发),很少是1? 所有的特征都是二元的,很少是 1。 建议的解决方案是什么?

此功能对基于以下成本函数的成本函数产生影响。如果成本与以下相同,我们想知道是否准备好。

问题定义: 基于爆发的模型,很少为 1。

为避免疾病爆发做好准备或未做好准备,爆发的成本是准备的20倍

每天(次日)的费用: 成本=20*爆发*!准备+准备

Model:prepare(prepare for next day)for哪几天爆发?

问题:

  • 建立模型来预测疫情?

  • 报告每年的成本估算

csv file is uploaded 和数据是一天结束 csv 文件包含行,每行是一天,具有不同的特征,其中一些是二进制的,最后一个特征是爆发,很少是 1,并且是考虑成本的主要特征。

【问题讨论】:

  • 你的目标似乎是监督预测,为什么要使用标签聚类分析?
  • [stackoverflow.com/users/1060350/anony-mousse] 因为没有关于准备的信息
  • 但“星期一”也是如此。什么会阻止集群聚集在星期一与其他日子?你有一个特定的情况,即使在不被观察的情况下,你也应该使用定制的模型。
  • 但准备在成本函数中很重要
  • 那现在就优化代价函数?

标签: python-3.x feature-selection multiclass-classification imbalanced-data


【解决方案1】:

你在描述阶级不平衡。

典型的方法是生成平衡的训练数据 通过反复运行包含的示例 你的(罕见的)正面课程, 并且每次选择一个新的随机样本 来自否定类。

另外,请注意您的成本函数。 你不会想要奖励一个简单的模型 因为总是选择多数派。

【讨论】:

  • 你是对的!我已经上传了 csv 文件和成本函数!稀有特征变为 1 时,成本是 20 倍!由于这是针对疾病的,尽管为疾病做准备是昂贵的,但很少发生爆发的成本要高出 20 倍!因此,一个简单的模型并不适合,因为它的成本很高
【解决方案2】:

我的建议:

监督方法

  • SMOTE 用于上采样
  • Xgboost 通过调整 scale_pos_weight
  • 复制少数类,例如:10 次
  • 尝试使用集成树算法,尝试生成线性表面对您的情况来说是有风险的。
  • 由于您的数据是时间序列,您可以在真正的疾病发生之前生成少数类的天数。例如,您在 2010-07-20 有少数族裔班级。在此之前的最后一次观察是 2010-06-27。您可以通过稍微改变方差(如 2010-07-15、2010-07-18 等)来生成观察结果。

无监督方法

  • 尝试异常检测算法。比如IsolationForest(也可以试试扩展版)。
  • 集群您的观察检查少数类本身是否成为集群。如果成功,您可以使用集群名称(cluster1、cluster2、cluster3 等)标记数据,然后训练决策树以查看拆分模式。 (Kmeans + DecisionTreeClassifier)

模型评估

设置成本矩阵。不要直接使用混淆矩阵精度等。您可以在此处找到有关成本矩阵的更多信息:http://mlwiki.org/index.php/Cost_Matrix

注意:

根据 OP 在 cmets groupby year 中的问题可以这样完成:

df["date"] = pd.to_datetime(df["date"])
df.groupby(df["date"].dt.year).mean()

您也可以使用其他聚合器(平均值、总和、计数等)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多