多項(xiàng)式回歸實(shí)戰(zhàn):從原理到應(yīng)用,掌握R2與RMSE評(píng)估模型
1. 從線性到非線性為什么我們需要多項(xiàng)式回歸在數(shù)據(jù)分析或機(jī)器學(xué)習(xí)的入門階段線性回歸通常是我們的第一個(gè)模型。它簡(jiǎn)潔、直觀假設(shè)特征和目標(biāo)變量之間存在一條直線關(guān)系。但現(xiàn)實(shí)世界的數(shù)據(jù)往往比一條直線復(fù)雜得多。想象一下你正在分析一個(gè)產(chǎn)品的銷量與營(yíng)銷投入的關(guān)系。初期每增加一單位的投入銷量可能線性增長(zhǎng)但當(dāng)市場(chǎng)趨于飽和時(shí)再多的投入可能也無法帶來同比例的增長(zhǎng)甚至可能出現(xiàn)邊際效益遞減。這時(shí)用一條直線去擬合顯然會(huì)丟失大量信息預(yù)測(cè)結(jié)果也會(huì)嚴(yán)重失真。這就是多項(xiàng)式回歸登場(chǎng)的時(shí)候。它本質(zhì)上是對(duì)線性回歸的一種擴(kuò)展通過在特征中引入高次項(xiàng)如平方項(xiàng)、立方項(xiàng)讓模型能夠擬合數(shù)據(jù)中存在的曲線關(guān)系。簡(jiǎn)單來說它允許我們的“回歸線”變成一條曲線從而更靈活地捕捉數(shù)據(jù)的內(nèi)在模式。例如一個(gè)二次多項(xiàng)式回歸模型最高次項(xiàng)為2的方程形式為y β? β?x β?x2 ε。這個(gè)方程描述的就是一條拋物線它可以模擬先上升后下降或先下降后上升的趨勢(shì)。我最初接觸多項(xiàng)式回歸時(shí)曾犯過一個(gè)典型的錯(cuò)誤盲目追求高階。看到一個(gè)數(shù)據(jù)集有輕微波動(dòng)就想著用五次、六次甚至更高次的項(xiàng)去擬合結(jié)果模型在訓(xùn)練集上表現(xiàn)近乎完美但拿到新數(shù)據(jù)上一測(cè)預(yù)測(cè)結(jié)果一塌糊涂。這就是典型的過擬合。多項(xiàng)式回歸是一把雙刃劍它強(qiáng)大的擬合能力背后是對(duì)模型復(fù)雜度的精細(xì)控制要求。理解它不僅要會(huì)用更要明白何時(shí)用、用到什么程度以及如何客觀地評(píng)價(jià)它的好壞。這正是R2和RMSE這兩個(gè)指標(biāo)存在的意義——它們是我們衡量模型“好壞”的尺子幫助我們?cè)谶@條從簡(jiǎn)單到復(fù)雜的道路上找到那個(gè)最佳的平衡點(diǎn)。2. 多項(xiàng)式回歸的核心原理與實(shí)現(xiàn)步驟2.1 數(shù)學(xué)本質(zhì)從特征工程的角度理解很多人會(huì)把多項(xiàng)式回歸看作一個(gè)獨(dú)立的、全新的算法。但在我看來更本質(zhì)的理解是多項(xiàng)式回歸是一種特殊的特征工程標(biāo)準(zhǔn)線性回歸。模型本身的學(xué)習(xí)機(jī)制依然是線性回歸的最小二乘法我們并沒有改變算法的核心。我們所做的是在將原始數(shù)據(jù)輸入線性模型之前人為地構(gòu)造出新的特征。假設(shè)我們只有一個(gè)原始特征x。對(duì)于二次多項(xiàng)式回歸我們構(gòu)造的新特征集是[1, x, x2]。這里的1對(duì)應(yīng)截距項(xiàng)β?x對(duì)應(yīng)β?x2對(duì)應(yīng)β?。然后我們將這個(gè)新的特征矩陣[1, x, x2]丟給最普通的線性回歸模型去訓(xùn)練。模型會(huì)學(xué)習(xí)到三個(gè)系數(shù)β?, β?, β?但它“認(rèn)為”自己只是在處理三個(gè)不同的特征而已。因此所有線性回歸的假設(shè)檢驗(yàn)、系數(shù)解釋等理論在形式上依然可以沿用只是對(duì)于x2這樣的項(xiàng)其系數(shù)的解釋會(huì)變得不那么直觀它代表曲率。在實(shí)際操作中我們幾乎不會(huì)手動(dòng)計(jì)算這些高次項(xiàng)。以Python的scikit-learn庫(kù)為例通常會(huì)使用PolynomialFeatures這個(gè)轉(zhuǎn)換器與LinearRegression這個(gè)估計(jì)器組合成一個(gè)管道Pipeline。下面是一個(gè)典型的代碼流程import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression from sklearn.pipeline import make_pipeline # 生成模擬的非線性數(shù)據(jù) np.random.seed(42) X np.random.uniform(-3, 3, 100) y 0.5 * X**2 X 2 np.random.normal(0, 1, 100) # 真實(shí)的二次關(guān)系加噪聲 X X.reshape(-1, 1) # 創(chuàng)建多項(xiàng)式回歸模型管道先構(gòu)造多項(xiàng)式特征再進(jìn)行線性回歸 degree 2 # 多項(xiàng)式的階數(shù) model make_pipeline(PolynomialFeatures(degree), LinearRegression()) # 訓(xùn)練模型 model.fit(X, y) # 預(yù)測(cè)并繪圖 X_test np.linspace(-3, 3, 300).reshape(-1, 1) y_pred model.predict(X_test) plt.scatter(X, y, s20, alpha0.6, label原始數(shù)據(jù)) plt.plot(X_test, y_pred, colorred, linewidth2, labelf{degree}次多項(xiàng)式擬合) plt.xlabel(X) plt.ylabel(y) plt.legend() plt.show() # 輸出模型系數(shù)注意PolynomialFeatures會(huì)生成包括常數(shù)項(xiàng)在內(nèi)的所有組合 linear_coef model.named_steps[linearregression].coef_ linear_intercept model.named_steps[linearregression].intercept_ print(f模型系數(shù)對(duì)應(yīng)1, x, x2項(xiàng): {linear_coef}) print(f模型截距: {linear_intercept})這段代碼清晰地展示了“特征工程線性模型”的流程。PolynomialFeatures(degree2)會(huì)將輸入[x]轉(zhuǎn)換為[1, x, x2]。make_pipeline確保了轉(zhuǎn)換和建模步驟的連貫性。2.2 階數(shù)選擇平衡擬合與泛化的藝術(shù)選擇多項(xiàng)式的階數(shù)degree是整個(gè)建模過程中最關(guān)鍵的決策沒有之一。階數(shù)過低如用線性去擬合二次關(guān)系會(huì)導(dǎo)致欠擬合模型無法捕捉數(shù)據(jù)中的關(guān)鍵模式偏差Bias大。階數(shù)過高則會(huì)導(dǎo)致過擬合模型不僅學(xué)習(xí)了潛在規(guī)律還“死記硬背”了訓(xùn)練數(shù)據(jù)中的噪聲方差Variance極大在未知數(shù)據(jù)上表現(xiàn)糟糕。如何選擇不能靠猜需要有系統(tǒng)的方法可視化分析對(duì)于單特征或雙特征問題繪制不同階數(shù)下的擬合曲線與原始數(shù)據(jù)散點(diǎn)圖是最直觀的方法。觀察曲線是否平滑地捕捉了主要趨勢(shì)還是開始為了穿過每一個(gè)數(shù)據(jù)點(diǎn)而劇烈抖動(dòng)。一旦曲線出現(xiàn)不自然的劇烈波動(dòng)很可能就是過擬合的征兆。學(xué)習(xí)曲線繪制模型在訓(xùn)練集和驗(yàn)證集上的性能如RMSE隨訓(xùn)練樣本數(shù)增加的變化曲線。如果兩條曲線在末尾差距很大訓(xùn)練誤差遠(yuǎn)小于驗(yàn)證誤差則說明過擬合如果兩條曲線都很高且接近則說明欠擬合。交叉驗(yàn)證這是更可靠、更通用的方法。我們將數(shù)據(jù)分成k折輪流將其中一折作為驗(yàn)證集其余作為訓(xùn)練集重復(fù)訓(xùn)練和評(píng)估k次取性能的平均值。對(duì)于多項(xiàng)式回歸我們可以對(duì)不同的degree候選值如1到10進(jìn)行交叉驗(yàn)證選擇在驗(yàn)證集上平均性能最好的那個(gè)階數(shù)。scikit-learn的cross_val_score可以方便地實(shí)現(xiàn)這一點(diǎn)。from sklearn.model_selection import cross_val_score from sklearn.metrics import mean_squared_error, make_scorer # 使用負(fù)均方誤差作為評(píng)分因?yàn)閏ross_val_score默認(rèn)遵循“越大越好” mse_scorer make_scorer(mean_squared_error, greater_is_betterFalse) degrees range(1, 11) cv_scores [] for d in degrees: model make_pipeline(PolynomialFeatures(d), LinearRegression()) # 執(zhí)行5折交叉驗(yàn)證計(jì)算MSE的均值 scores cross_val_score(model, X, y, cv5, scoringmse_scorer) cv_scores.append(-scores.mean()) # 取負(fù)號(hào)得到正的MSE值 # 找到MSE最小的階數(shù) best_degree degrees[np.argmin(cv_scores)] print(f交叉驗(yàn)證建議的最佳階數(shù)是: {best_degree})在我的經(jīng)驗(yàn)中對(duì)于大多數(shù)實(shí)際問題多項(xiàng)式的階數(shù)很少需要超過5或6。更高的階數(shù)帶來的收益微乎其微而過擬合的風(fēng)險(xiǎn)呈指數(shù)級(jí)增長(zhǎng)。一個(gè)實(shí)用的技巧是從低階開始逐步增加觀察驗(yàn)證集性能的提升。當(dāng)性能提升趨于平緩甚至下降時(shí)就停止。3. 模型評(píng)價(jià)的雙刃劍R2與RMSE詳解當(dāng)我們擬合好一個(gè)模型后必須用量化的指標(biāo)來評(píng)價(jià)它。R2和RMSE是最常用、也最容易引起誤解的兩個(gè)回歸模型評(píng)價(jià)指標(biāo)。3.1 R2模型解釋了多少變異R2全稱決定系數(shù)Coefficient of Determination它的定義是1 - (殘差平方和 / 總平方和)。殘差平方和RSS模型預(yù)測(cè)值與真實(shí)值之差的平方和代表了模型未能解釋的誤差??偲椒胶蚑SS真實(shí)值的均值與真實(shí)值之差的平方和代表了數(shù)據(jù)自身的總波動(dòng)。所以R2 1 - (RSS/TSS)。它的取值范圍在負(fù)無窮到1之間理論上。R2越接近1說明模型對(duì)數(shù)據(jù)的擬合越好解釋的變異比例越高。這里有一個(gè)至關(guān)重要的理解R2會(huì)隨著模型特征或多項(xiàng)式項(xiàng)的增加而單調(diào)遞增即使你加入的是隨機(jī)噪聲特征。這是因?yàn)榫€性回歸的最小二乘法擬合過程其目標(biāo)就是最小化RSS。增加特征或高次項(xiàng)給了模型更多的自由度去“湊”近訓(xùn)練數(shù)據(jù)點(diǎn)因此RSS總會(huì)減小或不變從而導(dǎo)致R2增大。這就引出了R2的一個(gè)重大陷阱它不能用于直接比較不同復(fù)雜度特別是特征數(shù)量不同的模型。你用10階多項(xiàng)式在訓(xùn)練集上得到的R2幾乎肯定比2階多項(xiàng)式的高但這絕不意味著10階模型更好因?yàn)樗鼧O可能過擬合了。為了克服這個(gè)問題我們引入了調(diào)整后R2。它在原R2公式中引入了對(duì)特征數(shù)量p和樣本數(shù)量n的懲罰調(diào)整后R2 1 - [(1 - R2) * (n - 1) / (n - p - 1)]其中p是特征的數(shù)量在多項(xiàng)式回歸中可以粗略理解為階數(shù)。當(dāng)加入無用的特征時(shí)調(diào)整后R2可能會(huì)下降。因此在比較不同階數(shù)的多項(xiàng)式模型時(shí)調(diào)整后R2是比普通R2更可靠的指標(biāo)。注意R2高并不代表模型預(yù)測(cè)新數(shù)據(jù)的能力強(qiáng)它只衡量對(duì)訓(xùn)練數(shù)據(jù)的擬合優(yōu)度。一個(gè)在訓(xùn)練集上R20.99的模型在測(cè)試集上可能完全失效。3.2 RMSE預(yù)測(cè)誤差的直觀尺度RMSE全稱均方根誤差Root Mean Square Error。它的計(jì)算分三步計(jì)算所有樣本的預(yù)測(cè)誤差真實(shí)值-預(yù)測(cè)值。將這些誤差平方消除正負(fù)號(hào)同時(shí)放大較大誤差。求平方后的均值再開方將量綱恢復(fù)回原始目標(biāo)變量的單位。公式為RMSE sqrt( mean( (y_true - y_pred)2 ) )RMSE的值代表了“平均來看模型的預(yù)測(cè)值會(huì)偏離真實(shí)值多少單位”。因?yàn)樗c目標(biāo)變量y同單位所以非常直觀。例如我們預(yù)測(cè)房?jī)r(jià)單位萬元如果RMSE是10就意味著平均預(yù)測(cè)誤差在10萬元左右。與R2不同RMSE越小越好。它的優(yōu)點(diǎn)在于對(duì)大的預(yù)測(cè)誤差懲罰更重因?yàn)槠椒讲僮鬟@使得模型會(huì)盡量避免產(chǎn)生特別離譜的預(yù)測(cè)。同時(shí)由于它基于誤差的絕對(duì)值量級(jí)我們可以直接用它來比較不同數(shù)據(jù)集上模型的性能前提是目標(biāo)變量單位一致或者判斷一個(gè)誤差值在實(shí)際業(yè)務(wù)中是否可接受。然而RMSE也有其局限性。它的數(shù)值大小嚴(yán)重依賴于目標(biāo)變量本身的尺度。一個(gè)預(yù)測(cè)銷售額單位可能是百萬元的模型其RMSE很容易就很大但這不一定代表模型差。因此通常需要將RMSE與目標(biāo)變量的均值或范圍進(jìn)行比較。例如計(jì)算RMSE / y_mean相對(duì)誤差來獲得一個(gè)無量綱的、可比的評(píng)估。3.3 R2與RMSE的聯(lián)合使用與誤區(qū)辨析在實(shí)際項(xiàng)目中我從來不會(huì)只看一個(gè)指標(biāo)。R2和RMSE必須結(jié)合起來看并且要在訓(xùn)練集和測(cè)試集或驗(yàn)證集上分別計(jì)算對(duì)比分析。我們可以構(gòu)建一個(gè)對(duì)比表格來清晰地展示模型狀態(tài)模型狀態(tài)訓(xùn)練集 R2測(cè)試集 R2訓(xùn)練集 RMSE測(cè)試集 RMSE可能原因與行動(dòng)欠擬合低低高高模型太簡(jiǎn)單無法捕捉模式。行動(dòng)增加多項(xiàng)式階數(shù)、添加更多有效特征。適度擬合較高與訓(xùn)練集R2接近較低與訓(xùn)練集RMSE接近理想狀態(tài)。模型既學(xué)到了規(guī)律又沒有過度記憶噪聲。過擬合非常高接近1顯著低于訓(xùn)練集R2非常低顯著高于訓(xùn)練集RMSE模型太復(fù)雜記住了噪聲。行動(dòng)降低多項(xiàng)式階數(shù)、增加訓(xùn)練數(shù)據(jù)、使用正則化。一個(gè)常見的誤區(qū)是只匯報(bào)訓(xùn)練集上的R2和RMSE并以此宣稱模型效果很好。這是完全錯(cuò)誤的。模型最終是要用在沒見過的新數(shù)據(jù)上的因此測(cè)試集或通過交叉驗(yàn)證得到的性能才是衡量模型泛化能力的黃金標(biāo)準(zhǔn)。另一個(gè)誤區(qū)是過度追求高的R2。在某些噪聲很大、或影響因素眾多的領(lǐng)域如金融市場(chǎng)預(yù)測(cè)、廣告點(diǎn)擊率預(yù)測(cè)R2能達(dá)到0.3可能就已經(jīng)非常有價(jià)值了。關(guān)鍵在于這個(gè)模型是否比一個(gè)簡(jiǎn)單的基準(zhǔn)模型如歷史均值有顯著提升并且提升是否具有商業(yè)或?qū)嶋H意義。4. 實(shí)戰(zhàn)演練一個(gè)完整的建模與評(píng)估案例讓我們通過一個(gè)更貼近實(shí)際的案例將前面所有知識(shí)串聯(lián)起來。假設(shè)我們是一家電商公司的數(shù)據(jù)分析師需要研究某商品在一天內(nèi)不同時(shí)間點(diǎn)的頁(yè)面瀏覽量page_view與最終成交訂單量orders之間的關(guān)系以優(yōu)化廣告投放時(shí)段。4.1 數(shù)據(jù)探索與可視化首先我們獲取并觀察數(shù)據(jù)。import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression from sklearn.pipeline import make_pipeline from sklearn.model_selection import train_test_split, cross_val_score from sklearn.metrics import r2_score, mean_squared_error # 模擬生成數(shù)據(jù)假設(shè)真實(shí)關(guān)系是帶噪聲的三次曲線 np.random.seed(123) hours np.arange(0, 24, 0.5) # 從0點(diǎn)到23點(diǎn)半每半小時(shí)一個(gè)點(diǎn) true_orders 50 10*hours - 0.8*hours**2 0.02*hours**3 # 真實(shí)的三次關(guān)系 noise np.random.normal(0, 15, len(hours)) # 加入較大噪聲模擬現(xiàn)實(shí)波動(dòng) orders true_orders noise df pd.DataFrame({hour: hours, orders: orders}) plt.figure(figsize(10, 6)) plt.scatter(df[hour], df[orders], alpha0.6, s30) plt.xlabel(小時(shí) (Hour of Day)) plt.ylabel(訂單量 (Orders)) plt.title(訂單量隨時(shí)間變化散點(diǎn)圖) plt.grid(True) plt.show()通過散點(diǎn)圖我們可以清晰地看到訂單量隨著時(shí)間呈現(xiàn)先上升后下降的趨勢(shì)并且在峰值附近可能存在一個(gè)平臺(tái)期或輕微波動(dòng)這顯然不是簡(jiǎn)單的直線關(guān)系。嘗試用線性回歸擬合會(huì)丟失大量信息。4.2 多階多項(xiàng)式模型擬合與對(duì)比接下來我們嘗試用1到5階多項(xiàng)式來擬合并直觀比較。X df[[hour]].values y df[orders].values # 劃分訓(xùn)練集和測(cè)試集確保評(píng)估的公正性 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) degrees [1, 2, 3, 4, 5] models {} train_r2_scores [] test_r2_scores [] train_rmse_scores [] test_rmse_scores [] plt.figure(figsize(15, 10)) for idx, degree in enumerate(degrees): # 創(chuàng)建并訓(xùn)練模型 model make_pipeline(PolynomialFeatures(degree), LinearRegression()) model.fit(X_train, y_train) models[degree] model # 預(yù)測(cè) X_plot np.linspace(X.min(), X.max(), 500).reshape(-1, 1) y_plot model.predict(X_plot) y_train_pred model.predict(X_train) y_test_pred model.predict(X_test) # 計(jì)算指標(biāo) train_r2 r2_score(y_train, y_train_pred) test_r2 r2_score(y_test, y_test_pred) train_rmse np.sqrt(mean_squared_error(y_train, y_train_pred)) test_rmse np.sqrt(mean_squared_error(y_test, y_test_pred)) train_r2_scores.append(train_r2) test_r2_scores.append(test_r2) train_rmse_scores.append(train_rmse) test_rmse_scores.append(test_rmse) # 繪制擬合曲線 plt.subplot(2, 3, idx1) plt.scatter(X_train, y_train, colorblue, alpha0.5, s20, label訓(xùn)練集) plt.scatter(X_test, y_test, colorred, alpha0.5, s20, label測(cè)試集) plt.plot(X_plot, y_plot, colorblack, linewidth2, labelf{degree}階擬合) plt.title(f多項(xiàng)式階數(shù) {degree}) plt.xlabel(小時(shí)) plt.ylabel(訂單量) plt.legend() plt.grid(True) plt.tight_layout() plt.show()通過子圖對(duì)比我們可以直觀看到1階線性一條直線完全無法捕捉數(shù)據(jù)的曲線趨勢(shì)明顯欠擬合。2階二次一條拋物線抓住了先升后降的大體趨勢(shì)但對(duì)峰值附近的“平坦”部分?jǐn)M合不足。3階三次曲線更加靈活似乎更好地貼合了數(shù)據(jù)的整體分布包括峰值附近的形態(tài)。4階和5階曲線開始出現(xiàn)不自然的扭動(dòng)特別是在數(shù)據(jù)稀疏的邊界區(qū)域如0點(diǎn)附近和23點(diǎn)附近為了穿過某些訓(xùn)練數(shù)據(jù)點(diǎn)而劇烈彎曲這是過擬合的典型視覺特征。4.3 基于交叉驗(yàn)證的階數(shù)選擇視覺判斷有主觀性我們需要用交叉驗(yàn)證來量化選擇。# 使用5折交叉驗(yàn)證計(jì)算不同階數(shù)模型的平均RMSE cv_rmse_scores [] for degree in degrees: model make_pipeline(PolynomialFeatures(degree), LinearRegression()) # 計(jì)算負(fù)的MSE再取負(fù)得到正的MSE最后開方得到RMSE mse_scores -cross_val_score(model, X_train, y_train, cv5, scoringneg_mean_squared_error) rmse_scores np.sqrt(mse_scores) cv_rmse_scores.append(rmse_scores.mean()) print(f階數(shù) {degree}: 交叉驗(yàn)證平均 RMSE {rmse_scores.mean():.2f}, RMSE標(biāo)準(zhǔn)差 {rmse_scores.std():.2f}) # 找到交叉驗(yàn)證RMSE最小的階數(shù) best_degree_cv degrees[np.argmin(cv_rmse_scores)] print(f\n根據(jù)交叉驗(yàn)證最佳階數(shù)是: {best_degree_cv}) # 繪制交叉驗(yàn)證誤差曲線 plt.figure(figsize(8,5)) plt.plot(degrees, cv_rmse_scores, markero, linestyle-, linewidth2, markersize8) plt.xlabel(多項(xiàng)式階數(shù)) plt.ylabel(交叉驗(yàn)證平均 RMSE) plt.title(交叉驗(yàn)證誤差曲線選擇最優(yōu)階數(shù)) plt.grid(True) plt.xticks(degrees) plt.show()交叉驗(yàn)證的結(jié)果通常會(huì)給出一個(gè)明確的建議。在這個(gè)模擬案例中很可能會(huì)顯示3階模型的平均RMSE最低4階和5階的RMSE開始上升或持平驗(yàn)證了我們之前視覺觀察的結(jié)論3階模型是復(fù)雜度與泛化能力的最佳平衡點(diǎn)。4.4 最終模型評(píng)估與業(yè)務(wù)解讀選定3階模型后我們?cè)谡麄€(gè)測(cè)試集上進(jìn)行最終評(píng)估并解讀結(jié)果。best_model models[best_degree_cv] # 假設(shè)best_degree_cv3 y_test_pred_final best_model.predict(X_test) final_test_r2 r2_score(y_test, y_test_pred_final) final_test_rmse np.sqrt(mean_squared_error(y_test, y_test_pred_final)) final_test_mape np.mean(np.abs((y_test - y_test_pred_final) / y_test)) * 100 # 平均絕對(duì)百分比誤差 print(f最終模型{best_degree_cv}階多項(xiàng)式在測(cè)試集上的表現(xiàn)) print(f R2: {final_test_r2:.4f}) print(f RMSE: {final_test_rmse:.2f} 個(gè)訂單) print(f MAPE: {final_test_mape:.2f}%) # 業(yè)務(wù)解讀 print(f\n業(yè)務(wù)解讀) print(f1. 模型解釋力R2為{final_test_r2:.2%}意味著該模型基于時(shí)間可以解釋訂單量波動(dòng)中約{final_test_r2:.0%}的部分。) print(f2. 預(yù)測(cè)精度平均預(yù)測(cè)誤差約為{final_test_rmse:.0f}個(gè)訂單??紤]到訂單量范圍這個(gè)誤差水平[此處需結(jié)合業(yè)務(wù)判斷例如在可接受范圍內(nèi)/需要進(jìn)一步優(yōu)化]。) print(f3. 趨勢(shì)洞察模型擬合出的曲線顯示訂單高峰大約出現(xiàn)在[根據(jù)擬合曲線計(jì)算出的峰值小時(shí)]點(diǎn)左右這為廣告投放和客服資源調(diào)配提供了參考。)在這個(gè)案例中我們完整走過了從數(shù)據(jù)觀察、模型嘗試、交叉驗(yàn)證選參到最終評(píng)估的流程。關(guān)鍵在于我們沒有盲目選擇在訓(xùn)練集上表現(xiàn)最好的模型那會(huì)是5階而是通過測(cè)試集和交叉驗(yàn)證選擇了泛化能力最強(qiáng)的3階模型。最終匯報(bào)時(shí)我們不僅給出了R2和RMSE的數(shù)值更結(jié)合業(yè)務(wù)場(chǎng)景進(jìn)行了解讀讓數(shù)字產(chǎn)生了實(shí)際意義。多項(xiàng)式回歸是一個(gè)強(qiáng)大的工具但它要求使用者對(duì)模型復(fù)雜度有清醒的認(rèn)識(shí)。R2和RMSE則是我們駕馭這個(gè)工具的儀表盤時(shí)刻提醒我們擬合與泛化之間的微妙平衡。記住一個(gè)好的模型不是最復(fù)雜的那個(gè)而是在未知數(shù)據(jù)上表現(xiàn)最可靠的那個(gè)。

