【问题标题】:Algorithm match class distribution of two datasets两个数据集的算法匹配类分布
【发布时间】:2018-12-15 12:23:31
【问题描述】:

我有 MC(蒙特卡洛/模拟)和数据,每个数据都有 0 和 1 两个类中的事件。我正在尝试编写一个算法,以便我可以将 MC 的 0 类和 1 类中的事件数与数据相匹配,即我想通过将 MC 事件从一个类移动到另一个类来纠正 MC 事件,以便数据和 MC 的两个类中的事件比率相同。我进行的方式是:

  1. 从 scikit ensemble 分别为数据和 MC 训练一个 GradientBoostingClassifier(比如 data_clf 和 mc_clf)

     mc_clf.fit(X_mc, Y_mc)
     data_clf.fit(X_data , Y_data)
    
  2. 现在,如果 X_mc 是我的输入变量,则使用 predict_proba 来预测数据分类器和 MC 仅使用 MC 输入的概率,即

     y_mc = smcclf.predict_proba(X_mc)
     y_data = sdataclf.predict_proba(X_mc)
    
  3. 在此之后,我尝试通过比较数据和 MC 中的概率来将 MC 的事件从一个类移动到另一个类。

     for i in range(0, len(mc)):
         if (mc.loc[i]['mc_class'] == 0): 
             wgt = y_data[i][0]/ y_mc[i][0]
             if (wgt<1): mc.loc[i]['mc_class_corrected'] = 1
             else: mc.loc[i]['mc_class_corrected'] = mc.loc[i]['mc_class'] 
    
    
         if (mc.loc[i]['mc_class'] == 1): 
             wgt = y_data[i][1]/ y_mc[i][1]
             if (wgt<1) : mc.loc[i]['mc_class_corrected'] = 0
             else: mc.loc[i]['mc_class_corrected'] = mc.loc[i]['mc_class'] 
    

最后会发生什么,最初假设与数据相比,我在 MC 中的 0 类事件多于 1 类事件。所以我预计 0 类的事件会转移到 1 类。但是,我发现我在 MC 的 0 类中几乎 >95% 的事件会转移到 1 类,而我预计只有大约 30% 的事件会转移(相比之下数据和 MC 中的事件数)? 这种工作思想有什么错误吗?

非常感谢:)

【问题讨论】:

  • @desertnaut 并不是没有尝试解决它。​​它没有按照我在“添加”中提到的使用概率条件的方式工作
  • 一个尝试意味着一个编码尝试,必须展示和分享,否则这里的问题是题外话
  • 也许 CrossValidated SE 更适合这个问题?
  • MC到底是什么?
  • @MohammedKashif 蒙特卡洛事件或模拟事件。我所说的数据是指真实的数据事件。

标签: algorithm machine-learning scikit-learn classification


【解决方案1】:

可能是一个不适合 stackoverflow 的问题,如果您在其他地方发布,请告诉我并可以移动它。但要指出我看到的一些问题:

  • 为什么 MC 模拟不能生成正确的类权重?鉴于数据的正确先验分布,它应该能够做到。 “纠正”输出似乎是躲闪。
  • 您似乎使用分类器的概率比来确定类是否应该改变,而不是实际的类比。所以永远不能指望它得到“正确”的类分布。
  • 所有这一切都在告诉你(如果大多数是从 0 切换到 1)是 y_mc[i][0] > y_data[i][0]。因此它对 MC 分类器为 0 更有信心,因此将其切换为 1。
  • 如果 y_mcy_data 的分类器始终是 MC 分类器,它显然会更有信心预测 MC 数据,因为它是在训练的基础上进行的。
  • 您没有训练或测试分裂,因此上述关于始终更加自信的观点被放大了,因为您将严重过度拟合 X_mc 集。

如果没有样本数据(查看预测的实际值等)或实际代码(分类器名称发生变化,而不是实际代码),很难判断这些点的准确度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多