如何使用机器学习模型(或其特征系数)来解释该特征是不是与特定类别相关?
Posted
技术标签:
【中文标题】如何使用机器学习模型(或其特征系数)来解释该特征是不是与特定类别相关?【英文标题】:How a machine learning model ( or its feature coefficients ) can be used to interpret if that features are relevant for a particular class?如何使用机器学习模型(或其特征系数)来解释该特征是否与特定类别相关? 【发布时间】:2015-06-30 05:26:20 【问题描述】:我有一个数据集,其中包含教育、经验、加入月份等特征,我的预测是一个人是否接受报价。我创建了一些使用 sk-learn SVM、Randomforest 等的模型。我的目标是了解哪些特征在确定一个人是否加入时起着至关重要的作用。我认为这是一个分类问题。
创建模型后,我获得了 model.coeffc_ (如在 sklearn 中),它给出了每个特征的系数值。 假设我在 12 月得到 0.0028,我怎么能解释这个月对一个人是否加入有影响。它可能会影响,加入的人,而不是拒绝。有可能,对吧?那么,每个特征的这些系数值如何确定,类别(尤其是哪个类别)?
在回归中,我们可以说 12 月的 0.028 值会影响值的增长,而 -0.028 会影响值的降低。但是,这个想法如何用于分类?请提供一些有价值的见解。
【问题讨论】:
欢迎来到 ***!这个问题与编程没有直接关系,而是与纯机器学习有关。请考虑将其移至 stats.stackexchange.com @KeillЯandor - 会这样做。谢谢。 【参考方案1】:回归和分类在这里没有太大区别。正值总是与被分类为正类的机会增加相关,而负值则与成为负样本的机会相关(我假设你的所有特征都是正的,否则你会失去任何意义)。但请注意,在分类和回归中不正确如果一个权重大于另一个权重,则一个特征更重要。有许多方面会改变这种行为,特别是特征值比例、方差、一般特征值分布。
简而言之。如果您的特征是正值,则该特征的 符号 显示该特征与哪个类别的相关性更高。线性模型(例如线性 SVM,而不是 RF)中的一般分类过程是
cl(x) = sign( SUM_i coef_i x_i )
所以你可以看到,如果x_i
是正数,那么coef_i
的符号要么上升(对于正数)要么降低(对于负数)cl(x) = 1
的机会。但是,如果您有例如 coef_1 = 1
和 coef_2=180
这并不意味着第二个特征更重要,这可能是因为第二个特征值更小,例如特征 1 可能是人的身高以厘米为单位(例如 180 厘米),而另一个特征是二进制(0 或 1)所以
x_1 * coef_1 = 180 * 1 = 180 = 1 * 180 = x_2 * coef_2
每个特征的实际重要性是机器学习社区中称为“特征重要性”或“特征选择方法”的整个研究领域。有几十种这样的方法,没有一种是简单的“最好的”。
【讨论】:
很好的解释。大多数特征是“是”或“否”。所以,1 或 0。有些是连续的。那么,在我得到模型的准确率、精确度和召回率之后,我该如何解释,哪些特征更适合将新数据用于特定类别? 正如我所说 - 没有对此类问题的答案,有很多方法可以回答它,谷歌搜索“特征重要性”,这是 ml 中的一个广泛主题。如果你的特征是条件独立并且都是0和1,那么绝对值就是一个明确的指标;然而,一般特征从不条件独立,因此这远不是一个简单的问题以上是关于如何使用机器学习模型(或其特征系数)来解释该特征是不是与特定类别相关?的主要内容,如果未能解决你的问题,请参考以下文章
机器学习实战基础(十七):sklearn中的数据预处理和特征工程特征选择 之 Embedded嵌入法
机器学习实战基础(十七):sklearn中的数据预处理和特征工程特征选择 之 Embedded嵌入法