相關(guān)新聞

基于Unreal Engine與Omniverse構(gòu)建數(shù)字孿生工廠:從架構(gòu)到實(shí)戰(zhàn)

基于Unreal Engine與Omniverse構(gòu)建數(shù)字孿生工廠:從架構(gòu)到實(shí)戰(zhàn)

1. 項(xiàng)目概述:從概念到落地的虛實(shí)融合之路“數(shù)字孿生工廠”這個(gè)詞,現(xiàn)在聽起來已經(jīng)不陌生了,但真正把它從PPT上的概念圖,變成一個(gè)在屏幕上實(shí)時(shí)跳動(dòng)、數(shù)據(jù)與實(shí)體完全同步的“活”系統(tǒng),中間隔著一條巨大的鴻溝。我接觸過不…

2026/8/3 4:48:27 閱讀更多
阿貝云免費(fèi)云服務(wù)評(píng)測(cè)與使用指南

阿貝云免費(fèi)云服務(wù)評(píng)測(cè)與使用指南

1. 阿貝云免費(fèi)云服務(wù)初探第一次聽說阿貝云是在一個(gè)開發(fā)者社群的討論中,當(dāng)時(shí)有幾位獨(dú)立開發(fā)者正在分享他們使用的免費(fèi)云服務(wù)資源。作為一個(gè)長(zhǎng)期關(guān)注云計(jì)算領(lǐng)域的技術(shù)從業(yè)者,我對(duì)這類"免費(fèi)午餐"向來持謹(jǐn)慎態(tài)度,但看到多人推薦&#x…

