OneHotEncoding 后决策树中的特征解释
Feature interpretation in decision tree after OneHotEncoding
我试图了解在对数据执行 OneHotEncoding 以转换分类数据后,决策树如何解释 特征 。
假设在训练数据中我们有 3 个特征(都是分类的)作为 X1、X2、X3。
X1 有 3 个不同的值 (a,b,c),
X2 有 2 个不同的值 (e,f) 和
X3 有 4 个不同的值 (m,n,o,p)。
编码后,使用 sparse = False,结果矩阵的形状为 (X.shape[0], 9)。
现在在拟合决策树模型时,计算信息增益,模型会将其视为9个特征的训练集还是3个特征的训练集?
如果是 3,模型如何知道编号。与特征关联的列数。
如果是 9,特征不会失去重要性吗?
在任何情况下,您的模型都会根据您提供的内容进行工作:
如果您的数据集的形状为 (X.shape[0], 9),则意味着将从您的 3 个类别生成 9 个特征。在这种情况下,每个特征都成为一个布尔指标(即:如果对应于 X1 和值 "a" 的列在一行中的值为 1,则表示该行在 X1 中添加值 "a") .
在另一种情况下,如果你的形状是(X.shape[0], 3),每一列都会有一组数值(即:对于X1:"a" = 0.33 ; "b"=0.66; "c"=1.0), 有效编码分类变量中的字符。
准确回答您的问题:
Now while fitting the decision tree model, to calculate information gain, will the model consider this as training set of 9 features or of 3 features?
模型会考虑你给它什么,如果你给他形状为 (X.shape[0], 9) 的数据,它会计算 9 个特征的信息增益,如果 (X.shape[ 0], 3), 它将计算 3 个特征的信息增益。
If 3, how will model know about the no. of columns associated with a feature.
OneHotEncoding 的意义在于 将唯一字符串的集合转换为唯一 floats/ints 的集合。本质上 IF gain 不关心你的数据是什么样的,它只是 scikit-learn 算法不接受分类变量。为了获得 IF,您的 OneHotEncoding 结果与您的原始数据相同 "value"。
If 9, won't the features lose their importance?
如果您的特征是 布尔指标 而不是编码的分类列,您是否丢失了任何信息?在我看来,不,您只是 以另一种格式 表示 数据集中最初存在的信息!
理论上,没有深度限制,两种方法应该相似的结果,因为你只是改变了表示,而不是关系在数据和您要学习的 类 之间。
唯一的区别是,如果拆分规则只考虑一个特征(在 sklearn 中就是这种情况),一个基于编码特征值的规则 (X1 : "a" = 0.33 ; "b"=0.66; "c"=1.0) 可以在一次拆分中分离更多案例 而不是布尔指标。
我试图了解在对数据执行 OneHotEncoding 以转换分类数据后,决策树如何解释 特征 。
假设在训练数据中我们有 3 个特征(都是分类的)作为 X1、X2、X3。
X1 有 3 个不同的值 (a,b,c), X2 有 2 个不同的值 (e,f) 和 X3 有 4 个不同的值 (m,n,o,p)。
编码后,使用 sparse = False,结果矩阵的形状为 (X.shape[0], 9)。
现在在拟合决策树模型时,计算信息增益,模型会将其视为9个特征的训练集还是3个特征的训练集?
如果是 3,模型如何知道编号。与特征关联的列数。
如果是 9,特征不会失去重要性吗?
在任何情况下,您的模型都会根据您提供的内容进行工作:
如果您的数据集的形状为 (X.shape[0], 9),则意味着将从您的 3 个类别生成 9 个特征。在这种情况下,每个特征都成为一个布尔指标(即:如果对应于 X1 和值 "a" 的列在一行中的值为 1,则表示该行在 X1 中添加值 "a") .
在另一种情况下,如果你的形状是(X.shape[0], 3),每一列都会有一组数值(即:对于X1:"a" = 0.33 ; "b"=0.66; "c"=1.0), 有效编码分类变量中的字符。
准确回答您的问题:
Now while fitting the decision tree model, to calculate information gain, will the model consider this as training set of 9 features or of 3 features?
模型会考虑你给它什么,如果你给他形状为 (X.shape[0], 9) 的数据,它会计算 9 个特征的信息增益,如果 (X.shape[ 0], 3), 它将计算 3 个特征的信息增益。
If 3, how will model know about the no. of columns associated with a feature.
OneHotEncoding 的意义在于 将唯一字符串的集合转换为唯一 floats/ints 的集合。本质上 IF gain 不关心你的数据是什么样的,它只是 scikit-learn 算法不接受分类变量。为了获得 IF,您的 OneHotEncoding 结果与您的原始数据相同 "value"。
If 9, won't the features lose their importance?
如果您的特征是 布尔指标 而不是编码的分类列,您是否丢失了任何信息?在我看来,不,您只是 以另一种格式 表示 数据集中最初存在的信息!
理论上,没有深度限制,两种方法应该相似的结果,因为你只是改变了表示,而不是关系在数据和您要学习的 类 之间。
唯一的区别是,如果拆分规则只考虑一个特征(在 sklearn 中就是这种情况),一个基于编码特征值的规则 (X1 : "a" = 0.33 ; "b"=0.66; "c"=1.0) 可以在一次拆分中分离更多案例 而不是布尔指标。