學(xué)建模競賽實(shí)戰(zhàn):基于殘差學(xué)習(xí)的空氣質(zhì)量預(yù)報二次建模與優(yōu)化)
1. 項(xiàng)目背景與核心挑戰(zhàn)解析“華為杯”全國研究生數(shù)學(xué)建模競賽在圈內(nèi)人看來從來就不是一場簡單的考試。它更像是一次高強(qiáng)度、短周期的科研實(shí)戰(zhàn)演練對參賽者的知識廣度、建模深度、編程實(shí)現(xiàn)和論文寫作能力提出了全方位的挑戰(zhàn)。2021年的B題我記得很清楚題目聚焦于“空氣質(zhì)量預(yù)報二次建模”。這題目一出來當(dāng)時我們團(tuán)隊就意識到這絕對是一塊硬骨頭。它不像一些優(yōu)化類題目有明確的數(shù)學(xué)模型可以套用也不像一些數(shù)據(jù)分析題單純做特征工程和機(jī)器學(xué)習(xí)就能搞定。它要求你在已有預(yù)報模型的基礎(chǔ)上進(jìn)行“二次建模”這意味著你既要理解前序模型的機(jī)理與局限又要提出自己的創(chuàng)新性改進(jìn)方案最終用翔實(shí)的數(shù)據(jù)和嚴(yán)謹(jǐn)?shù)恼撟C來證明你的模型更優(yōu)。這道題的核心挑戰(zhàn)我認(rèn)為可以歸結(jié)為三點(diǎn)。第一是問題理解的深度。題目給出的數(shù)據(jù)包括歷史空氣質(zhì)量監(jiān)測數(shù)據(jù)、氣象預(yù)報數(shù)據(jù)以及一家商業(yè)公司提供的空氣質(zhì)量預(yù)報數(shù)據(jù)。你需要深刻理解這些數(shù)據(jù)之間的關(guān)系氣象條件如何影響污染物擴(kuò)散商業(yè)預(yù)報模型可能基于什么原理它的系統(tǒng)誤差體現(xiàn)在哪里第二是建模策略的獨(dú)創(chuàng)性。“二次建模”不是簡單的修修補(bǔ)補(bǔ)你需要提出一個清晰的改進(jìn)框架是采用統(tǒng)計修正、機(jī)器學(xué)習(xí)融合還是引入新的物理/化學(xué)機(jī)制這個選擇直接決定了作品的上限。第三是結(jié)果的可解釋性與穩(wěn)健性。在數(shù)學(xué)建模競賽中一個在測試集上表現(xiàn)良好但無法解釋的“黑箱”模型得分往往不如一個可解釋性強(qiáng)、邏輯清晰的“白箱”或“灰箱”模型。如何讓你的改進(jìn)既有效又能讓評委老師信服這是需要精心設(shè)計的。回顧2021年我們團(tuán)隊在解決這道題時走了不少彎路也積累了一些寶貴的經(jīng)驗(yàn)。今天我就以這道題為載體拋開那些籠統(tǒng)的“第一步、第二步”套路深入聊聊面對這類復(fù)雜開放性問題時一個成熟的團(tuán)隊?wèi)?yīng)該如何拆解問題、構(gòu)建方案并最終落地成文。我會結(jié)合我們當(dāng)時的思路并補(bǔ)充一些事后看來更優(yōu)的解法以及關(guān)鍵的代碼實(shí)現(xiàn)片段基于Python。希望這篇內(nèi)容不僅能幫你回顧這道題更能為你應(yīng)對未來的建模挑戰(zhàn)提供一套可遷移的方法論。2. 數(shù)據(jù)深潛從雜亂到洞察的關(guān)鍵預(yù)處理拿到競賽數(shù)據(jù)包第一步永遠(yuǎn)不是急著跑模型而是靜下心來像法醫(yī)解剖一樣審視你的數(shù)據(jù)。2021年B題的數(shù)據(jù)主要包括三部分多個城市長時間序列的空氣質(zhì)量實(shí)測數(shù)據(jù)如PM2.5、PM10、SO2等濃度、對應(yīng)時段的氣象預(yù)報數(shù)據(jù)如風(fēng)速、風(fēng)向、溫度、濕度、氣壓以及一家商業(yè)機(jī)構(gòu)提供的對這些空氣質(zhì)量指標(biāo)的預(yù)報數(shù)據(jù)。你的任務(wù)就是利用實(shí)測數(shù)據(jù)和氣象數(shù)據(jù)去評估并改進(jìn)這家商業(yè)機(jī)構(gòu)的預(yù)報結(jié)果。2.1 數(shù)據(jù)質(zhì)量診斷與清洗首先我們必須對數(shù)據(jù)進(jìn)行全面的“體檢”。使用Pandas進(jìn)行初步探索是標(biāo)準(zhǔn)操作但這里我想強(qiáng)調(diào)幾個容易被忽略的關(guān)鍵點(diǎn)時空一致性校驗(yàn)檢查不同數(shù)據(jù)源實(shí)測、氣象預(yù)報、商業(yè)預(yù)報的時間戳是否嚴(yán)格對齊。是否存在時區(qū)問題采樣頻率是否一致都是逐小時數(shù)據(jù)對于缺失的時間點(diǎn)是直接線性插值還是需要結(jié)合氣象數(shù)據(jù)的周期性進(jìn)行更合理的填充我們當(dāng)時發(fā)現(xiàn)商業(yè)預(yù)報數(shù)據(jù)在個別時刻存在整點(diǎn)漂移如應(yīng)該是08:00的數(shù)據(jù)標(biāo)在了07:59這種細(xì)微的不一致如果不處理在后續(xù)計算誤差指標(biāo)時會引入噪聲。異常值檢測與業(yè)務(wù)邏輯判斷不能單純用3σ原則三倍標(biāo)準(zhǔn)差處理異常值。對于空氣質(zhì)量數(shù)據(jù)需要結(jié)合國家《環(huán)境空氣質(zhì)量標(biāo)準(zhǔn)》中的濃度限值進(jìn)行判斷。例如PM2.5的24小時平均一級標(biāo)準(zhǔn)是35μg/m3二級標(biāo)準(zhǔn)是75μg/m3如果出現(xiàn)超過500甚至1000的數(shù)值大概率是監(jiān)測儀器故障或數(shù)據(jù)傳輸錯誤。對于這類異常值我們采用了“前后時刻均值替換法”但如果連續(xù)異常則標(biāo)記為缺失段采用時間序列預(yù)測方法如ARIMA進(jìn)行填補(bǔ)。這里附上一段關(guān)鍵的異常值檢測與處理代碼框架import pandas as pd import numpy as np from scipy import stats def diagnose_and_clean_air_quality(df, pollutantPM2.5, std_threshold3, business_rulesNone): 診斷并清洗空氣質(zhì)量數(shù)據(jù)。 df: 包含時間戳和污染物濃度的DataFrame pollutant: 污染物列名 std_threshold: 標(biāo)準(zhǔn)差閾值用于統(tǒng)計異常值檢測 business_rules: 字典定義業(yè)務(wù)規(guī)則上下限如 {PM2.5: (0, 500)} series df[pollutant].copy() original_missing series.isnull().sum() # 1. 基于業(yè)務(wù)規(guī)則的異常值檢測 if business_rules and pollutant in business_rules: lower, upper business_rules[pollutant] rule_outliers (series lower) | (series upper) print(f基于業(yè)務(wù)規(guī)則{pollutant} 發(fā)現(xiàn) {rule_outliers.sum()} 個異常值。) series[rule_outliers] np.nan # 2. 基于統(tǒng)計Z-score的異常值檢測在去除業(yè)務(wù)異常值后進(jìn)行更合理 # 注意對于非正態(tài)分布數(shù)據(jù)Z-score效果可能不好可考慮使用IQR四分位距法 z_scores np.abs(stats.zscore(series.dropna())) z_outliers_mask np.abs(stats.zscore(series)) std_threshold # 更穩(wěn)健的方法使用IQR Q1 series.quantile(0.25) Q3 series.quantile(0.75) IQR Q3 - Q1 iqr_outliers_mask (series (Q1 - 1.5 * IQR)) | (series (Q3 1.5 * IQR)) # 我們最終選擇IQR法標(biāo)記異常值 series[iqr_outliers_mask] np.nan print(f基于IQR法則{pollutant} 標(biāo)記了 {iqr_outliers_mask.sum()} 個統(tǒng)計異常值。) # 3. 缺失值填補(bǔ)以前后時刻均值法為例簡單有效 # 對于連續(xù)缺失較多的段建議用更復(fù)雜的方法如線性插值、時間序列預(yù)測 series_filled series.interpolate(methodlinear, limit_directionboth) # 4. 最終檢查 final_missing series_filled.isnull().sum() print(f{pollutant} 初始缺失值: {original_missing}, 處理后缺失值: {final_missing}) df[pollutant _cleaned] series_filled return df # 使用示例 # business_limits {PM2.5: (0, 500), PM10: (0, 600)} # df diagnose_and_clean_air_quality(df, PM2.5, business_rulesbusiness_limits)氣象數(shù)據(jù)的矢量分解與有效性轉(zhuǎn)換風(fēng)向是角度數(shù)據(jù)不能直接用于線性模型。必須將其分解為東-西U和南-北V兩個方向的分量U wind_speed * sin(wind_direction * π / 180),V wind_speed * cos(wind_direction * π / 180)。這樣處理后的特征在物理意義上更清晰也便于模型學(xué)習(xí)。此外對于風(fēng)速我們常常會考慮其平方項(xiàng)因?yàn)槲廴疚飻U(kuò)散速率可能與風(fēng)速的平方相關(guān)。2.2 特征工程構(gòu)建模型“理解”世界的語言原始數(shù)據(jù)是“原材料”特征工程就是“烹飪”決定了模型能吸收到什么營養(yǎng)。對于空氣質(zhì)量預(yù)報問題僅僅使用當(dāng)前時刻的氣象和污染物濃度是遠(yuǎn)遠(yuǎn)不夠的。滯后特征污染物的濃度具有強(qiáng)烈的自相關(guān)性。今天的PM2.5水平肯定和昨天、前天的水平高度相關(guān)。因此必須構(gòu)建滯后特征Lag Features例如前1小時、前3小時、前24小時代表日變化的污染物濃度和關(guān)鍵氣象要素。這相當(dāng)于讓模型擁有了“記憶”。移動統(tǒng)計特征計算滑動窗口內(nèi)的統(tǒng)計量如過去6小時、12小時、24小時的均值、標(biāo)準(zhǔn)差、最大值、最小值。這能幫助模型捕捉污染的累積效應(yīng)和波動趨勢。例如過去24小時PM2.5的平均值可能比當(dāng)前瞬時值更能反映背景污染水平。交互特征與衍生特征這是體現(xiàn)建模者物理化學(xué)直覺的地方。例如大氣穩(wěn)定度指標(biāo)可以嘗試用溫度垂直梯度高層與低層溫度差和風(fēng)速來構(gòu)造一個簡單的穩(wěn)定度指數(shù)。穩(wěn)定的大氣層結(jié)不利于污染物擴(kuò)散。排放強(qiáng)度估算在缺乏精確排放清單的情況下可以利用工作日/周末、節(jié)假日標(biāo)志以及交通流量如果數(shù)據(jù)中有等構(gòu)建一個簡單的排放強(qiáng)度代理特征。氣象綜合指數(shù)例如將高濕度、低風(fēng)速、無降水的情況組合成一個“易污染氣象條件”布爾標(biāo)志。時空關(guān)聯(lián)特征對于多城市數(shù)據(jù)可以考慮引入上游城市的污染物濃度作為下游城市的特征需考慮風(fēng)向和距離。這模擬了污染物的區(qū)域輸送過程。一個重要的心得特征工程不是一蹴而就的它應(yīng)該是一個與模型訓(xùn)練交織在一起的迭代過程。我們當(dāng)時的做法是先構(gòu)建一個基礎(chǔ)特征集包括滯后項(xiàng)和滑動平均訓(xùn)練一個簡單的線性模型或樹模型如LightGBM然后分析模型的特征重要性Feature Importance。對于那些重要性極低的特征可以考慮剔除同時觀察模型在哪些樣本上預(yù)測誤差大反過來思考是否缺少了能描述這些特殊情況的特征。例如我們發(fā)現(xiàn)模型在靜風(fēng)風(fēng)速接近0且濕度大的夜間預(yù)測誤差系統(tǒng)性偏高。于是我們增加了“靜風(fēng)高濕”這個交互特征后續(xù)模型的性能得到了提升。3. 二次建模的核心誤差分析與模型框架選擇在完成扎實(shí)的數(shù)據(jù)預(yù)處理后我們才真正面對“二次建模”這個核心。商業(yè)預(yù)報模型對我們來說是一個“灰箱”——我們知道它的輸入和輸出但不知道內(nèi)部具體結(jié)構(gòu)。我們的目標(biāo)不是重建它而是修正它。3.1 系統(tǒng)性誤差分解首先我們對商業(yè)預(yù)報模型的誤差進(jìn)行了細(xì)致的分解。將誤差定義為誤差 商業(yè)預(yù)報值 - 實(shí)測值。然后從多個維度分析時間維度誤差是否具有明顯的日變化、周變化或季節(jié)變化規(guī)律例如是否在每日早晚高峰時段誤差更大是否在冬季采暖季誤差有系統(tǒng)性偏移空間維度不同城市的誤差分布是否有顯著差異這可能與城市的地理位置、產(chǎn)業(yè)結(jié)構(gòu)、商業(yè)模型本地化程度有關(guān)。濃度水平維度將實(shí)測值按濃度分段如優(yōu)、良、輕度污染、中度污染等分析在不同污染水平下誤差的均值、方差如何變化。很多模型在污染峰值時容易低估“截峰”效應(yīng)在清潔時可能高估。氣象條件維度在不同的風(fēng)速、風(fēng)向、濕度、降水條件下誤差的分布特征是什么例如是否在東南風(fēng)時誤差普遍為負(fù)預(yù)報偏低這種分析的目的是找到商業(yè)模型誤差的“模式”。如果誤差是純粹隨機(jī)的白噪聲那么改進(jìn)空間很小。但通常這類業(yè)務(wù)化模型會存在一些系統(tǒng)性偏差這正是我們“二次建模”的突破口。3.2 主流修正框架對比與選型基于誤差分析的結(jié)果我們可以選擇不同的修正框架。當(dāng)時我們團(tuán)隊主要評估了三種路徑線性/非線性回歸修正法思路將商業(yè)預(yù)報值作為一個核心特征連同其他氣象特征、歷史污染物特征一起輸入到一個新的回歸模型中去預(yù)測最終的“修正后預(yù)報值”。這個新模型的目標(biāo)變量是“實(shí)測值”。優(yōu)點(diǎn)實(shí)現(xiàn)簡單可解釋性相對較好。如果使用線性回歸修正系數(shù)可以直接反映商業(yè)預(yù)報的偏差程度。缺點(diǎn)假設(shè)商業(yè)預(yù)報值本身包含大量有效信息只是存在線性或可參數(shù)化的非線性偏差。如果商業(yè)模型在某些復(fù)雜非線性場景下完全失效此方法改進(jìn)有限。適用場景誤差分析顯示誤差與某些特征如預(yù)報值本身、風(fēng)速、濕度存在明顯的相關(guān)性。殘差學(xué)習(xí)法思路不直接預(yù)測最終濃度而是預(yù)測商業(yè)模型的“誤差”即殘差。構(gòu)建一個模型G(X)其輸入X包括氣象特征、歷史特征等輸出是對商業(yè)預(yù)報誤差的預(yù)測值。最終修正預(yù)報為商業(yè)預(yù)報值 G(X)。優(yōu)點(diǎn)任務(wù)更聚焦。模型G只需要學(xué)習(xí)“商業(yè)模型錯在哪里”而不需要重新學(xué)習(xí)完整的污染物變化規(guī)律可能更容易訓(xùn)練。物理意義清晰G(X)就是對系統(tǒng)偏差的估計。缺點(diǎn)如果商業(yè)模型本身在某些情況下預(yù)測毫無道理那么學(xué)習(xí)其殘差可能和重新學(xué)習(xí)一樣困難。適用場景商業(yè)模型整體預(yù)測趨勢正確但存在規(guī)律性的高估或低估。模型融合法思路將商業(yè)預(yù)報模型視為一個“專家”我們另外訓(xùn)練一個全新的、基于實(shí)測數(shù)據(jù)和氣象數(shù)據(jù)的預(yù)報模型作為另一個“專家”。然后采用某種策略如加權(quán)平均、Stacking集成將兩個“專家”的預(yù)測結(jié)果融合。優(yōu)點(diǎn)不依賴于商業(yè)模型的誤差模式自主性更強(qiáng)。如果我們的自建模型足夠優(yōu)秀甚至可以主導(dǎo)最終結(jié)果。缺點(diǎn)需要構(gòu)建一個全新的、性能不錯的預(yù)報模型工作量最大。且融合權(quán)重的確定需要技巧容易過擬合。適用場景商業(yè)模型質(zhì)量一般而我們對自己的建模能力有信心且有足夠的數(shù)據(jù)和算力訓(xùn)練一個新模型。我們的選擇與理由經(jīng)過分析和初步試驗(yàn)我們選擇了殘差學(xué)習(xí)法作為主框架。原因有三第一誤差分析表明商業(yè)模型的誤差在特定氣象條件下如靜穩(wěn)天氣呈現(xiàn)明顯的系統(tǒng)性正偏差預(yù)報偏高這符合殘差學(xué)習(xí)的假設(shè)。第二殘差學(xué)習(xí)框架物理意義明確在論文中易于闡述和解釋。第三相對于直接回歸殘差學(xué)習(xí)的預(yù)測目標(biāo)誤差值量級更小模型可能更快收斂。我們以商業(yè)預(yù)報誤差作為目標(biāo)變量構(gòu)建了包含滯后污染物、氣象要素及其交互項(xiàng)的特征集使用LightGBM回歸器進(jìn)行訓(xùn)練。4. 模型實(shí)現(xiàn)、評估與論文呈現(xiàn)要點(diǎn)確定了“殘差學(xué)習(xí)LightGBM”的框架后接下來的工作就是具體的實(shí)現(xiàn)、調(diào)優(yōu)和結(jié)果分析。4.1 模型訓(xùn)練的關(guān)鍵細(xì)節(jié)數(shù)據(jù)劃分切忌使用隨機(jī)劃分時間序列數(shù)據(jù)必須按時間順序劃分訓(xùn)練集、驗(yàn)證集和測試集。例如用前70%時間的數(shù)據(jù)做訓(xùn)練中間15%做驗(yàn)證用于調(diào)參和早停最后15%做測試用于最終評估且在整個訓(xùn)練調(diào)參過程中完全不可見。這才能模擬真實(shí)的預(yù)報場景評估模型的泛化能力。損失函數(shù)選擇回歸問題常用的損失函數(shù)是均方誤差MSE或平均絕對誤差MAE。MSE對大的誤差懲罰更重傾向于減少極端錯誤MAE則更穩(wěn)健對異常值不敏感。在空氣質(zhì)量預(yù)報中我們更關(guān)心污染峰值高濃度的預(yù)報準(zhǔn)確性因?yàn)檫@對預(yù)警更重要。因此可以考慮使用加權(quán)均方誤差給高濃度樣本賦予更高的權(quán)重。或者直接采用分位數(shù)損失例如預(yù)測90分位數(shù)這樣可以更好地把握污染的上限。LightGBM調(diào)參要點(diǎn)num_leaves這是控制模型復(fù)雜度的關(guān)鍵參數(shù)。不宜過大否則容易過擬合。可以從31、63開始嘗試。min_data_in_leaf葉子節(jié)點(diǎn)最小樣本數(shù)防止過擬合的有效工具。對于時間序列可以設(shè)置得稍大一些如20-50。feature_fraction/bagging_fraction每次迭代隨機(jī)選取部分特征或數(shù)據(jù)進(jìn)行訓(xùn)練這是集成學(xué)習(xí)防止過擬合的核心。lambda_l1,lambda_l2L1和L2正則化進(jìn)一步控制模型復(fù)雜度。一定要使用早停法設(shè)置一個驗(yàn)證集當(dāng)驗(yàn)證集誤差連續(xù)N輪如50輪不再下降時停止訓(xùn)練。這是防止過擬合最簡單有效的方法。import lightgbm as lgb from sklearn.model_selection import TimeSeriesSplit import numpy as np # 假設(shè) X, y 已經(jīng)是特征矩陣和目標(biāo)向量商業(yè)預(yù)報誤差 # 并且數(shù)據(jù)已經(jīng)按時間排序 # 時間序列交叉驗(yàn)證劃分 tss TimeSeriesSplit(n_splits5) fold_scores [] for train_idx, val_idx in tss.split(X): X_train, X_val X.iloc[train_idx], X.iloc[val_idx] y_train, y_val y.iloc[train_idx], y.iloc[val_idx] # 創(chuàng)建LightGBM數(shù)據(jù)集 lgb_train lgb.Dataset(X_train, y_train) lgb_eval lgb.Dataset(X_val, y_val, referencelgb_train) # 參數(shù)設(shè)置 params { boosting_type: gbdt, objective: regression, metric: {l2, l1}, num_leaves: 31, learning_rate: 0.05, feature_fraction: 0.9, bagging_fraction: 0.8, bagging_freq: 5, verbose: -1, lambda_l1: 0.1, lambda_l2: 0.1, min_data_in_leaf: 20 } # 訓(xùn)練使用早停 gbm lgb.train(params, lgb_train, num_boost_round2000, valid_sets[lgb_train, lgb_eval], valid_names[train, eval], callbacks[lgb.early_stopping(stopping_rounds50), lgb.log_evaluation(100)]) # 預(yù)測并評估 y_pred_val gbm.predict(X_val, num_iterationgbm.best_iteration) # 計算評估指標(biāo)如MAE, RMSE mae np.mean(np.abs(y_val - y_pred_val)) fold_scores.append(mae) print(fFold MAE: {mae:.4f}) print(fAverage MAE across folds: {np.mean(fold_scores):.4f}) # 全量數(shù)據(jù)重新訓(xùn)練最終模型使用早停確定的最佳輪數(shù) final_model lgb.train(params, lgb.Dataset(X, y), num_boost_roundgbm.best_iteration) # 使用之前找到的最佳輪數(shù)4.2 評估指標(biāo)與結(jié)果分析在競賽中選擇合適的評估指標(biāo)并對其進(jìn)行深入分析是論文獲得高分的關(guān)鍵。必須使用的指標(biāo)MAE (平均絕對誤差)直觀反映平均誤差大小。RMSE (均方根誤差)對大的誤差更敏感能衡量預(yù)報的穩(wěn)定性。R2 (決定系數(shù))反映模型對數(shù)據(jù)波動的解釋能力。對比商業(yè)模型和二次模型的R2能清晰展示改進(jìn)幅度。IA (一致性指數(shù))在環(huán)境領(lǐng)域常用越接近1越好能綜合衡量預(yù)測值與觀測值的接近程度和一致性。深入分析維度分濃度段評估分別計算在優(yōu)、良、輕度污染等不同等級下各模型的MAE、RMSE和預(yù)報準(zhǔn)確率等級預(yù)報正確率。這能證明你的模型不僅在整體上更優(yōu)在關(guān)鍵的高污染時段也更可靠。典型過程線對比在測試集中選取幾個典型的污染過程如一次持續(xù)3天的霧霾過程繪制實(shí)測值、商業(yè)預(yù)報值、你的修正預(yù)報值的時間序列對比圖。一張清晰的、能顯示你模型成功“糾偏”的圖勝過千言萬語。誤差分布對比繪制商業(yè)模型和你的模型的誤差分布直方圖或箱線圖。理想情況下你的模型誤差分布應(yīng)該更窄方差小且均值更接近0偏差小。4.3 論文寫作與圖表呈現(xiàn)心法數(shù)學(xué)建模競賽歸根結(jié)底是“建模”“論文”。一個優(yōu)秀的模型需要一個優(yōu)秀的表達(dá)。邏輯主線要清晰摘要和引言部分就要明確拋出“商業(yè)模型存在系統(tǒng)性誤差→我們通過誤差分析定位了誤差模式→采用殘差學(xué)習(xí)框架構(gòu)建修正模型→實(shí)證表明修正模型全面優(yōu)于原模型”這條主線。圖表是王道一張圖說明你的整體建模流程流程圖讓評委一眼看懂你的技術(shù)路線。用組合圖展示誤差分析結(jié)果如誤差的日變化箱線圖、隨風(fēng)速變化的散點(diǎn)圖。特征重要性圖LightGBM可直接輸出非常重要它能直觀展示哪些因素如前期污染物濃度、特定氣象條件對修正誤差貢獻(xiàn)最大這本身就是強(qiáng)有力的分析。結(jié)果對比圖一定要精心設(shè)計。除了時間序列對比圖還可以畫散點(diǎn)圖預(yù)測值 vs 觀測值并添加yx的參考線。完美的預(yù)測應(yīng)該所有點(diǎn)都落在這條線上。可以對比商業(yè)模型和你的模型的散點(diǎn)圖看誰的點(diǎn)更緊密地分布在參考線周圍。模型假設(shè)與局限性在論文中主動討論模型的假設(shè)如誤差的可預(yù)測性、局限性如對于極端罕見氣象條件的預(yù)報能力可能不足以及未來改進(jìn)方向如引入更多源數(shù)據(jù)這體現(xiàn)了思維的嚴(yán)謹(jǐn)性和深度是加分項(xiàng)。代碼與可復(fù)現(xiàn)性雖然論文正文不貼大量代碼但在附錄或提交的附件中提供清晰、有注釋的核心代碼片段如特征工程、模型訓(xùn)練的關(guān)鍵部分能極大增加論文的可信度。最后想說的是解決“華為杯”這類競賽題目沒有唯一的正確答案。評委看重的是你分析問題的邏輯、建模過程的嚴(yán)謹(jǐn)、結(jié)果驗(yàn)證的全面以及論文表述的清晰。從數(shù)據(jù)清洗的耐心到特征工程的巧思再到模型選擇的權(quán)衡最后到論文寫作的雕琢每一個環(huán)節(jié)都考驗(yàn)著團(tuán)隊的綜合實(shí)力。希望這篇基于2021年B題的長文復(fù)盤能為你打開一扇窗看到數(shù)學(xué)建模競賽背后那些更本質(zhì)、更值得打磨的東西。真正的收獲遠(yuǎn)不止于一個獎項(xiàng)而是這套從模糊問題到清晰解決方案的完整思維與執(zhí)行能力。