2026/8/3 4:48:27 閱讀更多
UML實(shí)戰(zhàn)指南:從類圖到部署圖,掌握面向?qū)ο笤O(shè)計(jì)核心思維

UML實(shí)戰(zhàn)指南:從類圖到部署圖,掌握面向?qū)ο笤O(shè)計(jì)核心思維

1. 從“找答案”到“掌握方法”:一本經(jīng)典教材的實(shí)戰(zhàn)價(jià)值再思考最近在整理書架時(shí),又翻出了那本經(jīng)典的《UML面向?qū)ο蠓治雠c設(shè)計(jì)(第二版)》。這本書的封皮都有些磨損了,里面還夾著幾張當(dāng)年做練習(xí)時(shí)畫的草稿紙。我注意到&a…

2026/8/3 4:48:27 閱讀更多
天津 GEO 優(yōu)化公司怎么選?從技術(shù)視角甄別服務(wù)商避坑指南

天津 GEO 優(yōu)化公司怎么選?從技術(shù)視角甄別服務(wù)商避坑指南

AI 流量賽道持續(xù)升溫,天津布局 GEO 優(yōu)化的企業(yè)持續(xù)增多,很多數(shù)字化負(fù)責(zé)人面臨選型難題:天津 GEO 優(yōu)化公司如何篩選?市場(chǎng)外包團(tuán)隊(duì)繁多,大量流水線服務(wù)看似性價(jià)比高,實(shí)際難以實(shí)現(xiàn) AI 有效收錄。從技術(shù)角度區(qū)分…

