R語言用主成分分析(PCA)PCR迴歸進行預測汽車購買資訊視覺化
原文連結:http://tecdat.cn/?p=26672
原文出處:拓端資料部落公眾號
在這個專案中,我討論瞭如何使用主成分分析 (PCA) 進行簡單的預測。
出於說明目的,我們將對一個資料集進行分析,該資料集包含有關在 3 個不同價格組內進行的汽車購買資訊以及影響其購買決定的一組特徵。
首先,我們將匯入資料集並探索其結構。
- head(caref)
眾所周知,PCA 使用歐幾里得距離來推導分量,因此輸入變數需要是數字的。正如我們所看到的,除了“組”變數之外,所有資料都是數字格式,因此我們不必執行任何轉換。
為了檢視數字變數在 3 個價格組中的表現,我分別為每個數字變數生成箱線圖。
- ggplot(cr_e.m, aes(x = varle, y = vle, fill = Gup)) +
- geom_boxplot()
通過觀察上圖,我們可以瞭解到每個價格組的消費者對所考慮的特徵有不同的看法(即,給出不同的評分)。(“安全”特徵的變化較小,在所有 3 個價格組中具有更高的排名/重要性)
現在為了更好地視覺化這 3 個價格組叢集如何在 3D 空間中出現,我使用 3 個特徵變數構建了一個 3D 圖,顯示給定評級之間的顯著差異。
- same3dpot <- with(carpef, scttro3d(Enirnmnt,Innoaon,Prtge
在上圖中,我們可以看到來自每個價格組的資料點(叢集)之間的明顯差異。
在繼續應用 PCA 之前,現在我將檢查輸入變數之間是否存在任何相關性。
- corrplot(oras)
可以看出,“創新”、“安全”和“聲望”特徵之間似乎有明顯的相關性。
通常在構建模型時,我們會刪除一些(不必要的)相關預測變數而不包括模型,但鑑於我們正在執行 PCA,我們不會這樣做,因為應用 PCA 的想法是生成新的主成分(它們不會相互關聯)並用降低的維度替換當前的預測變數集。
- pcmol <- prcomp(ca_eeued, scale. = TRUE, center = TRUE)
通過觀察 PCA 的輸出,我們可以看到前兩個 PC 解釋了資料中 89% 的可變性。
通過包括 3 個 PC,該模型將解釋 97% 的可變性,但由於 2 個 PC 可以解釋大約 90% 的資料,因此我將只使用 2 個 PC。
此外,通過觀察下面的碎石圖和每個PC的重要性,我們也可以理解,只用兩個PC是可以的。
- sumacamel = summary(adel)
- plot(pc_el,type = "l")
由於我們只堅持前兩個主成分,現在我檢查每個預測變數對每個主成分的影響量。
下面我根據它們對每個PC 的影響按降序排列了這些特性。
- #對於PC 1
- longScrsPC_1 <- pcael$roto[,1]
- faccore_PC_1 <- abs(odingcre_PC_1)
- fa_scre_PC_1raked <- nmes(rt(fac_cos1,decreasing = T))
pamod$roatn[fa_coC__and,1]
現在我們最終在這兩個 PC 上繪製原始資料,並檢查我們是否可以分別識別每個價格組的資料點。
- #PC_n2 <- qplot(x=PC1, y=PC2
我們可以看到資料點是根據它們所在的每個價格進行聚類的!
使用上述特徵,現在我們將嘗試根據他/她對所考慮的特徵給出的評級來預測一個人會購買哪種型別的汽車!
讓我們假設一個客戶對每個特徵給出了以下評級:
安全:9 環境:8 創新:5 聲望:4
現在讓我們嘗試預測該客戶將屬於哪個價格組:
- new_ser <- c(9,8,5,4)
- new_cus_group <- predict(pcmdl, newdata = car_pef_ecew_c[nrow(),]
- lt_3 <- pot_2 + ge_point(aes(x=newcus_
通過觀察這個新觀察值在 PC1 和 PC2 上的位置,我們可以得出結論,新客戶更有可能購買價格組 B 的汽車!如果我需要做出一些不同的預測,我個人會使用這種方法,因為它非常快速且易於理解和解釋。這種方法可以擴大規模以構建 PC 迴歸模型,尤其是當預測變數相關且需要正則化時。
最受歡迎的見解
3.matlab中的偏最小二乘迴歸(PLSR)和主成分迴歸(PCR)
5.R語言迴歸中的Hosmer-Lemeshow擬合優度檢驗