关于one-hot编码引发相关问题的一点感想

one-hot编码为什么可以解决类别型数据的离散值问题
首先,one-hot编码是N位状态寄存器为N个状态进行编码的方式
eg:高、中、低不可分,→ 用0 0 0 三位编码之后变得可分了,并且成为互相独立的事件
→ 类似 SVM中,原本线性不可分的特征,经过project之后到高维之后变得可分了
GBDT处理高维稀疏矩阵的时候效果并不好,即使是低维的稀疏矩阵也未必比SVM好
Tree Model不太需要one-hot编码:
对于决策树来说,one-hot的本质是增加树的深度
tree-model是在动态的过程中生成类似 One-Hot + Feature Crossing 的机制
1. 一个特征或者多个特征最终转换成一个叶子节点作为编码 ,one-hot可以理解成三个独立事件
2. 决策树是没有特征大小的概念的,只有特征处于他分布的哪一部分的概念
one-hot可以解决线性可分问题 但是比不上label econding
one-hot降维后的缺点:
降维前可以交叉的降维后可能变得不能交叉
树模型的训练过程:
从根节点到叶子节点整条路中有多少个节点相当于交叉了多少次,所以树的模型是自行交叉
eg:是否是长的 { 否(是→ 柚子,否 → 苹果) ,是 → 香蕉 } 园 cross 黄 → 形状 (圆,长) 颜色 (黄,红) one-hot度为4的样本
使用树模型的叶子节点作为特征集交叉结果可以减少不必要的特征交叉的操作 或者减少维度和degree候选集
eg 2 degree → 8的特征向量 树 → 3个叶子节点
树模型:Ont-Hot + 高degree笛卡尔积 + lasso 要消耗更少的计算量和计算资源
这就是为什么树模型之后可以stack线性模型
n*m的输入样本 → 决策树训练之后可以知道在哪一个叶子节点上 → 输出叶子节点的index → 变成一个n*1的矩阵 → one-hot编码 → 可以得到一个n*o的矩阵(o是叶子节点的个数) → 训练一个线性模型
典型的使用: GBDT + RF
优点 : 节省做特征交叉的时间和空间
如果只使用one-hot训练模型,特征之间是独立的
对于现有模型的理解:(G(l(张量))):
其中:l(·)为节点的模型
G(·)为节点的拓扑方式
神经网络:l(·)取逻辑回归模型
G(·)取全连接的方式
决策树: l(·)取LR
G(·)取树形链接方式
创新点: l(·)取 NB,SVM 单层NN ,等
G(·)取怎样的信息传递方式

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