2026/8/3 5:38:29 閱讀更多
5分鐘終極指南:在現(xiàn)代PC上免費(fèi)重溫《塞爾達(dá)傳說:時(shí)之笛》完整體驗(yàn)

5分鐘終極指南:在現(xiàn)代PC上免費(fèi)重溫《塞爾達(dá)傳說:時(shí)之笛》完整體驗(yàn)

5分鐘終極指南:在現(xiàn)代PC上免費(fèi)重溫《塞爾達(dá)傳說:時(shí)之笛》完整體驗(yàn) 【免費(fèi)下載鏈接】Shipwright 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/sh/Shipwright 你是否還記得那個(gè)在N64上探索海拉爾大陸的林克?現(xiàn)在,通過Sh…

2026/8/3 5:38:29 閱讀更多
智能座艙語音交互技術(shù)解析與應(yīng)用實(shí)踐

智能座艙語音交互技術(shù)解析與應(yīng)用實(shí)踐

1. 智能座艙語音交互技術(shù)概述最近兩年,汽車智能化浪潮席卷整個(gè)行業(yè),其中最直觀的體驗(yàn)升級(jí)就是智能座艙系統(tǒng)。作為人車交互的核心入口,車載語音技術(shù)已經(jīng)從簡(jiǎn)單的命令識(shí)別進(jìn)化到全場(chǎng)景自然對(duì)話。記得去年測(cè)試某品牌新車時(shí),只需說&qu…

