簡單粗暴!低方差濾波VS高相關(guān)濾波,哪個更簡單?一招讓你的數(shù)據(jù)變得輕松無比?。ㄏ拢?/h1>
上回小云給大家介紹了低方差濾波,那么今天小云就繼續(xù)講講上次挖的坑~高相關(guān)濾波~
?
高相關(guān)濾波是一種特征選擇方法高相關(guān)濾波是一種常用的特征選擇方法,其基本思想是通過篩選掉相關(guān)性高的特征,來降低數(shù)據(jù)的維度和復(fù)雜度,從而提高機器學(xué)習(xí)模型的性能和效率。高相關(guān)濾波認(rèn)為當(dāng)兩列數(shù)據(jù)變化趨勢相似時,它們包含的信息也相似。因此,使用相似列中的一列就可以滿足機器學(xué)習(xí)模型的需求,從而減少特征的數(shù)量,提高模型的泛化能力和可解釋性。
?
對于數(shù)值列之間的相似性,通常使用相關(guān)系數(shù)來表示,如Pearson相關(guān)系數(shù)、Spearman相關(guān)系數(shù)等。對于名詞類列的相關(guān)性,可以通過計算卡方值來表示。相關(guān)系數(shù)大于某個閾值的兩列只保留一列,從而減少特征數(shù)量,提高模型的效率。
?
例如,在基因表達(dá)數(shù)據(jù)中,如果一個基因的表達(dá)量與另一個基因的表達(dá)量之間的相關(guān)系數(shù)較高,那么這個兩個基因可能在疾病的發(fā)生和發(fā)展中的貢獻(xiàn)類似。因此,根據(jù)高相關(guān)濾波的原理,我們可以選擇相關(guān)系數(shù)低于閾值或與目標(biāo)表達(dá)量相關(guān)的前N個相關(guān)性指標(biāo)較高的基因,將其保留下來用于后續(xù)的差異表達(dá)分析、生物通路分析或建模等。
?
高相關(guān)濾波的實現(xiàn)過程通常包括以下幾個步驟:
?
1. 計算每個特征與目標(biāo)變量之間的相關(guān)系數(shù)或相關(guān)性指標(biāo),如Pearson相關(guān)系數(shù)、Spearman相關(guān)系數(shù)等。
?
2. 對所有特征按照相關(guān)系數(shù)或相關(guān)性指標(biāo)從高到低進(jìn)行排序。
?
3. 根據(jù)預(yù)設(shè)的閾值或特征數(shù)目,選擇特征之間相關(guān)系數(shù)或相關(guān)性指標(biāo)低于閾值或與目標(biāo)表達(dá)量相關(guān)的前N個特征,將其保留下來用于后續(xù)的數(shù)據(jù)分析。
?
4. 將保留下來的特征構(gòu)成一個新的特征集合,用于后續(xù)的降維分析或建模。
?
需要注意的是,高相關(guān)濾波也有一些限制和注意事項。首先,相關(guān)系數(shù)并不代表因果關(guān)系,而且在某些情況下可能會存在誤導(dǎo)性信息。因此,在選擇相關(guān)性指標(biāo)時,需要根據(jù)具體的數(shù)據(jù)結(jié)構(gòu)、分析目的和算法特點進(jìn)行綜合考慮,并進(jìn)行必要的驗證和解釋。其次,高相關(guān)濾波通常用于特征選擇,而不是特征提取或特征降維,因此需要與其他降維方法進(jìn)行配合使用,以達(dá)到更好的降維效果。最后,高相關(guān)濾波的效果也受到閾值的選擇和數(shù)據(jù)的分布特點的影響,需要根據(jù)具體情況進(jìn)行調(diào)整和優(yōu)化。
?
接下來,小云就用與上回一樣的蛋白質(zhì)表達(dá)數(shù)據(jù),帶大家試試高相關(guān)濾波~
首先仍然是導(dǎo)入數(shù)據(jù)
?
data=read.csv(file.choose(),header = TRUE)
data <- na.omit(data)
X <- data[,2:79]
# 為data設(shè)置新列
X$Genotype <- ifelse(X$Genotype == "Control", 1, 0)
?
直接使用cor( )計算相關(guān)性矩陣
corr_matrix <- cor(X)
?
使用findCorrelation查找相關(guān)系數(shù)高于0.8的特征,直接返回需要刪除的特征
high_corr <- findCorrelation(corr_matrix, cutoff = 0.8)

我們可以看到篩選出的有26對基因是高度相關(guān)對
直接刪除相關(guān)系數(shù)高于0.8的特征(保留每一對中的其中一個特征)
data_new <- data[,-high_corr]
?
提取最后一列的數(shù)據(jù),即需要判斷的目標(biāo)變量
y <- X[,78]
?
計算最后一列與其他列的相關(guān)系數(shù),進(jìn)行排序,可以看到哪些特征與目標(biāo)變量比較相關(guān)
corr_matrix1 <- cor(X[,-78], y)
corr_sorted <- sort(corr_matrix1, decreasing = TRUE)

我們可以畫出相關(guān)性的熱圖,更直觀地看到哪些基因與我們要判斷的目標(biāo)分類是相關(guān)的~
ggplot(melt(corr_matrix), aes(x=Var1, y=Var2, fill=value)) +
??geom_tile() +
??scale_fill_gradient2(low="blue", mid="white", high="red", midpoint=0) +
??theme(axis.text.x = element_text(angle = 90, hjust = 1))
?
注意這里在最新版本的ggplot2中,melt函數(shù)已經(jīng)被廢棄,需要使用reshape2包中的melt函數(shù)來實現(xiàn)數(shù)據(jù)重塑,所以我們需要導(dǎo)入library(reshape2)

高相關(guān)濾波是一種簡單且有效的特征選擇方法,可以幫助我們?nèi)コ哂嗪驮肼曁卣?,提高模型的泛化能力和可解釋性。在實際應(yīng)用中,我們可以將高相關(guān)濾波與其他特征選擇方法和技術(shù)相結(jié)合,以達(dá)到最佳的特征選擇效果。

