为什么或何时将数值数据转换为分类数据?

数据挖掘 机器学习 数据科学模型 分类数据
2022-03-02 10:44:29

这是一个开放式的WHY TOWHEN TO问题,而不是关于如何将数字编码为分类数据的问题。

我目前正在研究 来自kaggle的Telco Customer Churn数据集。

这是预测客户是否会流失的分类问题

它共有7043 行21 列,混合了分类列和数字列。其中一列是Tenure,其数据分布在范围内

> df.tenure.unique()

array([ 1, 34,  2, 45,  8, 22, 10, 28, 62, 13, 16, 58, 49, 25, 69, 52, 71,
       21, 12, 30, 47, 72, 17, 27,  5, 46, 11, 70, 63, 43, 15, 60, 18, 66,
        9,  3, 31, 50, 64, 56,  7, 42, 35, 48, 29, 65, 38, 68, 32, 55, 37,
       36, 41,  6,  4, 33, 67, 23, 57, 61, 14, 20, 53, 40, 59, 24, 44, 19,
       54, 51, 26, 39])

在一个公共内核中,我看到那个人把它变成了一个分类列。

> pd.cut(df['tenure'], bins=[0,12,24,48, 60, df['tenure'].max()], labels=['Tenure_0-12', 'Tenure_12-24', 'Tenure_24-48','Tenure_48-60','Tenure_gt_60'])
0        Tenure_0-12
1       Tenure_24-48
2        Tenure_0-12
3       Tenure_24-48
4        Tenure_0-12
            ...     
7027    Tenure_12-24
7028    Tenure_gt_60
7029     Tenure_0-12
7030     Tenure_0-12
7031    Tenure_gt_60
Name: tenure, Length: 7032, dtype: category

对一些数字列进行分组/分箱是一种常见的做法(通常使用日期/时间列,如年龄、季节性)。我不太确定在各种传统 ML 算法中这样做的好处。

一些对维度敏感的算法可能会表现不佳,因为新创建的分类列的 One-Hot 编码会增加维度的数量。

合理地,将列分组到 bin 中,将目标聚类以供 K-NearestNeighbour 或 SVM 等算法查找平面非常困难。

请!让我们讨论一下这种技术对不同 ML 算法的影响(不仅限于传统或分类算法)。

1个回答

将数值数据转换为分类数据的原因之一是提高信噪比。将模型拟合到 bin 可以减少数据中的小波动对模型的影响,通常小波动只是噪声。每个 bin 都“平滑”了数据部分中的波动/噪声。