其实Catboost自带处理类别数据的功能。但还是学习一下。
Label Encoding与One Hot的区别-20180513
1.两类模型:
(A)逻辑回归,SVM。
对数值大小是敏感的,即变量间的数值大小本身是有比较意义的。
(B)树模型。
对数值变化不敏感,数值存在的意义更多的是为了排序,即0.1,0.2,0.3与1,2,3是没有区别的,这部分模型绝大部分是。
2.两类类别变量:
2.1有序变量
例如:典型的有序变量就是学历,如博士研究生,硕士研究生,本科生等在业务含义上本身是有高低之分的.
2.2无序变量
无序变量在业务含义上是无序的,如品牌等。
3.Label Encoding与One Hot的使用场景:
(A)类模型
- 所有的类别变量必须做one hot encoding,因为label encoding的赋值是没有数值含义的。
- 但是对于类别很多的变量,做one hot encoding会使得生成的变量过于稀疏,所以这里有一些经验上的处理方式。优先考虑的是有没业务上类别合并的方法,如城市变量,可以依发展程度分为一线城市,二线城市等等;另外一种方法是只one hot出现次数最多的前n个类别,其他类别放在其他类的变量中;也可以利用y值(训练集)中positive rate做合并,不过容易出现过拟合的现象。