本人希望从0开始,自己的Kaggle竞赛
- 12月拿到自己的第一块Kaggle奖牌
- 短期内读完Abhishek Thakur的Approaching (Almost) Any Machine Learning Problem并且发博客记录https://github.com/abhishekkrthakur/approachingalmost
- 12月至少发21篇博客
- 每天保持八小时的学习时间
Approaching categorical variables(理论部分)
首先文章中将变量分为:
无序和有序
又进一步添加了循环和二元变量
又给出了当我们使用OneHotEncode进行变量编码时,可以使用sparse矩阵进行存储,以节省空间。
可以使用groupby来进行统计
进一步的可以使用transform来直接构造一个servic
对于模型预料之外的值的处理
None值,直接把空白值赋值为None,交给模型训练
Rare值,当部分值出现的次数过少,可以把这些值转换为Rare值,当模型后续使用过程中接受到未知的非None值的时候,可以直接归类为Rare。
★不同编码方式的影响
文中有提到:
This type of encoding (LabelEncoder) cannot be used in linear models, support vector machines or neural networks as they expect data to be normalized (or standardized).
本人理解为可能是因为此类线性模型对于变量的相对大小非常敏感,使用LabelEncoder编码后的变量直接存在相对大小。
LabelEncoder:
适用算法: 随机森林、XGBoost 等树模型。
原因: 树模型对于特征的顺序关系不敏感,只关心数据的分布,而不关心具体的数值。LabelEncoder将类别型变量映射为整数,不引入额外的维度,能够更好地适应树模型的特性。树模型能够根据特征的相对大小进行自动分裂,因此不需要进行 One-Hot 编码。
One-Hot 编码:
适用算法: 线性模型,如逻辑回归。
原因: 线性模型假设特征之间是线性相关的,因此特征的数值大小对模型的影响很大。使用 One-Hot 编码可以将类别型变量的每个类别都转换为一个新的二进制特征,避免了数值大小的影响,确保了每个类别在模型中的权重独立。逻辑回归等线性模型在处理独热编码后的数据时更容易学到类别之间的线性关系。
需要注意,使用了One-Hot之后要使用稀疏矩阵或者使用奇异值。