2026/8/3 5:38:29 閱讀更多
AI論文寫作工具實(shí)測(cè)對(duì)比與選型指南

AI論文寫作工具實(shí)測(cè)對(duì)比與選型指南

1. 論文寫作AI工具橫評(píng):為什么我們需要實(shí)測(cè)?去年幫導(dǎo)師審研究生論文時(shí),我發(fā)現(xiàn)有個(gè)現(xiàn)象特別有意思:同一課題組的三篇論文,引言部分的句式結(jié)構(gòu)和專業(yè)術(shù)語使用高度相似,連非常冷門的學(xué)術(shù)縮略語都如出一轍。后來…

2026/8/3 5:38:29 閱讀更多
文本結(jié)構(gòu)分析:從語義理解到功能解構(gòu)的技術(shù)突破

文本結(jié)構(gòu)分析:從語義理解到功能解構(gòu)的技術(shù)突破

1. 文本解析的維度升級(jí):從語義理解到結(jié)構(gòu)解構(gòu) 在自然語言處理領(lǐng)域,我們長(zhǎng)期將注意力集中在文本的"血肉"——即語義內(nèi)容的理解上。傳統(tǒng)的文本分析方法主要關(guān)注詞義消歧、情感傾向判斷、實(shí)體識(shí)別等表層語義特征。但就像醫(yī)生需要同時(shí)觀察骨骼和肌…

