據(jù)趨勢預(yù)測實操指南)
1. 從一組時序數(shù)據(jù)到趨勢預(yù)測我為什么盯上了 TimechoAI手頭有一批設(shè)備傳感器采集的時序數(shù)據(jù)采樣頻率不高大概每十分鐘一個點攢了幾個月量級在幾十萬條左右。業(yè)務(wù)側(cè)的需求很直接能不能基于歷史走勢給出未來一段時間的趨勢預(yù)測哪怕只是一個大致的走向判斷也好過每次開會都靠人拍腦袋。我一開始想的是走傳統(tǒng)路線用統(tǒng)計模型或者機器學(xué)習(xí)那一套但真正上手才發(fā)現(xiàn)時序預(yù)測這件事門檻不在模型本身而在數(shù)據(jù)預(yù)處理、特征工程、模型調(diào)參這一整條鏈路上。光是缺失值填補和異常點剔除就夠折騰好幾天。后來接觸到 TimechoAI它的定位是面向時序數(shù)據(jù)的智能分析平臺核心能力之一就是時序大模型驅(qū)動的趨勢預(yù)測。簡單說你把時序數(shù)據(jù)整理好丟進去它幫你完成建模、訓(xùn)練、預(yù)測這一整套流程輸出未來趨勢的預(yù)測結(jié)果。我實測下來從數(shù)據(jù)準備到拿到預(yù)測曲線整個過程壓縮到了幾分鐘級別這個效率對于我這種不想在建模細節(jié)上耗太多精力的人來說吸引力很大。這篇文章就是把我這次實操的完整過程、踩過的坑、以及一些參數(shù)選擇上的思考整理出來適合手頭有時序數(shù)據(jù)、想做趨勢預(yù)測但不想從零搭建模型管線的朋友參考。不管你是做設(shè)備運維、能耗分析還是業(yè)務(wù)指標監(jiān)控只要涉及時間序列這套思路都能借鑒。2. 時序數(shù)據(jù)趨勢預(yù)測的整體思路拆解2.1 為什么不用傳統(tǒng)統(tǒng)計模型硬扛傳統(tǒng)時序預(yù)測里ARIMA、指數(shù)平滑這類方法用得很多它們對平穩(wěn)性有要求遇到有明顯趨勢和季節(jié)性的數(shù)據(jù)得先做差分、分解參數(shù)還得靠ACF、PACF圖去人工判斷。我試過用ARIMA跑這批數(shù)據(jù)光確定差分階數(shù)就來回試了好幾輪而且它對突變點的響應(yīng)很遲鈍一旦設(shè)備工況發(fā)生變化預(yù)測結(jié)果就明顯跑偏。機器學(xué)習(xí)方法比如XGBoost做時序預(yù)測需要自己構(gòu)造滯后特征、滑動窗口統(tǒng)計量特征工程的工作量不小而且模型泛化能力依賴特征質(zhì)量換個場景就得重來一遍。時序大模型的出現(xiàn)本質(zhì)上是把“特征工程模型選擇調(diào)參”這些環(huán)節(jié)用預(yù)訓(xùn)練的方式內(nèi)化掉了。TimechoAI背后的時序大模型在海量時序數(shù)據(jù)上做過預(yù)訓(xùn)練對趨勢、周期性、突變這些模式有天然的感知能力你只需要把數(shù)據(jù)喂進去它就能給出預(yù)測。這就好比以前做菜得自己種菜、切菜、配料現(xiàn)在直接給你一個半成品料理包加熱就能上桌。當然料理包也有局限后面我會講到什么情況下它可能不如自己從頭做。2.2 TimechoAI 的預(yù)測能力適合什么場景從我的使用體驗看TimechoAI的趨勢預(yù)測比較適合這幾類場景一是設(shè)備運行指標的短期走勢預(yù)判比如溫度、振動、電流這些用來做預(yù)警二是業(yè)務(wù)指標的周期性預(yù)測比如日活、訂單量、能耗用來做資源調(diào)度三是傳感器數(shù)據(jù)的補全和外推比如某些時段數(shù)據(jù)缺失用預(yù)測值臨時填補。它不太適合的場景是數(shù)據(jù)量極少比如只有幾十個點、數(shù)據(jù)本身沒有明顯規(guī)律純隨機噪聲、或者對預(yù)測精度要求極高到需要定制化建模的程度。這幾點在后面實操部分我會結(jié)合具體數(shù)據(jù)再展開。2.3 整體流程長什么樣我把這次實操的流程拆成四步數(shù)據(jù)準備、接入TimechoAI、配置預(yù)測任務(wù)、結(jié)果解讀與驗證。數(shù)據(jù)準備階段主要是把原始時序數(shù)據(jù)整理成平臺能識別的格式包括時間戳對齊、缺失值處理、異常值標記。接入階段通過Python SDK完成這也是熱詞里提到的Python SDK的用武之地。配置預(yù)測任務(wù)時需要指定預(yù)測步長、時間粒度這些參數(shù)。最后拿到預(yù)測結(jié)果后不能直接信得做回測驗證看看模型在歷史數(shù)據(jù)上的表現(xiàn)如何。這四步里第一步最耗時后面三步反而很快這也是我標題里說“幾分鐘跑出預(yù)測”的前提——數(shù)據(jù)得先整理干凈。3. 數(shù)據(jù)準備把原始時序數(shù)據(jù)整理成能用的樣子3.1 時間戳對齊與重采樣原始數(shù)據(jù)來自不同設(shè)備時間戳格式不統(tǒng)一有的精確到秒有的精確到毫秒還有的帶時區(qū)偏移。第一步就是統(tǒng)一時間戳格式全部轉(zhuǎn)成標準的時間對象。我用的是Python的pandas把時間列轉(zhuǎn)成datetime類型然后設(shè)置成索引。這里有個細節(jié)如果數(shù)據(jù)里有重復(fù)時間戳需要去重保留最后一條或者取平均具體看業(yè)務(wù)含義。比如傳感器偶爾會重復(fù)上報那就保留最后一條如果是多個傳感器同一時刻的數(shù)據(jù)那就得先聚合。重采樣是另一個關(guān)鍵動作。原始數(shù)據(jù)采樣頻率可能不一致有的設(shè)備一分鐘一個點有的十分鐘一個點。TimechoAI對輸入數(shù)據(jù)的采樣間隔有一定要求最好是等間隔的。我的做法是統(tǒng)一重采樣到十分鐘粒度用均值聚合。如果某個時間窗口內(nèi)沒有數(shù)據(jù)就會產(chǎn)生缺失值這時候先標記出來后面統(tǒng)一處理。重采樣的代碼大概長這樣import pandas as pd df pd.read_csv(sensor_data.csv) df[timestamp] pd.to_datetime(df[timestamp]) df df.set_index(timestamp).sort_index() df df[~df.index.duplicated(keeplast)] df_resampled df.resample(10T).mean()這段代碼里resample(10T)表示按十分鐘重采樣mean()是聚合方式。如果你的數(shù)據(jù)是累計值比如電表讀數(shù)那就不能用均值得用差分或者取最后一個值。這個選擇直接影響后續(xù)預(yù)測的合理性不能隨便選。3.2 缺失值處理別急著填先搞清楚為什么缺缺失值處理是時序數(shù)據(jù)里最容易被忽視的環(huán)節(jié)。很多人一看到缺失就直接往前填充或者插值但缺失的原因不同處理方式也應(yīng)該不同。我一般先統(tǒng)計缺失比例如果某個字段缺失超過30%那這個字段基本沒法用直接放棄。如果缺失比例在5%以內(nèi)可以考慮插值。插值方法有線性插值、前向填充、樣條插值等我常用的是線性插值因為它對趨勢的扭曲最小。但有一種情況要特別注意如果缺失是成段出現(xiàn)的比如設(shè)備停機了三天那這三天的數(shù)據(jù)不是“缺失”而是“不存在”強行插值會引入虛假趨勢。我的做法是給這段數(shù)據(jù)打上標記在后續(xù)預(yù)測時告訴模型這段不可信。TimechoAI的SDK支持傳入一個質(zhì)量標記列用來標識數(shù)據(jù)點的可信度這個功能很實用后面會講到怎么用。3.3 異常值識別與處理異常值識別我用了兩種方法結(jié)合一種是基于統(tǒng)計的比如3σ原則超過均值加減三倍標準差的點標記為異常另一種是基于業(yè)務(wù)規(guī)則的比如溫度不可能超過某個閾值超過了就是傳感器故障。兩種方法取并集標記出所有可疑點。標記之后不是直接刪除而是先替換成缺失值再走缺失值處理流程。這樣做的好處是保留時間連續(xù)性避免刪除后時間軸出現(xiàn)空洞。這里有個經(jīng)驗異常值處理寧可不處理也不要過度處理。我見過有人把波動大的點全當異常刪了結(jié)果數(shù)據(jù)變得過于平滑預(yù)測出來的曲線毫無參考價值。時序數(shù)據(jù)本身就有波動波動不等于異常。判斷標準應(yīng)該是這個點的偏離是否超出了正常業(yè)務(wù)范圍而不是它是否偏離了統(tǒng)計均值。4. 通過 Python SDK 接入 TimechoAI 的完整實操4.1 環(huán)境準備與SDK安裝接入TimechoAI的第一步是裝SDK。官方提供了Python包直接pip安裝就行。我用的Python版本是3.9實測兼容性沒問題。安裝命令很簡單pip install timechoai-sdk裝完之后需要在代碼里初始化客戶端。初始化需要兩個東西一個是服務(wù)地址一個是訪問憑證。服務(wù)地址在你開通TimechoAI服務(wù)后會拿到訪問憑證一般是一串密鑰。這兩個信息不要硬編碼在代碼里建議放到環(huán)境變量或者配置文件里避免泄露。初始化代碼大概是這樣from timechoai import Client client Client( endpointyour_endpoint_here, api_keyyour_api_key_here )初始化完成后可以調(diào)一個簡單的方法驗證連接是否正常比如獲取服務(wù)狀態(tài)或者列出可用模型。這一步別跳過我一開始就是沒驗證后面?zhèn)鲾?shù)據(jù)報錯排查了半天結(jié)果發(fā)現(xiàn)是憑證配錯了。4.2 數(shù)據(jù)上傳與格式要求TimechoAI對上傳的數(shù)據(jù)格式有要求核心是三點時間戳列、數(shù)值列、可選的標記列。時間戳列必須是標準格式數(shù)值列可以是多個字段標記列用來標識數(shù)據(jù)質(zhì)量。上傳方式有兩種一種是通過SDK直接傳DataFrame另一種是先導(dǎo)出成CSV再上傳。我推薦第一種因為省去了文件讀寫的麻煩而且SDK會自動做類型檢查。上傳代碼大概長這樣import pandas as pd df pd.read_csv(cleaned_data.csv, index_coltimestamp, parse_datesTrue) response client.upload_timeseries( dataset_namedevice_sensor_01, datadf, time_columntimestamp, value_columns[temperature, vibration], quality_columnquality_flag ) print(response.status)這里有幾個細節(jié)值得說。dataset_name是數(shù)據(jù)集名稱后續(xù)預(yù)測任務(wù)會引用這個名字所以命名要有意義別用默認的隨機字符串。value_columns指定哪些列是數(shù)值列如果DataFrame里還有其他列不會被上傳。quality_column是可選的如果你在數(shù)據(jù)準備階段標記了不可信數(shù)據(jù)點就通過這個列傳進去。上傳成功后SDK會返回一個狀態(tài)確認數(shù)據(jù)已經(jīng)入庫。4.3 預(yù)測任務(wù)配置步長、粒度與模型選擇數(shù)據(jù)上傳完成后就可以配置預(yù)測任務(wù)了。核心參數(shù)有三個預(yù)測步長、時間粒度、模型類型。預(yù)測步長是指你要預(yù)測未來多少個時間點比如你的數(shù)據(jù)是十分鐘粒度你想預(yù)測未來24小時那就是144個點。時間粒度一般跟輸入數(shù)據(jù)保持一致如果輸入是十分鐘輸出也是十分鐘。模型類型方面TimechoAI提供了幾種預(yù)置模型有偏重短期預(yù)測的有偏重長期趨勢的還有自動選擇的。我一般先用自動選擇看看效果如果效果不理想再手動指定。配置代碼示例forecast client.create_forecast( dataset_namedevice_sensor_01, target_columntemperature, horizon144, frequency10T, model_typeauto )horizon144就是預(yù)測未來144個點frequency10T表示十分鐘粒度model_typeauto讓平臺自動選模型。創(chuàng)建任務(wù)后SDK會返回一個任務(wù)ID你可以用這個ID去查詢?nèi)蝿?wù)狀態(tài)和結(jié)果。整個預(yù)測過程是異步的提交后不用干等可以去做別的事過幾分鐘回來查結(jié)果就行。5. 預(yù)測結(jié)果解讀與回測驗證5.1 拿到預(yù)測結(jié)果后先看什么預(yù)測任務(wù)完成后SDK會返回一個結(jié)果對象里面包含預(yù)測值、置信區(qū)間、以及一些模型診斷信息。我拿到結(jié)果后第一件事不是看預(yù)測曲線而是看置信區(qū)間。置信區(qū)間寬不寬直接反映了模型對這次預(yù)測的信心。如果置信區(qū)間特別寬說明模型也不確定那這個預(yù)測結(jié)果就只能當參考不能當決策依據(jù)。第二件事是看模型診斷信息里面會告訴你用了哪個模型、訓(xùn)練時的誤差指標是多少。這些信息幫你判斷這次預(yù)測靠不靠譜。預(yù)測結(jié)果的可視化也很重要。我一般會把歷史數(shù)據(jù)和預(yù)測數(shù)據(jù)畫在同一張圖上歷史用實線預(yù)測用虛線置信區(qū)間用陰影表示。這樣一眼就能看出預(yù)測趨勢是否合理。如果預(yù)測曲線跟歷史趨勢明顯脫節(jié)比如歷史一直在漲預(yù)測突然掉頭向下那就要警惕了可能是數(shù)據(jù)有問題或者模型選錯了。5.2 回測驗證用歷史數(shù)據(jù)檢驗預(yù)測能力預(yù)測結(jié)果不能直接信得做回測。回測的思路很簡單把歷史數(shù)據(jù)切成兩段前一段用來訓(xùn)練后一段用來驗證。比如你有1000個點用前800個點訓(xùn)練預(yù)測后200個點然后跟真實值對比算誤差指標。TimechoAI的SDK支持回測模式你只需要指定回測的起始點它會自動完成訓(xùn)練和驗證?;販y的誤差指標我主要看兩個MAE平均絕對誤差和MAPE平均絕對百分比誤差。MAE反映的是絕對誤差大小MAPE反映的是相對誤差。如果MAPE在10%以內(nèi)我覺得就可以接受如果在5%以內(nèi)那就算相當準了。當然這個標準因場景而異有些場景對精度要求極高那就得另說?;販y代碼示例backtest client.run_backtest( dataset_namedevice_sensor_01, target_columntemperature, train_ratio0.8, horizon200 ) print(backtest.metrics)train_ratio0.8表示用80%的數(shù)據(jù)訓(xùn)練20%用于驗證。回測完成后backtest.metrics里會有MAE、MAPE等指標。如果指標不理想可以調(diào)整模型類型或者預(yù)測步長再試。5.3 預(yù)測結(jié)果怎么用到實際業(yè)務(wù)里預(yù)測結(jié)果拿到后怎么用是個問題。我的做法是短期預(yù)測比如未來幾小時用來做實時預(yù)警如果預(yù)測值超過閾值就提前通知運維中期預(yù)測比如未來幾天用來做資源調(diào)度比如提前準備備件或者調(diào)整負載長期預(yù)測比如未來幾周用來做趨勢判斷輔助決策。不同時間尺度的預(yù)測對精度的要求不一樣短期預(yù)測要求準長期預(yù)測看趨勢就行。還有一點預(yù)測結(jié)果要定期更新。時序數(shù)據(jù)是不斷產(chǎn)生的模型也需要定期用新數(shù)據(jù)重新訓(xùn)練。TimechoAI支持定時任務(wù)你可以設(shè)置每天或每周自動跑一次預(yù)測這樣預(yù)測結(jié)果始終基于最新數(shù)據(jù)。這個功能對于長期監(jiān)控場景很實用省去了手動觸發(fā)的麻煩。6. 實操中踩過的坑與常見問題排查6.1 數(shù)據(jù)上傳報錯格式問題的排查思路數(shù)據(jù)上傳報錯是最常見的問題我遇到過的報錯大概有這么幾類時間戳格式不對、數(shù)值列里有非數(shù)值內(nèi)容、數(shù)據(jù)量太大超限。時間戳格式問題最好解決用pandas的to_datetime轉(zhuǎn)一下就行但要注意時區(qū)問題如果原始數(shù)據(jù)帶時區(qū)轉(zhuǎn)的時候要統(tǒng)一。數(shù)值列里有非數(shù)值內(nèi)容通常是數(shù)據(jù)里混了空字符串或者特殊符號用pd.to_numeric加errorscoerce可以強制轉(zhuǎn)成數(shù)值轉(zhuǎn)不了的變成NaN再走缺失值處理。數(shù)據(jù)量太大超限的話可以分批上傳SDK支持分片上傳具體看文檔。排查的時候我習(xí)慣先把數(shù)據(jù)在本地做一遍校驗檢查時間戳是否連續(xù)、數(shù)值列是否有異常、數(shù)據(jù)量是否在限制內(nèi)。本地校驗通過后再上傳能避免大部分報錯。另外SDK的報錯信息一般比較詳細會告訴你哪一列哪一行有問題順著提示排查就行。6.2 預(yù)測結(jié)果偏差大可能的原因與調(diào)整方法預(yù)測結(jié)果偏差大原因可能出在數(shù)據(jù)、模型、參數(shù)三個層面。數(shù)據(jù)層面可能是缺失值處理不當、異常值沒清理干凈、或者數(shù)據(jù)本身就沒有規(guī)律。模型層面可能是模型類型選錯了比如數(shù)據(jù)有明顯季節(jié)性但用了不適合季節(jié)性的模型。參數(shù)層面可能是預(yù)測步長設(shè)得太長超出了模型的能力范圍。我的排查順序是先看數(shù)據(jù)質(zhì)量再看模型選擇最后調(diào)參數(shù)。數(shù)據(jù)質(zhì)量方面我會把歷史數(shù)據(jù)和預(yù)測數(shù)據(jù)畫在一起看看預(yù)測起點附近的數(shù)據(jù)是否正常。如果歷史數(shù)據(jù)在預(yù)測起點附近有突變那預(yù)測偏差大是正常的因為模型沒法預(yù)知突變。模型選擇方面我會試幾種不同的模型類型對比回測指標選最好的那個。參數(shù)方面我會把預(yù)測步長縮短看看短期預(yù)測是否準確如果短期準長期不準那就是步長設(shè)太長了。6.3 常見問題速查表問題現(xiàn)象可能原因排查方法解決建議上傳報錯“時間戳格式無效”時間戳列不是標準格式檢查時間戳列的數(shù)據(jù)類型用pd.to_datetime轉(zhuǎn)換統(tǒng)一時區(qū)上傳報錯“數(shù)值列包含非數(shù)值”數(shù)據(jù)里混有空字符串或符號檢查數(shù)值列的unique值用pd.to_numeric強制轉(zhuǎn)換errorscoerce預(yù)測結(jié)果是一條直線數(shù)據(jù)沒有明顯趨勢或模型未收斂檢查歷史數(shù)據(jù)是否有波動確認數(shù)據(jù)質(zhì)量嘗試手動指定模型類型預(yù)測偏差隨時間增大預(yù)測步長過長對比短期和長期回測指標縮短預(yù)測步長或改用偏重長期趨勢的模型置信區(qū)間特別寬數(shù)據(jù)噪聲大或模型不確定查看模型診斷信息增加訓(xùn)練數(shù)據(jù)量或做更嚴格的異常值處理回測指標很好但實際預(yù)測不準過擬合或數(shù)據(jù)分布變化對比回測期和實際預(yù)測期的數(shù)據(jù)分布定期重新訓(xùn)練模型加入最新數(shù)據(jù)這張表是我在實際操作中總結(jié)出來的基本上覆蓋了八成以上的常見問題。遇到問題先查表查不到再去看文檔或者提工單。7. 一些參數(shù)選擇上的經(jīng)驗與思考7.1 預(yù)測步長怎么定才合理預(yù)測步長的設(shè)定核心原則是不要超過數(shù)據(jù)本身可支撐的范圍。舉個例子你的數(shù)據(jù)是十分鐘粒度一天有144個點如果你要預(yù)測未來七天那就是1008個點。這么長的預(yù)測步長模型很難保證精度因為時間越長不確定性越大。我的經(jīng)驗是預(yù)測步長不要超過訓(xùn)練數(shù)據(jù)長度的十分之一。比如你有10000個訓(xùn)練點那預(yù)測步長控制在1000以內(nèi)比較穩(wěn)妥。如果業(yè)務(wù)上確實需要更長的預(yù)測那就分段預(yù)測每段短一點然后拼接起來。另外預(yù)測步長跟數(shù)據(jù)本身的周期性也有關(guān)。如果數(shù)據(jù)有明顯的日周期那預(yù)測步長最好是周期的整數(shù)倍這樣預(yù)測結(jié)果能覆蓋完整的周期避免出現(xiàn)半截周期導(dǎo)致趨勢判斷失誤。7.2 時間粒度選擇粗一點還是細一點時間粒度選擇是個權(quán)衡。粒度越細數(shù)據(jù)點越多模型能捕捉到的細節(jié)越多但噪聲也越大而且計算量也越大。粒度越粗數(shù)據(jù)越平滑趨勢越明顯但可能丟失短期波動信息。我的做法是先看業(yè)務(wù)需求如果業(yè)務(wù)關(guān)注的是日內(nèi)波動那就用細粒度比如分鐘級如果關(guān)注的是長期趨勢那就用粗粒度比如小時級或天級。如果不確定可以先試兩種粒度對比回測指標選效果好的那個。還有一個技巧如果原始數(shù)據(jù)粒度很細但噪聲很大可以先聚合到粗粒度做一次預(yù)測再把預(yù)測結(jié)果插值回細粒度。這樣既能利用粗粒度的穩(wěn)定性又能得到細粒度的輸出。當然插值會引入誤差具體是否采用要看場景。7.3 模型自動選擇與手動指定的取舍TimechoAI的自動模型選擇在大多數(shù)情況下夠用它會在幾個預(yù)置模型里選一個最適合當前數(shù)據(jù)的。但自動選擇不是萬能的有些場景下手動指定效果更好。比如你的數(shù)據(jù)有很強的季節(jié)性那手動指定一個擅長季節(jié)性的模型可能比自動選擇更準。再比如你的數(shù)據(jù)量特別大自動選擇可能會選一個計算量很大的模型導(dǎo)致預(yù)測時間變長這時候手動指定一個輕量模型更合適。我的建議是先用自動選擇跑一遍看看回測指標。如果指標滿意就用自動的如果不滿意再手動試幾個模型對比指標。手動指定模型時SDK會返回每個模型的診斷信息你可以根據(jù)這些信息判斷哪個模型更適合你的數(shù)據(jù)。8. 從這次實操中我總結(jié)出的幾條硬經(jīng)驗第一條經(jīng)驗數(shù)據(jù)準備的時間要留夠。我這次實操數(shù)據(jù)準備花了大概兩個小時預(yù)測本身只花了幾分鐘。很多人看到“幾分鐘跑出預(yù)測”就以為整個過程都很快其實不然前面的數(shù)據(jù)清洗和整理才是大頭。如果你手頭的數(shù)據(jù)很干凈那確實幾分鐘就能出結(jié)果如果數(shù)據(jù)很亂那時間主要花在整理上。第二條經(jīng)驗回測不能省。我見過有人直接拿預(yù)測結(jié)果去匯報結(jié)果被問“你這個預(yù)測準不準”就答不上來。回測就是回答這個問題的?;◣追昼娕軅€回測拿到MAE和MAPE心里有底匯報的時候也有依據(jù)。第三條經(jīng)驗預(yù)測結(jié)果要結(jié)合業(yè)務(wù)判斷。模型給出的預(yù)測是基于歷史數(shù)據(jù)的它不知道未來會發(fā)生什么。如果業(yè)務(wù)上你知道下周有促銷活動那預(yù)測結(jié)果就要相應(yīng)調(diào)整。模型是輔助工具不是決策替代品。第四條經(jīng)驗定期更新模型。時序數(shù)據(jù)的分布會隨時間變化今天準的模型過幾個月可能就不準了。設(shè)置定時任務(wù)定期用新數(shù)據(jù)重新訓(xùn)練能保持預(yù)測的準確性。這個習(xí)慣一旦養(yǎng)成后面就省心了。最后分享一個小技巧如果你不確定預(yù)測步長設(shè)多少合適可以先設(shè)一個較短的步長比如24個點跑一次看看效果。如果效果好再逐步增加步長直到回測指標開始明顯下降為止。這樣能找到當前數(shù)據(jù)支撐的最大預(yù)測步長避免盲目設(shè)太長導(dǎo)致結(jié)果不可用。這個試錯過程很快因為每次預(yù)測也就幾分鐘試幾輪就能找到合適的參數(shù)。