相关系数解释--特征选择
Correlation coefficient explanation--Feature Selection
如何根据相关系数确定要从我们的模型中删除的变量。
参见下面的变量示例:
Top 10 Absolute Correlations:
Variable 1 Variable 2 Correlation Value
pdays pmonths 1.000000
emp.var.rate euribor3m 0.970955
euribor3m nr.employed 0.942545
emp.var.rate nr.employed 0.899818
previous pastEmail 0.798017
emp.var.rate cons.price.idx 0.763827
cons.price.idx euribor3m 0.670844
contact cons.price.idx 0.585899
previous nr.employed 0.504471
cons.price.idx nr.employed 0.490632
自变量相关矩阵热图":
问题:
1)如何从计算的两个变量之间的相关值中删除一个高相关变量
Ex: pdays 和 pmonths 之间的相关值为 1.000000
要从模型中删除哪个变量?天或 p 月?变量是如何确定的?
2)考虑删除变量的相关阈值范围是多少?例如:>0.65 或 >0.90 等
3)能否解释一下上面的热图,并解释一下要删除的变量及其原因?
您可以使用 sklearn 轻松做到这一点。
from sklearn.feature_selection import VarianceThreshold
X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
selector = VarianceThreshold(threshold=0.2)
X = selector.fit_transform(X)
print(X)
X 是去除所有与其他变量相关性低的不必要变量的结果
您可以尝试使用另一个 selection 标准在每对高度相关的特征之间进行选择。例如,您可以使用信息增益 (IG),它衡量一个特征提供了多少关于 class 的信息(即它的熵减少 [TAL14]、[SIL07])。一旦检测到一对高度相关的特征(例如,正如您提到的 pdays 和 pmonths),您可以测量每个变量的 IG 和保留IG最高的那个。尽管如此,您还可以应用其他 selection 标准来代替 IG(例如,互信息最大化 [BHS15])。
对于阈值,你可以选择你想要的值(这取决于你的问题)。然而,为了安全起见,我会 select 一个高值(例如 0.95),尽管你也可以考虑 0.94 或 0.9 左右的值。此外,您始终可以稳定一个高值,然后降低该值来检查模型的性能。
[TAL14] 唐吉良、Salem Alelyani 和刘欢。 Feature selection for classification:综述,第 37-64 页。 CRC出版社, 1 2014.
[SIL07] Yvan Saeys、Iñaki Inza 和 Pedro Larrañaga。生物信息学中特征 select 离子技术综述。生物信息学, 23(19):2507–2517, 2007.
[BHS15] 穆罕默德·本纳萨尔、尤利娅·希克斯、罗西扎·塞奇。使用联合互信息最大化的特征 selection。专家系统与应用,42(22):8520-8532,2015.
在这里我列出一些其他答案没有涵盖的方面
天,月是的,它们是相关的 - 尝试生成其他特征,因为这些是 周期性特征,因此您可以生成其他不一定相关的特征.阅读更多 here
特征selection的整个过程必须在交叉验证或hold-out数据中完成,否则,你是在引入偏见和过度拟合你的模型。例如,您可以 select 基于截断的特征,然后根据其余数据建立模型并评估性能以查看性能如何。您始终可以使用 scikit-learn 管道自动且很好地找到这些阈值。使用网格搜索。
如果您使用像 lasso 这样的线性模型 - 它们会自动执行这些 selection!
关于阈值,这很难 - 但您也可以根据您可用的数据点数量来获得 top-n 特征。
相关系数是一个线性模型,如果协变量在线性方面非常不同,它们在非线性方面可能非常相似 space。要了解更多信息,您可以查看与 互信息 相关的论文以找到大量示例。
我的回答与您提出的问题没有直接关系 - 但我相信它们对于从更大的角度考虑和有益于您的建模很重要。
如何根据相关系数确定要从我们的模型中删除的变量。
参见下面的变量示例:
Top 10 Absolute Correlations:
Variable 1 Variable 2 Correlation Value
pdays pmonths 1.000000
emp.var.rate euribor3m 0.970955
euribor3m nr.employed 0.942545
emp.var.rate nr.employed 0.899818
previous pastEmail 0.798017
emp.var.rate cons.price.idx 0.763827
cons.price.idx euribor3m 0.670844
contact cons.price.idx 0.585899
previous nr.employed 0.504471
cons.price.idx nr.employed 0.490632
自变量相关矩阵热图":
问题:
1)如何从计算的两个变量之间的相关值中删除一个高相关变量
Ex: pdays 和 pmonths 之间的相关值为 1.000000 要从模型中删除哪个变量?天或 p 月?变量是如何确定的?
2)考虑删除变量的相关阈值范围是多少?例如:>0.65 或 >0.90 等
3)能否解释一下上面的热图,并解释一下要删除的变量及其原因?
您可以使用 sklearn 轻松做到这一点。
from sklearn.feature_selection import VarianceThreshold
X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
selector = VarianceThreshold(threshold=0.2)
X = selector.fit_transform(X)
print(X)
X 是去除所有与其他变量相关性低的不必要变量的结果
您可以尝试使用另一个 selection 标准在每对高度相关的特征之间进行选择。例如,您可以使用信息增益 (IG),它衡量一个特征提供了多少关于 class 的信息(即它的熵减少 [TAL14]、[SIL07])。一旦检测到一对高度相关的特征(例如,正如您提到的 pdays 和 pmonths),您可以测量每个变量的 IG 和保留IG最高的那个。尽管如此,您还可以应用其他 selection 标准来代替 IG(例如,互信息最大化 [BHS15])。
对于阈值,你可以选择你想要的值(这取决于你的问题)。然而,为了安全起见,我会 select 一个高值(例如 0.95),尽管你也可以考虑 0.94 或 0.9 左右的值。此外,您始终可以稳定一个高值,然后降低该值来检查模型的性能。
[TAL14] 唐吉良、Salem Alelyani 和刘欢。 Feature selection for classification:综述,第 37-64 页。 CRC出版社, 1 2014.
[SIL07] Yvan Saeys、Iñaki Inza 和 Pedro Larrañaga。生物信息学中特征 select 离子技术综述。生物信息学, 23(19):2507–2517, 2007.
[BHS15] 穆罕默德·本纳萨尔、尤利娅·希克斯、罗西扎·塞奇。使用联合互信息最大化的特征 selection。专家系统与应用,42(22):8520-8532,2015.
在这里我列出一些其他答案没有涵盖的方面
天,月是的,它们是相关的 - 尝试生成其他特征,因为这些是 周期性特征,因此您可以生成其他不一定相关的特征.阅读更多 here
特征selection的整个过程必须在交叉验证或hold-out数据中完成,否则,你是在引入偏见和过度拟合你的模型。例如,您可以 select 基于截断的特征,然后根据其余数据建立模型并评估性能以查看性能如何。您始终可以使用 scikit-learn 管道自动且很好地找到这些阈值。使用网格搜索。
如果您使用像 lasso 这样的线性模型 - 它们会自动执行这些 selection!
关于阈值,这很难 - 但您也可以根据您可用的数据点数量来获得 top-n 特征。
相关系数是一个线性模型,如果协变量在线性方面非常不同,它们在非线性方面可能非常相似 space。要了解更多信息,您可以查看与 互信息 相关的论文以找到大量示例。
我的回答与您提出的问题没有直接关系 - 但我相信它们对于从更大的角度考虑和有益于您的建模很重要。