2026/8/3 5:38:28 閱讀更多
研究生科研效率提升:5 款不花哨但管用的學(xué)術(shù)輔助工具盤點(diǎn)

研究生科研效率提升:5 款不花哨但管用的學(xué)術(shù)輔助工具盤點(diǎn)

隨著大模型爆發(fā),市面上的 AI 輔助科研工具鋪天蓋地。但很多同學(xué)在面對(duì)文獻(xiàn)綜述、數(shù)據(jù)處理和論文修改時(shí),依然只會(huì)傻傻地用通用 AI 聊天框庫(kù)庫(kù)輸入指令。由于通用大模型的局限,寫出的東西不僅格式不規(guī)范,還經(jīng)常瞎編文獻(xiàn)。其實(shí)在科研…

2026/8/3 5:28:28 閱讀更多
全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

更多請(qǐng)點(diǎn)擊: https://kaifayun.com 第一章:全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎概覽 名片AI引擎是企業(yè)級(jí)智能文檔處理的核心組件,專注于高精度OCR、語義結(jié)構(gòu)化提取與跨語言實(shí)體對(duì)齊。截至2024年第三季度,全球范圍內(nèi)僅…

2026/8/3 0:07:47 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來沒有這么容易過! 支持本地語音模型chatTTS,fasterwhisper,…

2026/8/2 0:04:00 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/2 2:52:49 閱讀更多