如何对包含分组值的数据集执行数据缩放/标准化?

数据挖掘 机器学习 数据清理 特征工程 预处理
2021-09-20 18:20:56

所以我有一个数据集,其中包含使用不同给定求解器策略执行问题实例的结果。简化示例:

| Problem_instance | Problem_Size | Used_Solver | Cost |
| P1               |           50 | A           |   75 |
| P1               |           50 | B           |  125 |
| P1               |           50 | C           |  225 |
| P1               |           50 | D           |  100 |
| P2               |          150 | A           |  165 |
| P2               |          150 | B           |  360 |
| P2               |          150 | C           |  275 |
| P2               |          150 | D           |   45 |
| P3               |           25 | A           |   35 |
| P3               |           25 | B           |   65 |
| ...              |          ... | ...         |  ... |

我正在尝试使用机器学习来预测给定问题实例的最佳性能求解器。在数据处理阶段,我需要标准化或缩放我的数据,但我不确定如何做到最好。

首先,我不确定要使用哪个 sklearn 的 Scaler ( StandardScalar/ MinMaxScaler/..)。

其次,我很困惑如何处理每个实例的不同记录。当我首先基于problem_instance然后使用 a对数据进行分组时MinMaxScaler,带有的记录Cost = 0将是这个问题的最佳解决方案,Cost=1也是最坏的解决方案。但是,如果我使用相同的策略来缩放,Problem_Size这将在任何地方都等于 0。另一方面,如果我使用全局缩放,则有关哪个 Solver 对每个实例最好的信息都会丢失。

有人可以帮我处理这个问题的数据预处理吗?

1个回答

这个问题没有一个正确的答案,因为哪种缩放器效果最好实际上取决于您用来进行预测的数据和算法。您应该尝试不同的缩放器与不同的算法相结合,通过比较每个管道的交叉验证结果来决定哪种预处理是最好的。

当然,你没有无限的时间。我会:

  1. 先看全局成本分布,看你是否认为需要改造目标,让它更正常
  2. 考虑一个基于树的算法,它不需要你扩展你的 Problem_Size
  3. 首先在全球范围内扩展,然后如果您有时间尝试根据问题类型进行扩展

你最终会耗尽时间或耐心,但我认为按照这个顺序进行会最有效地利用你的时间。

请记住,对于每个问题,没有一种最好的方法。