为什么树模型不需要对特征进行one-hot编码、归一化、或者woe编码等预处理呢?

为什么树模型不需要对特征进行one-hot编码、归一化、和woe编码等预处理呢?

1、树模型是要寻找最佳分裂点,对于离散特征,树模型会评估每个离散值的信息增益,将信息增益最大的数值作为分裂点,因此,树模型不需要对离散特征进行事先one-hot处理,否则会使特征维度增大且稀疏,不仅会增加模型的计算量,而且会损失数据的信息量造成模型的效果不佳,以及过拟合的风险。

2、对于连续型特征,树模型对尝试对连续特征分桶,将信息增益最大的桶边界值最为分裂点。因此也不需要事先对连续特征进行分桶和woe编码。

3、另外,树模型是找最佳分裂点,是否对数据进行归一化,不影响最佳分裂点的计算,因此也无需进行数据归一化处理。

因此,对于新手来说,树模型无需进行过多的数据预处理,可以作为首先尝试的模型。

那么什么模型需要进行分桶、one-hot编码、归一化呢?可以从算法的原理来判断
(1)LR:LR模型本质上是线性回归模型计算得到一个得分,然后用sigmoid函数将得分映射到0-1区间,将该0-1区间上的数作为预测概率值。对于线性回归模型,需要计算每个特征对应的权重,然后将所有特征值进行加权求和得到分数,因此需要自变量和目标变量之间具有线性相关性。另外,在更新特征的权重时使用梯度下降法,需要不断计算误差函数的梯度。当不进行特征归一化时,当某个特征的量纲较大,导致该特征的权重稍一更新,预测结果就波动较大,使得模型较难收敛。当归一化到同一个量纲上时,模型会持续向误差较小的方向收敛,会加快模型的收敛速度。woe编码就是计算特征跟目标变量的相关度,使得编码后的值跟目标变量有线性相关性,而且woe的取值一般是在【-1,1】之间,起到了数据归一化的目的,因此在LR中广泛使用woe编码。
(2)深度学习算法:深度学习算法可以看作是多层的LR算法模型,也需要用梯度下降的方法更新模型的参数权重,因此也需要进行归一化。

你可能感兴趣的:(机器学习算法)