網(wǎng)絡(luò)的高大平房倉溫度場預(yù)測實戰(zhàn)指南)
簡介《基于BP神經(jīng)網(wǎng)絡(luò)方法的高大平房倉溫度場預(yù)測研究》是一份學(xué)術(shù)論文PDF內(nèi)容圍繞國家糧食儲備倉型——高大平房倉的溫度場預(yù)測展開面向糧油倉儲安全監(jiān)測、機器學(xué)習(xí)算法應(yīng)用以及數(shù)據(jù)建模方向的科研人員、工程師與學(xué)生。該研究以BP神經(jīng)網(wǎng)絡(luò)為核心結(jié)合實際糧情監(jiān)測數(shù)據(jù)來自江蘇省某糧庫192個溫度監(jiān)測點、3萬多組樣本在MATLAB平臺構(gòu)建并訓(xùn)練溫度場預(yù)測模型夏季糧堆容易因外界持續(xù)傳熱和微生物繁殖而發(fā)熱利用該模型可提前預(yù)判倉內(nèi)溫度變化為通風(fēng)控溫決策提供依據(jù)。文檔不僅分析了溫度、濕度、氣流速率、糧種和儲藏時間等因素對溫度場的影響還借助SPSS統(tǒng)計學(xué)軟件量化各影響因素權(quán)重并通過神經(jīng)網(wǎng)絡(luò)驗證主成分分析結(jié)論方法鏈條完整對農(nóng)業(yè)場景中的非線性建模有較強參考價值。資源包共1個PDF文件大小315KB目前已有188人學(xué)習(xí)/下載適合正在研究糧情預(yù)測、儲糧信息化或BP神經(jīng)網(wǎng)絡(luò)應(yīng)用的讀者直接借鑒。1. 基于BP神經(jīng)網(wǎng)絡(luò)預(yù)測高大平房倉溫度場先回答明天哪里會先熱每年七月最悶熱的那幾天我經(jīng)常對著測溫屏幕發(fā)呆八十多個測點都在 28℃ 附近來回跳動表面看起來一切正常但誰也說不準(zhǔn)第二天東北角第六根電纜中層會不會一個猛子沖上 30℃。高大平房倉的溫度場預(yù)測解決的就是這種數(shù)據(jù)全在眼前卻沒人敢打包票的難題?;贐P神經(jīng)網(wǎng)絡(luò)的做法是把過去幾天的各點溫度序列、空間位置和外部氣溫一起喂進網(wǎng)絡(luò)讓它自己學(xué)出從歷史到未來的非線性映射輸出未來 24 到 72 小時的溫度場。它不需要你推導(dǎo)糧堆的熱傳導(dǎo)微分方程也不用給倉壁和糧面設(shè)定一堆邊界條件對糧庫信息化工程師、儲糧技術(shù)員和設(shè)備廠商的算法崗來說是一條能直接落地的實用路線。2. 為什么溫度場預(yù)測要選 BP滯后、非線性和那張結(jié)構(gòu)圖2.1 平房倉溫度場的滯后和非線性讓線性模型先出局高大平房倉的糧堆體積動輒幾千立方米導(dǎo)熱系數(shù)跟木材一個量級比混凝土低得多熱量在糧堆里走得極慢。外界氣溫對糧堆的影響要滯后幾十天才能滲透到中心層與此同時糧堆本身還是個發(fā)熱體糧食呼吸和微生物代謝的熱量在局部積累形成溫差和熱濕遷移。這幾個效應(yīng)疊加在一起讓每個測點的溫度序列表現(xiàn)出強烈的自相關(guān)和明顯的非線性。自相關(guān)強意味著今天的溫度對預(yù)測明天很重要非線性強意味著溫度增量不等于外溫增量乘一個固定系數(shù)。糧庫里最常見的傳統(tǒng)做法是拿上一時段溫度加外溫修正做預(yù)報本質(zhì)上假設(shè)溫度增量與外溫線性相關(guān)。這個假設(shè)在倉壁附近勉強成立因為那一帶受外溫傳導(dǎo)主導(dǎo)可一旦到了糧堆中心呼吸熱和熱濕耦合占上風(fēng)線性修正就徹底失準(zhǔn)。更麻煩的是通風(fēng)作業(yè)冷鋒從通風(fēng)口往糧堆里推進局部溫度能在十幾個小時內(nèi)急速下降這不是一個線性系數(shù)能描述的現(xiàn)象。線性模型出局之后就得找一個能擬合任意非線性映射的工具BP 神經(jīng)網(wǎng)絡(luò)正好在這個位置上。2.2 先畫一張 BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖輸入層、隱層、輸出層怎么連在做任何訓(xùn)練之前我習(xí)慣先把預(yù)測任務(wù)翻譯成一張 BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖。對于一個具體的測點任務(wù)可以寫成已知該點過去 7 天每隔 6 小時的溫度值疊加位置特征和外部氣溫求它未來 72 小時后的溫度。這是一個從高維輸入到單點輸出的連續(xù)映射BP 網(wǎng)絡(luò)能逼近它靠的是萬能逼近定理——只要隱層節(jié)點足夠多三層前饋網(wǎng)絡(luò)就能以任意精度逼近任意連續(xù)函數(shù)。具體到這張結(jié)構(gòu)圖輸入層放過去 7 天每天 4 個時刻的溫度也就是 28 個神經(jīng)元再拼上測點的層位、行列坐標(biāo)和未來一段的外部氣溫總共 32 到 36 個輸入神經(jīng)元。第一隱層用 16 個 tanh 節(jié)點第二隱層用 8 個輸出層只有 1 個神經(jīng)元輸出未來溫度。這個規(guī)模看起來很小但很合適平房倉一個倉的可用歷史數(shù)據(jù)通常只有幾萬條量級把網(wǎng)絡(luò)堆到上百個節(jié)點學(xué)到的就不是規(guī)律而是噪聲。記住先畫結(jié)構(gòu)圖再寫代碼輸入維度和隱層寬度都從這張圖里定下來。2.3 為什么不用 LSTM數(shù)據(jù)量、可解釋性和工程維護的現(xiàn)實權(quán)衡聊到溫度場預(yù)測很多人第一反應(yīng)是為什么不用 LSTM。LSTM 在長序列建模上確實更優(yōu)雅但工程上有個很現(xiàn)實的問題糧庫測溫系統(tǒng)的歷史數(shù)據(jù)量、質(zhì)量和記錄連續(xù)性普遍撐不起深度學(xué)習(xí)時序模型的訓(xùn)練。BP 網(wǎng)絡(luò)把時間序列問題轉(zhuǎn)成靜態(tài)映射只要構(gòu)造好滑動窗口就能用成熟穩(wěn)定的訓(xùn)練方式去擬合權(quán)重固定后甚至可以導(dǎo)出為矩陣乘法部署到倉庫的工控機上毫無壓力。LSTM 的時序狀態(tài)在糧庫這種低采樣頻率、多缺測的數(shù)據(jù)環(huán)境里優(yōu)勢未必能發(fā)揮出來反而讓排查模型出錯點變成猜謎。如果哪天業(yè)務(wù)真的需要逐小時滾動更新、在線學(xué)習(xí)再升級到 GRU 或 LSTM 也不遲第一版用 BP 跑通預(yù)測流程是更務(wù)實的起點。3. 從測溫系統(tǒng)到訓(xùn)練樣本數(shù)據(jù)準(zhǔn)備決定模型上限3.1 導(dǎo)出數(shù)據(jù)整理成位置-時間-溫度長表做預(yù)測模型數(shù)據(jù)準(zhǔn)備占掉整個工作量的大頭這一點在糧庫場景里尤其明顯。常見測溫系統(tǒng)導(dǎo)出的結(jié)果是一張大寬表每一行是一條記錄包含記錄時間、電纜編號、電纜內(nèi)的測點序號和溫度值配合另一張配置表能查到每根電纜的行列位置和層位。第一步是把這些表關(guān)聯(lián)起來整理成長表格式一列時間一列位置標(biāo)識一列溫度值。位置標(biāo)識不需要很精確用層位加行列坐標(biāo)就能讓模型區(qū)分倉壁邊的點和糧堆中心的點。3.2 清洗與插值壞值、停測和通風(fēng)擾動測溫傳感器常年泡在糧堆里壞值是常態(tài)。我見過某根電纜中層測點連續(xù)三天輸出 45℃ 的假發(fā)熱如果這種值混進訓(xùn)練集模型會在那個位置學(xué)到一條根本不存在的升溫規(guī)律。清洗的做法分兩步先用物理范圍初篩糧堆溫度正常情況下不可能低于 -20℃ 或高于 50℃超出直接標(biāo)記為缺失再做橫向?qū)Ρ韧粫r刻同一層位相鄰測點的中位數(shù)應(yīng)當(dāng)接近偏離超過 5℃ 的判為可疑。下面這段是我常用清洗流程的簡化版。import pandas as pd import numpy as np # 長表time, cable_id(電纜編號), layer(層位), temp(溫度) df pd.read_csv(granary_temp.csv, parse_dates[time]) # 1. 物理范圍初篩超出糧堆溫度合理區(qū)間直接置為缺失 df.loc[(df[temp] -20) | (df[temp] 50), temp] np.nan # 2. 橫向?qū)Ρ韧粫r刻同一層位看中位數(shù)偏離5度以上判為可疑 df[layer_median] df.groupby([time, layer])[temp].transform(median) df.loc[(df[temp] - df[layer_median]).abs() 5, temp] np.nan # 3. 按電纜分組線性插值缺測兩端用鄰近值補齊 df df.sort_values([cable_id, time]) df[temp] ( df.groupby(cable_id)[temp] .transform(lambda s: s.interpolate(methodlinear, limit_directionboth)) ) # 丟棄整段缺失超過3天以上的電纜數(shù)據(jù)避免插值造出假曲線 valid_counts df.groupby(cable_id)[temp].apply(lambda s: s.notna().sum()) keep_cables valid_counts[valid_counts 20].index df df[df[cable_id].isin(keep_cables)]這段代碼的邏輯要點先做整體范圍粗篩再做組內(nèi)橫向比對最后按電纜分組插值。參數(shù)上最值得留意的是橫向?qū)Ρ鹊拈撝?5℃這是經(jīng)驗值南方夏季倉溫和北方冬季倉溫差異很大如果整體溫差本來就大可以把閾值放寬到 6℃閾值太小會把正常梯度誤判成壞值閾值太大又漏掉真故障。插值用線性就夠糧溫變化慢局部插值不會引入太大誤差真正危險的是連續(xù)缺測幾天后的憑空拼接所以保留條件設(shè)成至少 20 個有效記錄寧可少樣本也不要假樣本。3.3 滑動窗口構(gòu)造訓(xùn)練樣本特征和標(biāo)簽怎么對齊清洗完成后要把時序數(shù)據(jù)變成監(jiān)督學(xué)習(xí)的特征矩陣。常見做法是滑動窗口以每個測點為單位取它過去若干天的溫度序列做特征未來某個時刻的溫度做標(biāo)簽。窗口長度和預(yù)測步長是兩個必須明確的參數(shù)我一般用過去 7 天每小時 6 個采樣點、預(yù)測未來 72 小時。窗口太短學(xué)不到趨勢慣性窗口太長則特征冗余模型訓(xùn)練變慢還可能過擬合。構(gòu)造樣本的代碼如下。features, labels [], [] # 窗口大小7天 * 每天4個時刻 28個特征步 window_steps 28 # 預(yù)測目標(biāo)未來72小時按6小時一步折算成12步 future_steps 12 for (cable, layer), grp in df.groupby([cable_id, layer]): grp grp.sort_values(time).set_index(time) # 重采樣到6小時間隔取平均值保證時刻對齊 ser grp[temp].resample(6h).mean() values ser.values for i in range(len(values) - window_steps - future_steps): feat values[i : i window_steps] label values[i window_steps future_steps] features.append(feat) labels.append(label) X np.array(features) y np.array(labels) # 丟棄任何包含NaN的樣本保證訓(xùn)練集干凈 valid ~(np.isnan(X).any(axis1) | np.isnan(y)) X, y X[valid], y[valid]這里有個容易忽視的細節(jié)重采樣到 6 小時會引入 NaN 空檔直接喂給網(wǎng)絡(luò)會訓(xùn)練失敗所以我統(tǒng)一放在最后用掩碼丟棄。窗口和預(yù)測步長的選擇直接決定樣本量一個 200 測點的倉、90 天歷史數(shù)據(jù)大約能產(chǎn)生 40000 條左右的樣本完全夠一個小 BP 網(wǎng)絡(luò)訓(xùn)練。如果你想預(yù)測 24 小時而不是 72 小時把future_steps改成 4 就行其余不用動。4. 模型搭建與訓(xùn)練平臺選擇、參數(shù)配置和收斂調(diào)優(yōu)4.1 平臺選型MATLAB 做驗證Python 做部署論文復(fù)現(xiàn)和工程落地往往需要兩套平臺。復(fù)現(xiàn)這類研究時MATLAB 神經(jīng)網(wǎng)絡(luò)工具箱里的newff加trainlm是經(jīng)典組合交互直觀trainlm自帶的 Levenberg-Marquardt 算法對中小樣本收斂很快非常適合快速驗證結(jié)構(gòu)和參數(shù)是否合理。但真要把模型接到測溫系統(tǒng)上做每日預(yù)測我一般會換 Python 重寫用 Keras 或 scikit-learn 的 MLPRegressor理由很實際免費生態(tài)、便于自動化驗證模型導(dǎo)出和服務(wù)器部署都更方便。平臺選擇可以這樣權(quán)衡場景常用平臺優(yōu)點短板論文復(fù)現(xiàn)、參數(shù)試驗MATLAB 神經(jīng)網(wǎng)絡(luò)工具箱收斂快、交互直觀授權(quán)成本高部署受限工程部署、沉淀系統(tǒng)Python Keras / scikit-learn免費、易集成、可回歸參數(shù)需自己摸索訓(xùn)練函數(shù)不如 trainlm 省心先說明一點平臺切換不影響網(wǎng)絡(luò)結(jié)構(gòu)和效果兩次實現(xiàn)我用同樣的結(jié)構(gòu)參數(shù)得到的結(jié)果基本一致。MATLAB 適合把模型跑通、確認思路Python 適合把模型變成 7×24 小時運行的服務(wù)。4.2 網(wǎng)絡(luò)結(jié)構(gòu)與初始化參數(shù)表回到那張 BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖落地參數(shù)是這樣的層神經(jīng)元數(shù)激活函數(shù)說明輸入層28 至 36無歷史溫度窗口加位置特征、外部氣溫隱層 116tanh學(xué)習(xí)溫度場非線性組合隱層 28tanh提取更高層抽象特征輸出層1linear輸出未來溫度回歸任務(wù)不用 sigmoid輸入層寬度對應(yīng) 3.3 節(jié)的特征設(shè)計。隱層激活選 tanh 而不是 ReLU是因為溫度數(shù)據(jù)歸一化后分布相對對稱tanh 在零附近梯度更穩(wěn)收斂不容易震蕩。輸出層必須是線性激活這是踩過坑的地方有人把輸出層也套上 sigmoid溫度被壓在 0 到 1 之間反歸一化后稍微超出區(qū)間就變成平臺值誤差直接爆炸。4.3 訓(xùn)練配置學(xué)習(xí)率、早停和驗證集訓(xùn)練配置有三個關(guān)鍵點。第一樣本劃分不能用隨機打散必須按時間先后切分前 70% 做訓(xùn)練集后 15% 做驗證集再往后 15% 做測試集。第二學(xué)習(xí)率從 0.01 起步配合自適應(yīng)優(yōu)化器前幾個 epoch 觀察損失曲線如果震蕩就把學(xué)習(xí)率降一半。第三早停耐心值設(shè)置在 20 個 epoch驗證集損失連續(xù)不降就停下來防止后期過擬合。下面是 Keras 的完整訓(xùn)練配置。from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Input from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau # 輸入維度由訓(xùn)練樣本特征列數(shù)決定對應(yīng)結(jié)構(gòu)圖的輸入層寬度 model Sequential([ Input(shape(X_train.shape[1],)), Dense(16, activationtanh), Dense(8, activationtanh), Dense(1, activationlinear), ]) model.compile(optimizeradam, lossmse, metrics[mae]) early_stop EarlyStopping( monitorval_loss, patience20, restore_best_weightsTrue ) reduce_lr ReduceLROnPlateau( monitorval_loss, factor0.5, patience8, min_lr1e-5 ) history model.fit( X_train, y_train, validation_data(X_val, y_val), epochs500, # 上限500實際由早停決定 batch_size256, callbacks[early_stop, reduce_lr], verbose0, )參數(shù)說明patience20表示驗證損失連續(xù) 20 個 epoch 不改善就停restore_best_weightsTrue會在訓(xùn)練結(jié)束后把權(quán)重回滾到驗證集最好的那一步相當(dāng)于自動保存最佳模型。ReduceLROnPlateau在驗證損失停滯 8 個 epoch 后把學(xué)習(xí)率減半避免后期在小范圍內(nèi)來回震蕩。batch_size256對幾萬條樣本適中太小會讓梯度更新方向抖動太大則內(nèi)存開銷高且收斂慢。訓(xùn)練完先用訓(xùn)練集和驗證集的誤差差判斷是否過擬合兩者差距在 15% 以內(nèi)結(jié)構(gòu)基本合理差距過大就回到結(jié)構(gòu)圖把隱層節(jié)點數(shù)減下來。5. 溫度場預(yù)測的避坑指南五個翻車現(xiàn)場和對應(yīng)的解法5.1 傳感器壞值混進訓(xùn)練集預(yù)測曲線出現(xiàn)釘子現(xiàn)象某個測點的預(yù)測溫度曲線在持續(xù)平滑段里突然出現(xiàn)一個尖峰形狀像一根釘子。原因訓(xùn)練數(shù)據(jù)里包含了該傳感器某個時段輸出的跳變壞值網(wǎng)絡(luò)為了擬合這個假點把隱層的一部分權(quán)重專門用在了異常位置導(dǎo)致預(yù)測在對應(yīng)時段跟著學(xué)壞。解決清洗階段做橫向?qū)Ρ扔猛瑢游恢形粩?shù)做基準(zhǔn)偏離過大一律剔除模型上線后還要持續(xù)做數(shù)據(jù)質(zhì)量監(jiān)控發(fā)現(xiàn)新的壞值要及時補入清洗流程再重訓(xùn)。5.2 歸一化用全樣本統(tǒng)計測試集誤差被嚴重低估現(xiàn)象訓(xùn)練集驗證集誤差都很好可一上真實業(yè)務(wù)就預(yù)測偏差明顯增大。原因歸一化時用全樣本計算最小值和最大值測試集的信息提前泄漏給了訓(xùn)練過程更隱蔽的是夏季訓(xùn)練的數(shù)據(jù)范圍窄冬季氣溫變成零下時新數(shù)據(jù)落到訓(xùn)練集范圍之外反歸一化后預(yù)測值被截斷在邊界。解決只用訓(xùn)練集統(tǒng)計 min 和 max保存這兩個數(shù)預(yù)測新數(shù)據(jù)時沿用每個季度重訓(xùn)時重新統(tǒng)計范圍給模型的歸一化參數(shù)留出隨季節(jié)變化的余量。5.3 隱層節(jié)點堆過頭訓(xùn)練誤差降到零點幾測試誤差卻失控現(xiàn)象訓(xùn)練集 RMSE 一路降到 0.2℃驗證集卻在 50 個 epoch 后開始回升測試集誤差達到 1.5℃。原因隱層節(jié)點太多網(wǎng)絡(luò)把訓(xùn)練集的噪聲也背下來了這是過擬合的典型表現(xiàn)。解決從 8 個節(jié)點開始逐步加寬每加一次記錄驗證集誤差找到驗證誤差開始回升的拐點訓(xùn)練時開 L2 正則把 alpha 設(shè)在 0.001 量級。記住平房倉溫度場本身變化平緩模型參數(shù)越少泛化反而越好。5.4 用遞歸方式做 7 天預(yù)測誤差像雪球一樣滾大現(xiàn)象預(yù)測未來 24 小時誤差還行一預(yù)測第 5、第 7 天偏差大到不可用。原因有人把模型設(shè)計成滾動預(yù)測第一次用歷史窗口預(yù)測出 6 小時后的溫度再把預(yù)測值塞回輸入當(dāng)作歷史繼續(xù)預(yù)測下一個 6 小時。每一步的誤差都會累積到第 7 天誤差已經(jīng)滾成好幾攝氏度。解決把預(yù)測目標(biāo)改成未來 72 小時后的溫度的直接映射也就是說訓(xùn)練時標(biāo)簽就是 72 小時后的實測值模型一步到位不做多步遞歸如果業(yè)務(wù)要求多個預(yù)報時刻就為每個預(yù)報時刻單獨訓(xùn)練一個模型互相獨立、互不傳染誤差。5.5 只看整體 RMSE 好看熱點位置的漏報全被平均掉現(xiàn)象全倉預(yù)測 RMSE 只有 0.6℃挺漂亮但東北角第六根電纜中層的實測溫度已經(jīng)逼近預(yù)警線模型預(yù)測卻低了 2℃ 多。原因RMSE 是一個平均值大量正常測點的誤差把少數(shù)熱點的誤差稀釋了模型的平均表現(xiàn)掩蓋了局部失準(zhǔn)。解決評估指標(biāo)加一個逐測點最大誤差也就是每個測點分別統(tǒng)計預(yù)測誤差的最大值用這個值去卡預(yù)警閾值糧庫管理最關(guān)心的不是全倉平均準(zhǔn)而是別漏掉任何一個可能發(fā)熱的局部點位。6. 驗證模型值不值得上線時序交叉驗證、基線對比和逐點誤差6.1 時序交叉驗證隨機打散是最大的偽命題很多人剛接觸機器學(xué)習(xí)時習(xí)慣把數(shù)據(jù)集隨機分成訓(xùn)練和測試但在溫度預(yù)測這個任務(wù)里隨機打散會讓訓(xùn)練集里混入測試時間之后的樣本等于偷看了未來測試誤差虛假好看。正確做法是嚴格按時間切用 sklearn 的 TimeSeriesSplit 做順序交叉驗證。from sklearn.model_selection import TimeSeriesSplit tscv TimeSeriesSplit(n_splits5) for train_idx, test_idx in tscv.split(X): X_train, X_test X[train_idx], X[test_idx] y_train, y_test y[train_idx], y[test_idx] # 每次劃分都保證訓(xùn)練數(shù)據(jù)全部早于測試數(shù)據(jù) model.fit(X_train, y_train) score model.evaluate(X_test, y_test, verbose0)這段代碼的意義在于模擬上線后的真實環(huán)境模型永遠只能看到過去不能看到未來。糧庫業(yè)務(wù)每天新增一批數(shù)據(jù)模型在舊數(shù)據(jù)上訓(xùn)練、在新數(shù)據(jù)上預(yù)測TimeSeriesSplit 的每一次切分都對應(yīng)一次模擬上線跑完 5 次如果誤差波動不大模型才有上線價值。6.2 與昨天等于今天比BP 贏多少才值得上線基線對比是判斷模型價值的硬標(biāo)準(zhǔn)。溫度場的自相關(guān)很強所以最簡單的基線就是持久性預(yù)測用當(dāng)前時刻的溫度當(dāng)作未來溫度也就是說今天多少度明天就多少度。如果 BP 模型的 RMSE 比這個基線改進不到 15%先別急著上線回頭看數(shù)據(jù)清洗和特征設(shè)計哪里出了問題。我自己的經(jīng)驗是次日最高糧溫預(yù)測的 RMSE 能做到 0.8℃ 上下MAE 在 0.6℃ 左右72 小時預(yù)測的 MAE 放寬到 1.5℃ 以內(nèi)也可以接受。這個精度給保管員當(dāng)明天重點盯哪一排的參考是夠用的但如果要拿它做超溫報警觸發(fā)誤差還得再壓到 0.5℃ 以下。6.3 逐點誤差與殘差找出模型學(xué)不到的規(guī)律除了整體指標(biāo)我習(xí)慣把每個測點的殘差畫出來也就是實際溫度減預(yù)測溫度序列。殘差如果隨機散布在零附近說明模型已經(jīng)學(xué)干凈了剩下的誤差是溫度場本身隨機波動造成的殘差如果呈現(xiàn)出明顯的季節(jié)趨勢或通風(fēng)前后系統(tǒng)性偏大說明模型漏掉了一個重要輸入。這時候回去把通風(fēng)記錄加進特征或者把通風(fēng)時段單獨建模往往比盲目加深網(wǎng)絡(luò)更有效。我吃過一次虧當(dāng)時只看整體 RMSE 就上了線結(jié)果東北角局部熱點連續(xù)兩天被低估市里抽查差點出問題。后來的教訓(xùn)是評估指標(biāo)必須和報警業(yè)務(wù)指標(biāo)保持一致逐點最大誤差才是這條線的生命線。希望幫到你祝這套預(yù)測模型少翻車、多省心。本文還有配套的精品資源點擊獲取