據(jù)分析實(shí)戰(zhàn):從統(tǒng)計(jì)檢驗(yàn)到機(jī)器學(xué)習(xí)建模)
1. 項(xiàng)目概述從一道經(jīng)典賽題看數(shù)據(jù)分析的實(shí)戰(zhàn)邏輯2012年全國大學(xué)生數(shù)學(xué)建模競賽的“葡萄酒的評(píng)價(jià)”問題可以說是一道將統(tǒng)計(jì)學(xué)、數(shù)據(jù)分析與實(shí)際問題緊密結(jié)合的典范。它不像一些純理論推導(dǎo)的題目而是直接把一個(gè)看似主觀的“品酒師打分”問題拋給了需要用客觀數(shù)據(jù)說話的學(xué)生。題目給出了兩組品酒員對(duì)一批葡萄酒樣品的評(píng)分以及這些葡萄酒的理化指標(biāo)。核心任務(wù)很明確第一分析評(píng)價(jià)結(jié)果是否可信品酒員水平有無差異第二挖掘理化指標(biāo)能否有效評(píng)價(jià)葡萄酒質(zhì)量第三建立模型對(duì)葡萄酒進(jìn)行分級(jí)。這道題之所以經(jīng)典是因?yàn)樗暾啬M了一個(gè)從“數(shù)據(jù)可靠性評(píng)估”到“特征工程與建?!痹俚健敖Y(jié)果應(yīng)用”的完整數(shù)據(jù)分析流程。直到今天很多企業(yè)做用戶調(diào)研、產(chǎn)品評(píng)價(jià)體系構(gòu)建時(shí)面臨的都是類似的問題如何從帶有人為偏差的評(píng)價(jià)數(shù)據(jù)中提煉出客觀規(guī)律對(duì)于剛接觸數(shù)學(xué)建模的同學(xué)這道題是個(gè)絕佳的練手材料。它用到的技術(shù)棧不深但思維鏈條完整。R語言在這里扮演了關(guān)鍵角色它強(qiáng)大的統(tǒng)計(jì)檢驗(yàn)、可視化以及建模包能讓分析過程既高效又清晰。接下來我就以這道題為藍(lán)本結(jié)合我多次帶隊(duì)參賽和實(shí)際數(shù)據(jù)分析的經(jīng)驗(yàn)拆解其中的核心思路、技術(shù)要點(diǎn)和那些容易踩坑的細(xì)節(jié)。我們會(huì)用R語言作為主要工具但重點(diǎn)在于理解方法背后的“為什么”這樣你以后遇到電商評(píng)分、用戶滿意度調(diào)研、績效評(píng)估等任何帶有主觀評(píng)價(jià)的數(shù)據(jù)時(shí)都知道該從哪里入手。2. 問題一評(píng)價(jià)結(jié)果的可靠性分析與品酒員一致性檢驗(yàn)?zāi)玫綌?shù)據(jù)后千萬別急著跑復(fù)雜的模型。第一步永遠(yuǎn)是“審視數(shù)據(jù)”尤其是這種基于多人打分的數(shù)據(jù)。題目要求判斷兩組品酒員的評(píng)價(jià)結(jié)果有無顯著性差異以及評(píng)價(jià)是否可靠。這本質(zhì)上是在做兩件事組間差異分析和組內(nèi)一致性檢驗(yàn)。2.1 數(shù)據(jù)預(yù)處理與初步觀察通常原始數(shù)據(jù)可能是Excel或CSV格式。我們首先需要將其讀入R并進(jìn)行初步清洗。# 假設(shè)數(shù)據(jù)已保存為 wine_data.csv包含列Sample_ID, Group, Judge1, Judge2, ..., Judge10, 以及理化指標(biāo) wine_data - read.csv(wine_data.csv, stringsAsFactors FALSE) # 查看數(shù)據(jù)結(jié)構(gòu) str(wine_data) summary(wine_data) # 分離兩組品酒員的打分?jǐn)?shù)據(jù) # 假設(shè)數(shù)據(jù)中有一列‘Taster_Group’標(biāo)識(shí)A組或B組 group_a_scores - wine_data[wine_data$Taster_Group A, grep(Judge, names(wine_data))] group_b_scores - wine_data[wine_data$Taster_Group B, grep(Judge, names(wine_data))] # 計(jì)算每個(gè)酒樣品的平均分按組 wine_data$Avg_Score_A - rowMeans(group_a_scores, na.rm TRUE) wine_data$Avg_Score_B - rowMeans(group_b_scores, na.rm TRUE)這里有個(gè)關(guān)鍵細(xì)節(jié)如何處理缺失值品酒員可能因?yàn)槟撤N原因?qū)δ硞€(gè)樣品未打分。na.rm TRUE參數(shù)在計(jì)算均值時(shí)忽略了缺失值但這需要謹(jǐn)慎。如果某個(gè)樣品缺失打分太多其平均分的可靠性就存疑。在實(shí)際操作中我通常會(huì)設(shè)定一個(gè)閾值比如某個(gè)樣品缺失打分超過總?cè)藬?shù)的1/3則考慮將該樣品從分析中剔除或者在后續(xù)的一致性檢驗(yàn)中注明。2.2 組間差異顯著性檢驗(yàn)選用何種統(tǒng)計(jì)方法判斷兩組品酒員的評(píng)價(jià)有無顯著差異最直接的想法是比較兩組給出的平均分。但簡單比較均值大小是不夠的必須進(jìn)行統(tǒng)計(jì)檢驗(yàn)。這里常用的方法有獨(dú)立樣本t檢驗(yàn)和Mann-Whitney U檢驗(yàn)Wilcoxon秩和檢驗(yàn)。為什么不能只用t檢驗(yàn)t檢驗(yàn)的前提是數(shù)據(jù)服從正態(tài)分布且方差齊性。品酒打分?jǐn)?shù)據(jù)未必滿足正態(tài)性尤其是當(dāng)樣本量不大或打分分布有偏時(shí)。因此更穩(wěn)健的做法是先進(jìn)行正態(tài)性檢驗(yàn)如Shapiro-Wilk檢驗(yàn)和方差齊性檢驗(yàn)如F檢驗(yàn)或Levene檢驗(yàn)。# 正態(tài)性檢驗(yàn)以A組平均分為例 shapiro.test(wine_data$Avg_Score_A) # 方差齊性檢驗(yàn) var.test(wine_data$Avg_Score_A, wine_data$Avg_Score_B) # 如果滿足正態(tài)且方差齊使用t檢驗(yàn) t.test(wine_data$Avg_Score_A, wine_data$Avg_Score_B, var.equal TRUE) # 如果不滿足使用非參數(shù)檢驗(yàn)——Wilcoxon秩和檢驗(yàn) wilcox.test(wine_data$Avg_Score_A, wine_data$Avg_Score_B)實(shí)操心得在數(shù)學(xué)建模中為了體現(xiàn)分析的嚴(yán)謹(jǐn)性我建議將正態(tài)性檢驗(yàn)和方差齊性檢驗(yàn)的結(jié)果一并報(bào)告。即使數(shù)據(jù)勉強(qiáng)滿足條件也可以同時(shí)給出參數(shù)檢驗(yàn)t檢驗(yàn)和非參數(shù)檢驗(yàn)Wilcoxon檢驗(yàn)的結(jié)果。如果兩者結(jié)論一致則結(jié)論更可靠如果不一致則優(yōu)先采信非參數(shù)檢驗(yàn)的結(jié)果并在論文中解釋原因。這能向評(píng)委展示你對(duì)統(tǒng)計(jì)方法前提條件的深刻理解。2.3 品酒員組內(nèi)一致性檢驗(yàn)Kendall W系數(shù)與ICC評(píng)價(jià)是否可靠關(guān)鍵在于品酒員之間打分是否一致。如果同一組內(nèi)的品酒員對(duì)同一批酒的優(yōu)劣排序都達(dá)不成共識(shí)那么這組評(píng)價(jià)的整體可靠性就值得懷疑。衡量多個(gè)評(píng)價(jià)者對(duì)多個(gè)對(duì)象評(píng)價(jià)一致性的常用指標(biāo)是肯德爾和諧系數(shù)Kendall‘s W和組內(nèi)相關(guān)系數(shù)ICC。Kendall‘s W適用于等級(jí)排序數(shù)據(jù)。它衡量的是評(píng)價(jià)者所給排名的一致性程度取值在0到1之間越接近1一致性越高。計(jì)算前需要將每個(gè)品酒員對(duì)樣品的打分轉(zhuǎn)換為排名。ICC適用于連續(xù)數(shù)據(jù)如具體分?jǐn)?shù)。它衡量的是評(píng)價(jià)者間評(píng)分的可重復(fù)性。ICC有不同的模型如ICC(1, k) 用于評(píng)價(jià)每個(gè)評(píng)價(jià)者的絕對(duì)一致性ICC(2, k) 用于評(píng)價(jià)評(píng)價(jià)者群體的平均一致性需要根據(jù)研究設(shè)計(jì)選擇。# 使用 irr 包進(jìn)行一致性檢驗(yàn) library(irr) # 假設(shè) group_a_rankings 是一個(gè)矩陣行是葡萄酒樣品列是品酒員值是排名 # 計(jì)算Kendall‘s W kendall(group_a_rankings, correct TRUE) # 假設(shè) group_a_scores 是分?jǐn)?shù)矩陣 # 計(jì)算ICC (這里以ICC(2, k)為例衡量平均測量的一致性) icc(group_a_scores, model twoway, type agreement, unit average)注意事項(xiàng)Kendall‘s W對(duì)異常值比如某個(gè)品酒員特立獨(dú)行比較敏感。計(jì)算前可以通過繪制箱線圖或計(jì)算每個(gè)品酒員打分與其他人的相關(guān)性先找出可能的“離群評(píng)價(jià)者”。對(duì)于ICC一定要在論文中說明你選擇的是哪種模型和類型因?yàn)椴煌倪x擇對(duì)應(yīng)的解釋不同。一個(gè)常見的錯(cuò)誤是直接調(diào)用包而不說明參數(shù)這會(huì)被扣分。2.4 可視化呈現(xiàn)讓結(jié)果一目了然統(tǒng)計(jì)檢驗(yàn)給出p值但可視化能讓評(píng)委和讀者瞬間抓住重點(diǎn)。對(duì)于這個(gè)問題有幾個(gè)必做的圖兩組平均分分布對(duì)比箱線圖直觀展示兩組評(píng)分的中位數(shù)、分布范圍及異常值。boxplot(Avg_Score_A, Avg_Score_B, names c(Group A, Group B), main Distribution of Average Scores by Taster Group, ylab Average Score, col c(lightblue, lightgreen))品酒員打分熱力圖以葡萄酒樣品為行品酒員為列用顏色深淺表示分?jǐn)?shù)高低。這能一眼看出哪些酒普遍得分高哪些品酒員的打分模式與眾不同。library(pheatmap) pheatmap(as.matrix(group_a_scores), cluster_rows FALSE, cluster_cols FALSE, main Heatmap of Scores from Group A Tasters)一致性分析結(jié)果條形圖可以分別展示兩組品酒員的Kendall‘s W值用條形圖高度直觀比較一致性高低。3. 問題二基于理化指標(biāo)的質(zhì)量評(píng)價(jià)模型構(gòu)建這是問題的核心也是最能體現(xiàn)建模功力的部分。目標(biāo)是根據(jù)葡萄酒的理化指標(biāo)如酒精濃度、酸度、糖分、酚類物質(zhì)含量等來建立模型評(píng)價(jià)其質(zhì)量。這本質(zhì)上是一個(gè)回歸問題預(yù)測具體分?jǐn)?shù)或分類問題預(yù)測等級(jí)。鑒于題目最終要求分級(jí)且打分是連續(xù)值通常的思路是先做回歸預(yù)測分?jǐn)?shù)再根據(jù)分?jǐn)?shù)劃分等級(jí)。3.1 特征工程從原始指標(biāo)到有效特征原始理化指標(biāo)可能存在量綱不一、相關(guān)性高共線性等問題。直接扔進(jìn)模型效果往往不好。數(shù)據(jù)標(biāo)準(zhǔn)化/歸一化由于后續(xù)可能用到KNN、SVM或基于距離的模型必須消除量綱影響。即使是用回歸樹或隨機(jī)森林標(biāo)準(zhǔn)化也能加快梯度下降的收斂速度。# 假設(shè)理化指標(biāo)列名為 phys_chem_1, phys_chem_2, ... phys_chem_data - wine_data[, grep(phys_chem, names(wine_data))] scaled_data - as.data.frame(scale(phys_chem_data))多重共線性診斷VIF檢驗(yàn)如果指標(biāo)間高度相關(guān)會(huì)使得回歸模型系數(shù)估計(jì)不穩(wěn)定難以解釋。方差膨脹因子VIF是常用診斷工具。通常認(rèn)為VIF 10或更嚴(yán)格的 5存在嚴(yán)重共線性。library(car) # 假設(shè)我們先用所有標(biāo)準(zhǔn)化后的特征擬合一個(gè)線性模型 lm_model - lm(Avg_Score_A ~ ., data data.frame(scaled_data, Avg_Score_A wine_data$Avg_Score_A)) vif_values - vif(lm_model) print(vif_values)如果發(fā)現(xiàn)高VIF的特征可以考慮刪除其中一個(gè)相關(guān)性高的特征需結(jié)合業(yè)務(wù)知識(shí)保留更重要的或更容易測量的。使用主成分分析PCA提取不相關(guān)的綜合指標(biāo)。主成分分析PCA降維與解釋PCA不僅能消除共線性還能將眾多指標(biāo)壓縮成少數(shù)幾個(gè)綜合指標(biāo)主成分這些主成分包含了原始數(shù)據(jù)的大部分信息。pca_result - prcomp(scaled_data, center TRUE, scale. TRUE) summary(pca_result) # 查看各主成分方差貢獻(xiàn)率 # 通常取累計(jì)貢獻(xiàn)率超過80%或85%的前幾個(gè)主成分 num_components - which(cumsum(pca_result$sdev^2 / sum(pca_result$sdev^2)) 0.85)[1] principal_components - pca_result$x[, 1:num_components]踩坑提醒PCA生成的主成分是線性組合失去了原始指標(biāo)的實(shí)際物理意義。在論文中你需要解釋每個(gè)主成分主要代表了哪些原始指標(biāo)的信息通過查看pca_result$rotation矩陣即載荷矩陣。例如PC1可能在“酒精度”和“糖分”上有高載荷可以解釋為“酒體濃郁度”綜合指標(biāo)。3.2 模型選擇與比較從線性到非線性不要只用一個(gè)模型。應(yīng)該構(gòu)建一個(gè)模型池通過交叉驗(yàn)證比較性能。多元線性回歸MLR基準(zhǔn)模型。簡單、可解釋性強(qiáng)但假設(shè)線性關(guān)系可能無法捕捉復(fù)雜模式。mlr_model - lm(Avg_Score ~ PC1 PC2 PC3, data train_data)支持向量回歸SVR對(duì)于中小規(guī)模數(shù)據(jù)且可能存在非線性關(guān)系時(shí)SVR通常表現(xiàn)穩(wěn)健。需要調(diào)節(jié)成本參數(shù)C和核函數(shù)如徑向基核RBF。library(e1071) svr_model - svm(Avg_Score ~ ., data train_data, kernel radial, cost 10, gamma 0.1)隨機(jī)森林回歸RFR集成學(xué)習(xí)方法能處理非線性關(guān)系對(duì)異常值和共線性不敏感還能給出特征重要性排序非常實(shí)用。library(randomForest) rf_model - randomForest(Avg_Score ~ ., data train_data, ntree 500, importance TRUE) importance(rf_model) # 查看特征重要性 varImpPlot(rf_model) # 繪制重要性圖3.3 模型評(píng)估與驗(yàn)證避免過擬合的關(guān)鍵絕對(duì)不能只用訓(xùn)練集上的表現(xiàn)來評(píng)價(jià)模型必須使用交叉驗(yàn)證或留出驗(yàn)證集。# 使用caret包進(jìn)行10折交叉驗(yàn)證比較模型 library(caret) library(doParallel) # 并行計(jì)算加速 registerDoParallel(cores4) # 定義訓(xùn)練控制參數(shù) train_control - trainControl(method cv, number 10) # 訓(xùn)練線性回歸模型 set.seed(123) mlr_cv - train(Avg_Score ~ ., data train_data, method lm, trControl train_control) # 訓(xùn)練隨機(jī)森林模型 set.seed(123) rf_cv - train(Avg_Score ~ ., data train_data, method rf, trControl train_control, tuneGrid expand.grid(.mtry c(2, 3, 4)), ntree 500) # 比較模型在交叉驗(yàn)證下的RMSE均方根誤差 results - resamples(list(LM mlr_cv, RF rf_cv)) summary(results) bwplot(results) # 繪制模型性能比較箱線圖評(píng)估指標(biāo)首選均方根誤差RMSE和決定系數(shù)R2。RMSE反映預(yù)測誤差的絕對(duì)大小R2反映模型對(duì)數(shù)據(jù)變異的解釋程度。在交叉驗(yàn)證結(jié)果中應(yīng)選擇RMSE小且穩(wěn)定方差小、R2高的模型。核心技巧在數(shù)學(xué)建模論文中模型比較部分一定要有表格和圖表。一個(gè)清晰的對(duì)比表格列出各模型在訓(xùn)練集、驗(yàn)證集上的RMSE、R2以及模型復(fù)雜度能讓你的分析顯得非常專業(yè)。圖表方面除了性能比較箱線圖還可以繪制預(yù)測值 vs 真實(shí)值的散點(diǎn)圖并添加yx的參考線直觀展示預(yù)測效果。4. 問題三葡萄酒分級(jí)模型的建立與應(yīng)用在得到可靠的評(píng)分預(yù)測模型后分級(jí)就是水到渠成的事情。但如何劃分等級(jí)同樣有講究。4.1 分級(jí)閾值的確定方法分級(jí)不是簡單地把分?jǐn)?shù)從高到低三等分。需要考慮基于統(tǒng)計(jì)分布的分級(jí)如使用分位數(shù)。將預(yù)測得分排序取前20%為優(yōu)等A級(jí)中間60%為中等B級(jí)后20%為差等C級(jí)。這種方法簡單但可能受極端值影響。predicted_scores - predict(best_model, newdata scaled_data) quantiles - quantile(predicted_scores, probs c(0.2, 0.8)) grade - cut(predicted_scores, breaks c(-Inf, quantiles[1], quantiles[2], Inf), labels c(C, B, A))基于聚類分析的分級(jí)將葡萄酒樣品根據(jù)其預(yù)測得分甚至可以結(jié)合關(guān)鍵理化指標(biāo)進(jìn)行聚類如K-means聚類將樣品自然聚成3類每一類對(duì)應(yīng)一個(gè)等級(jí)。這種方法讓數(shù)據(jù)自己“說話”可能更客觀。set.seed(123) # 使用預(yù)測得分進(jìn)行聚類 kmeans_result - kmeans(predicted_scores, centers 3, nstart 25) table(kmeans_result$cluster) # 需要根據(jù)聚類中心的大小將簇標(biāo)簽映射為A、B、C級(jí)基于業(yè)務(wù)規(guī)則的分級(jí)如果題目或背景資料中給出了明確的分級(jí)標(biāo)準(zhǔn)如某產(chǎn)區(qū)規(guī)定酒精度高于13%vol可列為優(yōu)級(jí)則應(yīng)優(yōu)先采用。本題沒有所以前兩種是主要思路。經(jīng)驗(yàn)之談在數(shù)學(xué)建模中我推薦同時(shí)使用分位數(shù)法和聚類法并比較兩種方法得到的分級(jí)結(jié)果的一致性。如果大部分樣品如90%以上的等級(jí)劃分一致說明你的分級(jí)方案是穩(wěn)健的。你可以在論文中展示一個(gè)混淆矩陣或一致性表格來證明這一點(diǎn)這能極大提升論文的說服力。4.2 分級(jí)結(jié)果的驗(yàn)證與展示如何證明你的分級(jí)是合理的除了內(nèi)部一致性還可以理化指標(biāo)輪廓分析計(jì)算每個(gè)等級(jí)葡萄酒的各類理化指標(biāo)的均值繪制雷達(dá)圖或條形圖。一個(gè)合理的分級(jí)應(yīng)該能讓不同等級(jí)在關(guān)鍵指標(biāo)如酒精度、總酚上呈現(xiàn)出有規(guī)律的梯度差異。library(dplyr) library(ggplot2) wine_data$Predicted_Grade - grade grade_profile - wine_data %% group_by(Predicted_Grade) %% summarise(across(starts_with(phys_chem), mean, na.rm TRUE)) # 將數(shù)據(jù)轉(zhuǎn)換為長格式后用ggplot2繪制分組條形圖或折線圖模型回溯驗(yàn)證將分級(jí)結(jié)果作為一個(gè)新的分類變量嘗試建立一個(gè)分類模型如決策樹、邏輯回歸來根據(jù)理化指標(biāo)預(yù)測這個(gè)等級(jí)。如果這個(gè)分類模型能有較高的準(zhǔn)確率說明理化指標(biāo)確實(shí)能很好地區(qū)分這些等級(jí)從而反證了分級(jí)的合理性。4.3 模型與分級(jí)的綜合應(yīng)用對(duì)釀酒師的建議數(shù)學(xué)建模的價(jià)值在于指導(dǎo)實(shí)踐。在論文的最后一部分你需要將模型“翻譯”成釀酒師能懂的語言。關(guān)鍵指標(biāo)識(shí)別通過隨機(jī)森林的特征重要性排序或線性回歸系數(shù)的顯著性找出對(duì)葡萄酒感官評(píng)分影響最大的幾個(gè)理化指標(biāo)。例如模型可能顯示“總酚含量”和“花色苷”是影響質(zhì)量評(píng)分的最關(guān)鍵因素。優(yōu)化方向建議基于模型可以給出定量建議。例如“根據(jù)模型若想將一款酒的預(yù)測評(píng)分從85分提升到90分在其它條件不變的情況下需要將總酚含量提高約X mg/L?!?這可以通過分析模型的偏導(dǎo)數(shù)或進(jìn)行情景模擬來實(shí)現(xiàn)。分級(jí)標(biāo)準(zhǔn)的建議給出明確、可操作的分級(jí)標(biāo)準(zhǔn)建議。例如“建議酒莊采用以下基于理化指標(biāo)的綜合評(píng)分公式進(jìn)行預(yù)分級(jí)Score 0.5酒精濃度 0.3總酚 - 0.2*總酸。得分大于8.5分為A級(jí)6.0-8.5分為B級(jí)小于6.0分為C級(jí)?!?. 常見問題與排查技巧實(shí)錄在實(shí)際操作和指導(dǎo)學(xué)生的過程中我遇到了不少共性問題。這里列出來希望能幫你提前避坑。5.1 數(shù)據(jù)與預(yù)處理相關(guān)問題1數(shù)據(jù)中有明顯的異常值如某個(gè)品酒員對(duì)所有酒都打滿分或零分如何處理排查繪制每個(gè)品酒員打分的箱線圖或計(jì)算其打分與其他品酒員平均分的相關(guān)系數(shù)。如果某個(gè)評(píng)價(jià)者的數(shù)據(jù)明顯偏離群體其相關(guān)系數(shù)會(huì)異常低。解決不要直接刪除先分析原因。如果是數(shù)據(jù)錄入錯(cuò)誤則修正。如果是該品酒員確實(shí)品味獨(dú)特有兩種處理方式① 在一致性分析如計(jì)算Kendall‘s W前將其數(shù)據(jù)剔除并在論文中說明理由② 保留數(shù)據(jù)但使用對(duì)異常值不敏感的統(tǒng)計(jì)量如中位數(shù)或模型如隨機(jī)森林。問題2理化指標(biāo)數(shù)量很多有的指標(biāo)缺失嚴(yán)重怎么辦排查計(jì)算每個(gè)指標(biāo)的缺失率。解決缺失率50%考慮直接刪除該指標(biāo)因?yàn)樾畔⒘刻?。缺失率?0%-50%考慮使用多重插補(bǔ)mice包或模型插補(bǔ)如用隨機(jī)森林預(yù)測缺失值。缺失率10%對(duì)于連續(xù)變量可用均值或中位數(shù)填補(bǔ)對(duì)于分類變量可用眾數(shù)填補(bǔ)。但更推薦使用簡單插補(bǔ)并在論文中說明方法。5.2 建模與分析相關(guān)問題3建立的回歸模型R2很高比如0.9但預(yù)測新數(shù)據(jù)效果很差。原因這是典型的過擬合。模型在訓(xùn)練集上過于復(fù)雜記住了噪聲而非規(guī)律。排查與解決確保進(jìn)行了交叉驗(yàn)證訓(xùn)練集上的R2沒有參考價(jià)值必須看驗(yàn)證集上的表現(xiàn)。檢查特征數(shù)量如果特征數(shù)接近甚至多于樣本數(shù)極易過擬合。務(wù)必進(jìn)行特征選擇如基于LASSO回歸或降維PCA。簡化模型對(duì)于線性模型嘗試減少特征對(duì)于SVM或隨機(jī)森林嘗試增大正則化參數(shù)C調(diào)小或減少樹的最大深度。增加數(shù)據(jù)如果可能收集更多樣本是解決過擬合的根本方法。問題4PCA后應(yīng)該用主成分得分還是原始指標(biāo)建模建議如果目的是預(yù)測且原始指標(biāo)存在嚴(yán)重共線性使用主成分得分建模通常效果更好且更穩(wěn)定。如果目的是解釋需要知道具體是哪個(gè)理化指標(biāo)起作用則更適合使用原始指標(biāo)正則化方法如嶺回歸、LASSO或者在使用主成分模型后通過載荷矩陣回溯解釋。問題5隨機(jī)森林的特征重要性圖怎么解釋MeanDecreaseAccuracy/Gini值越大表示該特征對(duì)模型預(yù)測準(zhǔn)確率或節(jié)點(diǎn)純度的貢獻(xiàn)越大即越重要。但需要注意高度相關(guān)的特征會(huì)“分?jǐn)偂敝匾詫?dǎo)致各自的重要性值都被低估。因此重要性排序是可靠的但具體數(shù)值需謹(jǐn)慎比較。5.3 論文寫作與呈現(xiàn)問題6統(tǒng)計(jì)檢驗(yàn)的p值到底怎么寫錯(cuò)誤示范“p 0.000”正確示范“p 0.001” 或 “p 3.2e-05”。報(bào)告精確值或小于某個(gè)閾值但不要出現(xiàn)小數(shù)點(diǎn)后一串零。問題7圖表太多或太丑。原則每個(gè)圖表都必須有明確的目的服務(wù)于一個(gè)論點(diǎn)。避免堆砌。美化R的ggplot2包可以做出非常專業(yè)的圖表。統(tǒng)一配色、字體添加清晰的標(biāo)題和坐標(biāo)軸標(biāo)簽。確保圖表在黑白打印時(shí)也能區(qū)分不同元素如使用不同的線型、點(diǎn)形狀。問題8代碼要不要放在附錄建議放核心代碼片段而不是全部。例如展示數(shù)據(jù)讀入、關(guān)鍵模型訓(xùn)練和評(píng)估的代碼塊。冗長的數(shù)據(jù)清洗過程可以省略。代碼要整潔有注釋。這道2012年的賽題其價(jià)值遠(yuǎn)超比賽本身。它訓(xùn)練的正是一種數(shù)據(jù)驅(qū)動(dòng)的思維范式面對(duì)主觀評(píng)價(jià)如何用客觀數(shù)據(jù)去驗(yàn)證和建模面對(duì)多個(gè)潛在影響因素如何篩選、組合構(gòu)建出可靠的預(yù)測體系最后如何將數(shù)學(xué)模型的結(jié)果落地為切實(shí)可行的業(yè)務(wù)建議。用R語言實(shí)現(xiàn)這個(gè)過程不僅能讓你熟悉t.test、icc、prcomp、randomForest、train這些函數(shù)更重要的是理解它們何時(shí)用、為何用、結(jié)果怎么解讀。下次當(dāng)你再看到用戶評(píng)分、產(chǎn)品評(píng)測或者任何帶有“人”的判斷的數(shù)據(jù)時(shí)希望這套從“一致性檢驗(yàn)”到“特征工程”再到“建模驗(yàn)證”的組合拳能成為你分析工具箱里的利器。