態(tài)定價(jià)策略數(shù)據(jù)集:從數(shù)據(jù)建模到工程落地)
最近和幾個(gè)搞充電樁運(yùn)營(yíng)的朋友聊發(fā)現(xiàn)大家繞來(lái)繞去總躲不開(kāi)一個(gè)話題充電價(jià)格到底怎么定。有的站點(diǎn)白天排隊(duì)到馬路牙子晚上卻空到能開(kāi)演唱會(huì)有的站點(diǎn)明明周邊競(jìng)對(duì)都在漲價(jià)自己跟著漲卻眼睜睜看著利用率掉回兩位數(shù)。種種決定背后大家普遍靠“經(jīng)驗(yàn)直覺(jué)”拍板很少有人真正把手里的充電交易數(shù)據(jù)、電價(jià)數(shù)據(jù)和站點(diǎn)運(yùn)營(yíng)數(shù)據(jù)串起來(lái)做過(guò)系統(tǒng)分析。這也正是我一直想做一套電力網(wǎng)絡(luò)充電站定價(jià)策略數(shù)據(jù)集的原因——把定價(jià)這件事從“拍腦袋”變成“看數(shù)據(jù)說(shuō)話”順帶把從數(shù)據(jù)處理到彈性建模的完整鏈路跑通。這篇文章不打算只講數(shù)據(jù)集本身我會(huì)把背后涉及的產(chǎn)業(yè)背景、數(shù)據(jù)集怎么設(shè)計(jì)、定價(jià)模型怎么做、工程落地有哪些坑以及我個(gè)人踩過(guò)的具體問(wèn)題都攤開(kāi)來(lái)講。適合三類人看充電場(chǎng)站運(yùn)營(yíng)和能源數(shù)字化從業(yè)者、想用數(shù)據(jù)做定價(jià)和需求響應(yīng)研究的分析/算法工程師以及準(zhǔn)備進(jìn)入電力市場(chǎng)或車網(wǎng)互動(dòng)方向的學(xué)生、研究者。1. 充電站定價(jià)問(wèn)題的底層邏輯先看清“為什么難”1.1 充電定價(jià)不是簡(jiǎn)單的成本加成很多人剛開(kāi)始接觸充電站定價(jià)最容易想到的辦法就是“成本加利潤(rùn)”采購(gòu)電價(jià)、服務(wù)費(fèi)、場(chǎng)地租金、設(shè)備折舊加在一起除以期望的充電量得到每度電的均價(jià)。聽(tīng)起來(lái)無(wú)懈可擊可實(shí)際跑起來(lái)根本不是那么回事。問(wèn)題出在充電需求的時(shí)間波動(dòng)太劇烈。同一個(gè)站點(diǎn)工作日上午可能只有零星幾輛車午后到傍晚卻可能排隊(duì)周末又是另一種節(jié)奏。如果按平均成本定一個(gè)固定價(jià)高峰期資源不夠用低谷期設(shè)備曬太陽(yáng)最終總收入大概率低于預(yù)期。成本加成只適合計(jì)算“保本線”不適合做運(yùn)營(yíng)定價(jià)。另一種常見(jiàn)做法是“盯競(jìng)對(duì)”周邊站點(diǎn)定多少我就跟多少。這種策略的問(wèn)題在于沒(méi)有考慮自己的負(fù)荷特性和電網(wǎng)購(gòu)電結(jié)構(gòu)。別人有光伏儲(chǔ)能低谷充電成本低敢在下午低價(jià)搶量你純靠電網(wǎng)購(gòu)電再跟價(jià)就是在賠本賺吆喝。定價(jià)策略本質(zhì)上要回答的不是“別人賣(mài)多少”而是“我怎樣用價(jià)格信號(hào)調(diào)度我這邊的充電需求讓收益最大化”。1.2 電力和交通兩個(gè)系統(tǒng)疊加給數(shù)據(jù)建模帶來(lái)獨(dú)特難度充電站處在電力和交通兩個(gè)系統(tǒng)的交叉點(diǎn)上。從交通側(cè)看用戶行為受通勤、節(jié)假日、商圈活動(dòng)、天氣影響從電力側(cè)看購(gòu)電成本又受現(xiàn)貨電價(jià)、負(fù)荷高峰、可再生能源出力影響。兩個(gè)系統(tǒng)各有自己的節(jié)奏疊加之后復(fù)雜度成倍上升。這也是為什么普通零售行業(yè)的動(dòng)態(tài)定價(jià)算法不能直接搬過(guò)來(lái)用。零售商品可以堆庫(kù)存充電樁的電卻幾乎是即產(chǎn)即用最多靠電池儲(chǔ)能做短時(shí)轉(zhuǎn)移。電價(jià)高的時(shí)候如果站點(diǎn)仍然滿載充電凈利潤(rùn)可能被吃光電價(jià)低的時(shí)候如果站點(diǎn)沒(méi)人來(lái)又白白浪費(fèi)了低價(jià)窗口。所以充電站定價(jià)要同時(shí)考慮可用充電功率、物理排隊(duì)時(shí)長(zhǎng)、用戶響應(yīng)意愿和電網(wǎng)分時(shí)電價(jià)。它更像一個(gè)資源調(diào)度問(wèn)題而不是單純的價(jià)格優(yōu)化問(wèn)題。1.3 數(shù)據(jù)缺失導(dǎo)致決策閉眼按理說(shuō)充電站是最容易做數(shù)據(jù)驅(qū)動(dòng)的場(chǎng)景之一樁有實(shí)時(shí)功率車有電池狀態(tài)訂單有起止時(shí)間電表有計(jì)費(fèi)電量。但實(shí)際拿到的數(shù)據(jù)經(jīng)常缺胳膊少腿。我接手過(guò)一個(gè)模擬項(xiàng)目X交易記錄里充電開(kāi)始時(shí)間精確到秒但結(jié)束時(shí)間有一批數(shù)據(jù)居然來(lái)自“拔槍后10分鐘”的系統(tǒng)心跳訂單金額含服務(wù)費(fèi)但不含電費(fèi)分?jǐn)傉军c(diǎn)功率曲線和訂單數(shù)據(jù)沒(méi)法對(duì)齊到同一時(shí)區(qū)。這些都是數(shù)據(jù)工程里非常典型的坑。更麻煩的是很多場(chǎng)站壓根不保存歷史負(fù)荷曲線或者只保留月度匯總想回頭做建模分析已經(jīng)無(wú)米下鍋。所以我堅(jiān)持認(rèn)為一套結(jié)構(gòu)清晰、時(shí)間粒度對(duì)齊、包含外部電價(jià)的充電站數(shù)據(jù)集本身就是充電運(yùn)營(yíng)公司最重要的數(shù)字資產(chǎn)之一。沒(méi)有這個(gè)底座談精細(xì)化定價(jià)、需求響應(yīng)、車網(wǎng)互動(dòng)都是空話。2. 定價(jià)策略數(shù)據(jù)集的整體設(shè)計(jì)與核心細(xì)節(jié)拆解2.1 設(shè)計(jì)目標(biāo)一庫(kù)支撐三類決策在設(shè)計(jì)電力網(wǎng)絡(luò)充電站定價(jià)策略數(shù)據(jù)集時(shí)我給自己定的目標(biāo)不是“存下所有能存的數(shù)據(jù)”而是“讓數(shù)據(jù)能直接支撐三類決策”第一類是運(yùn)營(yíng)監(jiān)控類決策比如某站點(diǎn)今天利用率是否異常、訂單平均單價(jià)是否跌穿成本線第二類是策略仿真類決策比如如果價(jià)格上調(diào)10%高峰期排隊(duì)情況是否緩解、整體營(yíng)收怎么變第三類是市場(chǎng)參與類決策比如是否參與現(xiàn)貨市場(chǎng)的日前申報(bào)、虛擬電廠調(diào)度指令到來(lái)時(shí)站內(nèi)可調(diào)負(fù)荷是多少。針對(duì)這三類決策我把數(shù)據(jù)拆成站點(diǎn)檔案、訂單交易、逐時(shí)負(fù)荷、電價(jià)序列、用戶畫(huà)像五個(gè)核心域。站點(diǎn)檔案描述物理資產(chǎn)約束訂單交易描述真實(shí)供需逐時(shí)負(fù)荷描述運(yùn)行狀態(tài)電價(jià)序列描述外部成本信號(hào)用戶畫(huà)像描述價(jià)格敏感性。五塊拼起來(lái)才算一套完整的定價(jià)策略數(shù)據(jù)集。2.2 維度、粒度和標(biāo)簽的取舍設(shè)計(jì)階段最糾結(jié)的是時(shí)間粒度。交易訂單天然是不規(guī)則的一個(gè)訂單可能充了23分鐘另一個(gè)可能充了4小時(shí)。但策略分析和模型訓(xùn)練需要規(guī)整的序列。我把所有運(yùn)行指標(biāo)壓成15分鐘一條15分鐘平均功率、15分鐘充電量、15分鐘排隊(duì)車輛數(shù)、15分鐘服務(wù)車輛數(shù)。15分鐘這個(gè)粒度在行業(yè)里比較通用既能滿足負(fù)荷預(yù)測(cè)和需求響應(yīng)申報(bào)的精度要求又不會(huì)像1分鐘粒度那樣數(shù)據(jù)量膨脹到難以處理??臻g維度上以“站點(diǎn)”為基礎(chǔ)單元同時(shí)保留“行政區(qū)域”和“充電網(wǎng)絡(luò)”兩個(gè)聚合層級(jí)。實(shí)際建模時(shí)我發(fā)現(xiàn)單站數(shù)據(jù)噪聲很大比如某個(gè)寫(xiě)字樓站點(diǎn)午休時(shí)段突然涌入一批車單純看曲線很容易誤判為價(jià)格彈性異常而聚合到區(qū)域?qū)蛹?jí)后規(guī)律反而變得清晰。所以數(shù)據(jù)集里每張事實(shí)表都同時(shí)保留站點(diǎn)編號(hào)、區(qū)域編號(hào)、網(wǎng)絡(luò)編號(hào)三個(gè)外鍵寧可冗余也要方便后續(xù)靈活聚合。標(biāo)簽設(shè)計(jì)方面最核心的是價(jià)格彈性。它的含義很簡(jiǎn)單價(jià)格變化1%時(shí)充電需求量變化百分之幾。但實(shí)現(xiàn)起來(lái)遠(yuǎn)比想象復(fù)雜因?yàn)樾枨笞兓蛢r(jià)格變化往往發(fā)生在不同時(shí)間步。我采用的方案是先按“場(chǎng)站工作日/非工作日”分組再按“小時(shí)”分桶每個(gè)桶內(nèi)擬合需求量和價(jià)格的對(duì)數(shù)線性關(guān)系得到初始彈性估計(jì)。這個(gè)估計(jì)會(huì)進(jìn)入后續(xù)模型作為先驗(yàn)特征而不是直接當(dāng)作結(jié)論。2.3 一個(gè)可直接參考的表結(jié)構(gòu)示例下面給出一套我在模擬項(xiàng)目中驗(yàn)證過(guò)的核心表結(jié)構(gòu)不追求教科書(shū)級(jí)范式但保證業(yè)務(wù)上夠用好用station_profile站點(diǎn)檔案 - station_id站點(diǎn)唯一編碼 - region_id所屬區(qū)域編碼 - network_id所屬充電網(wǎng)絡(luò)編碼 - station_type站點(diǎn)類型如 居民區(qū)/辦公區(qū)/高速服務(wù)區(qū)/商超停車場(chǎng) - total_power站點(diǎn)總接入容量單位kW - charger_num充電樁數(shù)量 - charger_type快充/慢充比例 - has_storage是否有儲(chǔ)能 - has_pv是否有光伏 - is_public是否對(duì)外開(kāi)放 charging_order充電訂單事實(shí)表 - order_id訂單唯一編碼 - station_id站點(diǎn)編碼 - user_type用戶類型如 網(wǎng)約車/私家車/物流車 - start_time充電開(kāi)始時(shí)間精確到秒 - end_time充電結(jié)束時(shí)間精確到秒 - charge_kwh本次充電電量單位kWh - order_amount訂單金額單位元 - electricity_fee電費(fèi)部分單位元 - service_fee服務(wù)費(fèi)部分單位元 - start_soc起始電量 - end_soc結(jié)束電量 station_15min15分鐘聚合事實(shí)表 - station_id - slot_time15分鐘時(shí)間戳按本地時(shí)間對(duì)齊 - avg_power平均充電功率單位kW - energy_kwh總充電量 - charging_sessions充電訂單數(shù) - queue_vehicles排隊(duì)車輛數(shù)估計(jì)值 - is_peak_flag是否當(dāng)?shù)仉娋W(wǎng)高峰時(shí)段 - temperature環(huán)境溫度 - weather_code天氣代碼 electricity_price電價(jià)序列 - price_region電價(jià)區(qū)域編碼 - slot_time15分鐘時(shí)間戳 - spot_price現(xiàn)貨參考價(jià)單位元/MWh - fixed_tou_price固定分時(shí)電價(jià)單位元/MWh - retail_price零售目錄電價(jià) - has_incentive該時(shí)段是否有需求響應(yīng)激勵(lì) customer_profile用戶畫(huà)像 - user_id用戶唯一編碼 - user_type網(wǎng)約車/私家車/物流車 - home_region常駐區(qū)域 - vehicle_battery_kwh車型電池容量 - monthly_order_cnt月均充電次數(shù) - price_sensitivity_segment價(jià)格敏感度分群需要說(shuō)明的是真實(shí)落地時(shí)還會(huì)加很多輔助字典表比如節(jié)假日期表、站點(diǎn)坐標(biāo)表、充電樁故障記錄表。但核心分析基本上靠上面這幾張表就能串起來(lái)。訂單表和15分鐘聚合表是最常被調(diào)用的兩張大表建議按月份分區(qū)存儲(chǔ)查詢效率會(huì)高很多。2.4 造數(shù)補(bǔ)全與數(shù)據(jù)合成沒(méi)有歷史數(shù)據(jù)也能先跑起來(lái)如果你所在的城市或園區(qū)一開(kāi)始沒(méi)有完整歷史數(shù)據(jù)也完全可以用仿真數(shù)據(jù)先把流程驗(yàn)證跑通。我通常用“真實(shí)物理模型 隨機(jī)抽樣”的方式生成仿真數(shù)據(jù)根據(jù)站點(diǎn)的充電樁數(shù)量、平均單樁功率、訪問(wèn)車輛到達(dá)率、平均充電時(shí)長(zhǎng)分布、起始SOC分布蒙特卡洛模擬出一天內(nèi)的充電訂單序列和15分鐘負(fù)荷曲線。到達(dá)率服從帶峰值的非齊次泊松過(guò)程高峰時(shí)段強(qiáng)度是低谷的3到8倍充電時(shí)長(zhǎng)的分布則用對(duì)數(shù)正態(tài)近似均值隨車型和樁功率變化。生成之后再用訂單金額反推服務(wù)費(fèi)和電費(fèi)分?jǐn)傆卯?dāng)?shù)氐湫头謺r(shí)電價(jià)作為售電基準(zhǔn)。這樣造出來(lái)的數(shù)據(jù)雖然不是真實(shí)數(shù)據(jù)但統(tǒng)計(jì)特性和業(yè)務(wù)邏輯都接近真實(shí)足夠完成定價(jià)策略方法和模型的開(kāi)發(fā)測(cè)試。等真實(shí)數(shù)據(jù)逐步接入后再用真實(shí)數(shù)據(jù)替換掉仿真數(shù)據(jù)做重訓(xùn)練和校準(zhǔn)。3. 從數(shù)據(jù)到定價(jià)策略核心建模思路與實(shí)操要點(diǎn)3.1 先用統(tǒng)計(jì)學(xué)方法把“偽彈性”識(shí)別出來(lái)很多人一上來(lái)就想用機(jī)器學(xué)習(xí)直接把最優(yōu)價(jià)格預(yù)測(cè)出來(lái)我建議先冷靜。定價(jià)問(wèn)題的第一步應(yīng)該是識(shí)別真實(shí)的價(jià)格彈性這個(gè)環(huán)節(jié)用基礎(chǔ)統(tǒng)計(jì)學(xué)工具就夠了但必須把混淆變量控制住。舉一個(gè)真實(shí)場(chǎng)景。假設(shè)某站點(diǎn)周五下午價(jià)格比周四下午高5%訂單量下降了8%能說(shuō)彈性是-1.6嗎顯然不能。因?yàn)橹芪逑挛绾椭芩南挛绲挠脩艚Y(jié)構(gòu)都未必一致而且充電需求還受“剩余里程焦慮”影響周一一早要跑長(zhǎng)途的車主周五晚上即使價(jià)格貴也照樣充。所以比較價(jià)格彈性至少要同時(shí)滿足“同類站點(diǎn)”“同類時(shí)段”“相似天氣”“相似日期屬性”四個(gè)條件我一般用分層對(duì)比來(lái)近似隨機(jī)實(shí)驗(yàn)按工作日/周末、高峰/平段/低谷、站點(diǎn)類型先分層每層內(nèi)再按價(jià)格高低排序比較需求均值差異用對(duì)數(shù)需求差除以對(duì)數(shù)價(jià)格差得到分層的價(jià)格彈性估計(jì)。這樣算出來(lái)的彈性系數(shù)用作后續(xù)需求預(yù)測(cè)模型的特征或約束條件比直接上復(fù)雜模型要穩(wěn)健得多。我實(shí)測(cè)下來(lái)分層做出來(lái)的彈性系數(shù)通常落在-0.3到-1.2之間也就是說(shuō)價(jià)格漲10%需求會(huì)下降3%到12%。這個(gè)范圍比較符合行業(yè)常見(jiàn)經(jīng)驗(yàn)如果算出來(lái)彈性低于-2甚至更低大概率是數(shù)據(jù)處理或?qū)Ρ确纸M出了問(wèn)題。3.2 價(jià)格彈性之外還要預(yù)測(cè)需求基線有了價(jià)格彈性只解決了“價(jià)格變化影響多少需求”的一半問(wèn)題另一半是“不調(diào)價(jià)時(shí)需求是多少”。這個(gè)不調(diào)價(jià)的需求就叫基線需求是衡量?jī)r(jià)格干預(yù)效果的基準(zhǔn)?;€需求預(yù)測(cè)我用過(guò)很多方案最終穩(wěn)定下來(lái)的是梯度提升樹(shù)加滯后特征。特征主要由三大塊構(gòu)成時(shí)間特征星期幾、小時(shí)、是否節(jié)假日、是否工作日運(yùn)行特征站點(diǎn)過(guò)去1天/7天/28天的同小時(shí)平均充電量、排隊(duì)指數(shù)外部特征溫度、降雨概率、周邊活動(dòng)事件標(biāo)記。模型目標(biāo)變量用15分鐘累計(jì)充電量。預(yù)測(cè)結(jié)果在大多數(shù)站點(diǎn)上的MAPE平均絕對(duì)百分比誤差能做到10%到15%。注意對(duì)充電站這種高波動(dòng)場(chǎng)景我不追求所謂的最優(yōu)模型更看重特征穩(wěn)定性和可解釋性。一旦某個(gè)站點(diǎn)的預(yù)測(cè)結(jié)果開(kāi)始系統(tǒng)性偏離大概率是站點(diǎn)周邊出現(xiàn)了結(jié)構(gòu)性變化比如新開(kāi)了一個(gè)競(jìng)對(duì)場(chǎng)站此時(shí)需要人工介入調(diào)整站點(diǎn)屬性。3.3 動(dòng)態(tài)定價(jià)模型從優(yōu)化公式到可落地方案當(dāng)我們有了基線需求預(yù)測(cè)和價(jià)格彈性系數(shù)就可以進(jìn)入動(dòng)態(tài)定價(jià)環(huán)節(jié)。最常用的一個(gè)優(yōu)化目標(biāo)是“在電網(wǎng)容量約束下最大化站點(diǎn)毛利”。簡(jiǎn)化模型可以寫(xiě)成max Σ(單價(jià)_i - 購(gòu)電成本_i) × 需求量_i(單價(jià)_i)其中單價(jià)_i是每個(gè)15分鐘時(shí)段定的價(jià)格需求量_i受價(jià)格彈性和基線需求影響同時(shí)還要滿足站點(diǎn)總功率不超過(guò)上限、排隊(duì)等待時(shí)間不能超過(guò)可接受范圍。實(shí)際操作中我不會(huì)直接解這個(gè)非線性優(yōu)化問(wèn)題而是把它拆成兩步。第一步用離散價(jià)格枚舉第二步做約束校驗(yàn)。比如把每個(gè)時(shí)段的候選價(jià)格設(shè)為固定零售價(jià)上下浮動(dòng)20%的離散序列以15分鐘為一個(gè)動(dòng)作周期用基線需求乘彈性系數(shù)算出每個(gè)候選價(jià)格下的需求量和毛利然后做約束判斷并選優(yōu)。這種方式計(jì)算量小、邏輯透明運(yùn)營(yíng)人員也看得懂。用這類啟發(fā)式方案做下來(lái)模擬場(chǎng)景里站點(diǎn)毛利比固定電價(jià)平均提升8%到15%高峰期排隊(duì)時(shí)長(zhǎng)也明顯下降。更激進(jìn)的動(dòng)態(tài)定價(jià)還可以引入強(qiáng)化學(xué)習(xí)讓智能體不斷嘗試不同價(jià)位根據(jù)實(shí)時(shí)滿樁率和訂單量反饋調(diào)整策略。但強(qiáng)化學(xué)習(xí)對(duì)線上探索期的風(fēng)險(xiǎn)控制要求很高我建議先在離線仿真環(huán)境里跑夠充分輪次再以低頻率比如每小時(shí)決策一次小步切入線上同時(shí)加好價(jià)格上下限保護(hù)。沒(méi)有這些安全護(hù)欄很容易出現(xiàn)“模型瘋狂降價(jià)試需求”這種災(zāi)難性探索。3.4 需求響應(yīng)和虛擬電廠數(shù)據(jù)集的高階用途前面討論的定價(jià)主要面向常規(guī)運(yùn)營(yíng)但電力網(wǎng)絡(luò)充電站數(shù)據(jù)集還有一個(gè)極具價(jià)值的應(yīng)用方向就是需求響應(yīng)和虛擬電廠。當(dāng)電網(wǎng)出現(xiàn)供需緊張時(shí)調(diào)度機(jī)構(gòu)會(huì)發(fā)出削減負(fù)荷或增加負(fù)荷的指令。充電站如果能快速響應(yīng)就能獲得額外補(bǔ)償。這就需要數(shù)據(jù)集里包含實(shí)時(shí)負(fù)荷、可調(diào)功率、儲(chǔ)能狀態(tài)、訂單排隊(duì)情況等信息。我的做法是把虛擬電廠決策設(shè)計(jì)成一個(gè)兩層問(wèn)題上層決定站點(diǎn)在哪些時(shí)段參與響應(yīng)、承諾多少可調(diào)容量下層再把容量分解到各充電樁決定哪些樁降功率、哪些樁暫停、哪些樁保持全功率。這時(shí)數(shù)據(jù)集的價(jià)值就體現(xiàn)出來(lái)了如果只有實(shí)時(shí)功率沒(méi)有訂單維度你根本不知道降功率會(huì)影響哪些用戶如果只有訂單沒(méi)有用戶畫(huà)像你也沒(méi)法優(yōu)先保障高價(jià)值客戶。有了完整的數(shù)據(jù)集我可以按用戶價(jià)格敏感度和充電緊急程度排序把斷電或限功率帶來(lái)的體驗(yàn)損傷降到最低。這也是為什么我一直強(qiáng)調(diào)訂單表、15分鐘負(fù)荷表和用戶畫(huà)像表必須聯(lián)動(dòng)不能各存各的。4. 工程落地與問(wèn)題排查我踩過(guò)的坑和解決辦法4.1 時(shí)區(qū)與會(huì)話對(duì)齊的雷數(shù)據(jù)處理排第一位先講一個(gè)非常典型的工程問(wèn)題。有些充電樁終端輸出時(shí)間使用UTC有些使用本地時(shí)間還有些以設(shè)備固件時(shí)間為準(zhǔn)時(shí)間標(biāo)準(zhǔn)參差不齊。如果一個(gè)數(shù)據(jù)集里混用了兩種時(shí)區(qū)跨天訂單和峰谷時(shí)段歸屬會(huì)全部錯(cuò)亂模型結(jié)果直接報(bào)廢。我處理的原則很簡(jiǎn)單所有入庫(kù)時(shí)間一律轉(zhuǎn)成“站點(diǎn)本地時(shí)間”存儲(chǔ)同時(shí)保留UTC時(shí)間戳字段備用。轉(zhuǎn)換邏輯統(tǒng)一放到ETL層不允許業(yè)務(wù)SQL里各自做時(shí)間換算。另外要特別小心夏令時(shí)切換如果涉及的地區(qū)有夏令時(shí)每年會(huì)有兩次“一小時(shí)消失/重復(fù)”的現(xiàn)象建議在維度表里維護(hù)本地的夏令時(shí)切換日期避免兩倍小時(shí)數(shù)據(jù)同時(shí)涌入同一個(gè)15分鐘桶。會(huì)話對(duì)齊是另一個(gè)高頻坑。有段時(shí)間某模擬項(xiàng)目的訂單結(jié)束時(shí)間頻繁錯(cuò)位后來(lái)發(fā)現(xiàn)是終端在“拔槍”后并不會(huì)立刻上報(bào)結(jié)束事件而是等下一次心跳才更新?tīng)顟B(tài)延遲從幾分鐘到十幾分鐘不等。這種錯(cuò)位平時(shí)看不出來(lái)但一算高峰時(shí)段訂單平均時(shí)長(zhǎng)就會(huì)系統(tǒng)性偏大。解決辦法是交叉驗(yàn)證用訂單表累計(jì)的電量之和對(duì)比站點(diǎn)電表15分鐘電量之和。如果兩者長(zhǎng)期偏差超過(guò)3%基本可以斷定訂單起止時(shí)間存在系統(tǒng)性漂移此時(shí)需要根據(jù)電表數(shù)據(jù)反推真實(shí)結(jié)束時(shí)間或者對(duì)訂單時(shí)長(zhǎng)做截?cái)嘈?zhǔn)。4.2 缺失值和異常值先分清楚是“無(wú)記錄”還是“零值”缺失值處理屬于看似簡(jiǎn)單、實(shí)則門(mén)道很深的問(wèn)題。充電站負(fù)荷數(shù)據(jù)缺失常見(jiàn)原因包括終端離線、維護(hù)斷電、通信故障。關(guān)鍵是區(qū)分“沒(méi)充電所以功率為0”和“設(shè)備沒(méi)上報(bào)所以沒(méi)記錄”。前者代表真實(shí)空閑后者代表數(shù)據(jù)黑洞兩者如果混為一談模型會(huì)嚴(yán)重低估站點(diǎn)利用率。我建議維護(hù)一張?jiān)O(shè)備狀態(tài)日志表每次終端的心跳、離線、恢復(fù)都記錄在案。處理15分鐘聚合表缺失值時(shí)如果對(duì)應(yīng)時(shí)段設(shè)備在線但無(wú)功率視為真實(shí)0值如果設(shè)備離線則用同站點(diǎn)前后7天同時(shí)段的平均功率做插補(bǔ)并在表中保留缺失標(biāo)記字段。這樣后續(xù)建模時(shí)可以隨時(shí)選擇剔除插補(bǔ)樣本或帶著標(biāo)記訓(xùn)練。異常值方面充電功率突然超過(guò)站點(diǎn)總?cè)萘康挠涗洿蟾怕适怯?jì)量錯(cuò)誤或樁號(hào)映射錯(cuò)亂直接剔除并標(biāo)記即可。但要注意另一種異常很有意思訂單電量正常、金額為負(fù)這通常不是故障而是退款或優(yōu)惠券抵扣產(chǎn)生的負(fù)訂單。建模前必須把這些訂單單獨(dú)歸到“營(yíng)銷活動(dòng)表”不能作為正常價(jià)格樣本來(lái)訓(xùn)練價(jià)格彈性模型否則會(huì)得到完全失真的價(jià)格系數(shù)。4.3 特征穿越建模前最容易忽略但又致命的錯(cuò)誤特征穿越的意思很直白你的模型用到了“未來(lái)信息”。在預(yù)測(cè)凌晨2點(diǎn)充電量時(shí)如果特征里意外包含了凌晨3點(diǎn)的天氣實(shí)況這類信息會(huì)制造非常漂亮的離線指標(biāo)但上線后立刻崩塌。我踩過(guò)最隱蔽的一次是用了“當(dāng)日全天天氣預(yù)報(bào)中的降雨概率”作為特征預(yù)測(cè)當(dāng)天各時(shí)段負(fù)荷。離線MAPE漂亮得離譜后來(lái)才意識(shí)到整天的預(yù)報(bào)是完整的包含了未來(lái)小時(shí)信息。修正方案是只保留每個(gè)時(shí)段開(kāi)始前已發(fā)布的歷史觀測(cè)和前向滾動(dòng)的短時(shí)預(yù)報(bào)窗口并且把“特征可見(jiàn)時(shí)間”顯式記錄到元數(shù)據(jù)里。這個(gè)經(jīng)驗(yàn)后來(lái)一直沿用任何特征上線前先回答一個(gè)問(wèn)題——在當(dāng)前決策時(shí)刻這個(gè)特征值是否已經(jīng)存在。4.4 評(píng)估指標(biāo)別只盯著平均絕對(duì)誤差評(píng)估定價(jià)模型時(shí)我見(jiàn)過(guò)不少團(tuán)隊(duì)只報(bào)一個(gè)“平均絕對(duì)百分比誤差”就草草收?qǐng)?。但?duì)充電站定價(jià)業(yè)務(wù)來(lái)說(shuō)最核心的指標(biāo)不是預(yù)測(cè)精度而是“決策收益”。我推薦一套組合評(píng)估方式離線階段除了常規(guī)回歸指標(biāo)還要做“決策模擬”給定一個(gè)定價(jià)策略基于預(yù)測(cè)結(jié)果計(jì)算營(yíng)收、毛利、滿樁率、排隊(duì)時(shí)間然后和真實(shí)固定價(jià)場(chǎng)景對(duì)比。在線階段用A/B測(cè)試來(lái)驗(yàn)證至少跑一整個(gè)自然周最好是兩周以上避開(kāi)單個(gè)節(jié)假日的干擾。A/B實(shí)驗(yàn)分組時(shí)要注意站點(diǎn)的空間溢出效應(yīng)同一個(gè)商圈里的站點(diǎn)如果分成A組和B組用戶很可能就近流竄導(dǎo)致實(shí)驗(yàn)組之間需求互相污染。更穩(wěn)妥的做法是按地理區(qū)域隨機(jī)分組而不是按單個(gè)站點(diǎn)隨機(jī)分組。5. 一個(gè)完整可復(fù)用的實(shí)操過(guò)程從仿真數(shù)據(jù)到定價(jià)Demo5.1 起手式先建站再模擬后建模型如果你想快速體驗(yàn)整個(gè)流程我強(qiáng)烈建議先做一個(gè)最小閉環(huán)不要一上來(lái)就追求超大范圍。我自己做模擬項(xiàng)目X時(shí)的步驟如下第一步定義一個(gè)模擬場(chǎng)景。選取9個(gè)虛構(gòu)站點(diǎn)三個(gè)在辦公區(qū)三個(gè)在居民區(qū)三個(gè)在高速服務(wù)區(qū)。每站設(shè)1到2臺(tái)120kW快充樁和若干7kW慢充樁總接入容量分別為300kVA到800kVA不等。第二步生成一天的仿真訂單。設(shè)定每站的車輛到達(dá)率高峰系數(shù)比如辦公區(qū)工作日上午8點(diǎn)到10點(diǎn)、下午17點(diǎn)到19點(diǎn)是雙高峰高速服務(wù)區(qū)長(zhǎng)假日和周五下午出現(xiàn)長(zhǎng)尾高峰。充電時(shí)長(zhǎng)按車型分布抽樣網(wǎng)約車均值45分鐘私家車均值1.5小時(shí)物流車均值2小時(shí)。起始SOC用Beta分布近似多數(shù)車輛進(jìn)場(chǎng)SOC在20%到60%之間。第三步生成真實(shí)的價(jià)目表。采用當(dāng)?shù)爻R?jiàn)分時(shí)電價(jià)高峰1.2元/度、平段0.8元/度、低谷0.4元/度再疊加充電服務(wù)費(fèi)0.3元到0.6元/度。這樣每個(gè)訂單可以自然算出電費(fèi)和服務(wù)費(fèi)。5.2 可視化先行先看圖再跑模型不要跳過(guò)可視化環(huán)節(jié)。我通常先用15分鐘聚合數(shù)據(jù)畫(huà)四張圖每張圖都會(huì)暴露一批數(shù)據(jù)問(wèn)題第一張是站點(diǎn)日負(fù)荷曲線疊加分時(shí)電價(jià)價(jià)格和負(fù)荷的錯(cuò)位關(guān)系一眼可見(jiàn)第二張是訂單時(shí)長(zhǎng)分布直方圖能看到是否存在異常長(zhǎng)單或超短單第三張是各站點(diǎn)一周7×24熱度圖快速發(fā)現(xiàn)節(jié)假日和工作日的結(jié)構(gòu)性差異第四張是訂單價(jià)格與充電量的散點(diǎn)圖按小時(shí)著色初步觀察價(jià)格彈性的存在感。這些圖看著簡(jiǎn)單卻能在建模前規(guī)避掉大量低級(jí)錯(cuò)誤。我做模擬項(xiàng)目X時(shí)第一張圖立刻顯示出三個(gè)高速服務(wù)區(qū)站點(diǎn)的午間負(fù)荷異常低排查后發(fā)現(xiàn)是仿真參數(shù)里漏了節(jié)假日客流系數(shù)。如果沒(méi)有先看圖直接訓(xùn)練這個(gè)bug會(huì)被模型吸收成“價(jià)格負(fù)彈性”那就完全錯(cuò)亂了。5.3 特征工程多少算夠?qū)嶋H建模時(shí)特征不是越多越好我的原則是“能解釋、穩(wěn)定、不穿越”優(yōu)先。我最終用的特征集大概二十幾個(gè)核心就三類滯后類過(guò)去1小時(shí)、昨天同時(shí)段、上周同時(shí)段充電量周期類小時(shí)索引、星期索引、是否節(jié)假日距天數(shù)價(jià)格類當(dāng)前時(shí)段價(jià)格、歷史平均價(jià)格、競(jìng)對(duì)價(jià)格估計(jì)值。價(jià)格類特征要格外注意相關(guān)性。如果站點(diǎn)長(zhǎng)期執(zhí)行固定分時(shí)電價(jià)價(jià)格序列和時(shí)段強(qiáng)相關(guān)模型會(huì)把“高峰時(shí)段”當(dāng)成價(jià)格原因價(jià)格彈性會(huì)被時(shí)間效應(yīng)吸收。解決辦法是增加價(jià)格特征的擾動(dòng)來(lái)源比如引入促銷活動(dòng)、競(jìng)對(duì)調(diào)價(jià)事件、需求響應(yīng)激勵(lì)時(shí)段等自然實(shí)驗(yàn)窗口。仿真數(shù)據(jù)里我故意在某些時(shí)段把價(jià)格上調(diào)20%、某些時(shí)段降價(jià)10%給模型創(chuàng)造足夠的價(jià)格差異來(lái)識(shí)別彈性這一步非常關(guān)鍵。5.4 快速實(shí)現(xiàn)基線預(yù)測(cè)與動(dòng)態(tài)定價(jià)用一個(gè)非常簡(jiǎn)單但效果穩(wěn)定的方案就能完成基線預(yù)測(cè)把“站點(diǎn)星期類型小時(shí)”作為分組計(jì)算歷史同組充電量均值再乘一個(gè)平滑系數(shù)。這個(gè)樸素基線通常在MAPE 15%到25%雖然粗笨但可以作為后續(xù)模型提升空間的下限參照。升級(jí)方案是梯度提升樹(shù)加滯后特征這一檔能把MAPE壓到10%到15%。再往上如果想要更精細(xì)的時(shí)序依賴可以考慮序列模型但收益遞增會(huì)越來(lái)越小還要付出更大的調(diào)參成本。所以我目前的建議是先用樹(shù)模型上線把數(shù)據(jù)質(zhì)量和特征穩(wěn)定性打磨到極限再考慮復(fù)雜模型。動(dòng)態(tài)定價(jià)模塊我用的是第三節(jié)提到的枚舉優(yōu)化。對(duì)每個(gè)15分鐘時(shí)段生成從0.8倍到1.2倍當(dāng)前價(jià)步長(zhǎng)0.05的候選價(jià)格序列用基線需求乘彈性系數(shù)估算每個(gè)價(jià)格下的需求量減去購(gòu)電成本后算毛利再結(jié)合站內(nèi)總功率和排隊(duì)時(shí)長(zhǎng)約束選最優(yōu)價(jià)。仿真結(jié)果顯示動(dòng)態(tài)定價(jià)策略比固定分時(shí)電價(jià)的整體毛利提升在10%左右而且這個(gè)提升主要來(lái)自高峰時(shí)段的“提高價(jià)格降低擁堵”和低谷時(shí)段的“降價(jià)引流”。注意任何動(dòng)態(tài)定價(jià)策略上線前一定要設(shè)價(jià)格上下限并且要有“策略開(kāi)關(guān)”。如果系統(tǒng)預(yù)測(cè)失效或數(shù)據(jù)質(zhì)量告警立即回退到固定電價(jià)模式。我在模擬項(xiàng)目X里特意留了這條逃生通道后來(lái)真的用上了。6. 高階應(yīng)用把數(shù)據(jù)集接入電力市場(chǎng)與車網(wǎng)互動(dòng)6.1 充電站作為虛擬電廠的調(diào)節(jié)資源前文提過(guò)需求響應(yīng)實(shí)際上充電站的價(jià)值遠(yuǎn)不止“削峰填谷”。隨著電力現(xiàn)貨市場(chǎng)逐步完善能夠精確預(yù)測(cè)負(fù)荷并快速響應(yīng)調(diào)節(jié)的充電站本質(zhì)上就是一種分布式儲(chǔ)能資源。比如某區(qū)域如果下午光伏出力過(guò)大、現(xiàn)貨電價(jià)很低甚至出現(xiàn)負(fù)電價(jià)充電站可以主動(dòng)引導(dǎo)車輛增加充電提升新能源消納晚間負(fù)荷高峰電價(jià)飆升充電站又可以通過(guò)價(jià)格信號(hào)壓低充電需求或者讓支持車網(wǎng)互通的車輛反向放電。這兩個(gè)方向的調(diào)節(jié)能力都需要數(shù)據(jù)集的支撐電網(wǎng)調(diào)度需要知道每個(gè)時(shí)點(diǎn)站內(nèi)可調(diào)容量、用戶參與意愿、電池SOC分布。我在做模擬項(xiàng)目X的車網(wǎng)互動(dòng)場(chǎng)景時(shí)把用戶參與意愿簡(jiǎn)單建模為“經(jīng)濟(jì)激勵(lì)閾值”當(dāng)電價(jià)激勵(lì)超過(guò)用戶設(shè)定的最低回報(bào)率用戶才愿意在低谷充電、高峰放電。數(shù)據(jù)集里保存了這類偏好的匯總統(tǒng)計(jì)而不是個(gè)人信息。6.2 與光儲(chǔ)充一體化場(chǎng)站的協(xié)同優(yōu)化如果站點(diǎn)配置了光伏和儲(chǔ)能定價(jià)策略就又多了一層優(yōu)化空間。儲(chǔ)能可以在低價(jià)時(shí)段充電、高價(jià)時(shí)段放電光伏可以降低高峰時(shí)段的購(gòu)電壓力。三層協(xié)同下動(dòng)態(tài)定價(jià)的目標(biāo)函數(shù)要改寫(xiě)為營(yíng)收減去購(gòu)電成本減去儲(chǔ)能充放電損耗再加需求響應(yīng)補(bǔ)貼。實(shí)際操作中我不建議用一個(gè)巨大的端到端模型同時(shí)求解所有變量而是采用分層決策外層用線性規(guī)劃或啟發(fā)式優(yōu)化決定儲(chǔ)能充放電計(jì)劃內(nèi)層再根據(jù)凈購(gòu)電成本做充電樁的定價(jià)和功率分配。數(shù)據(jù)集里要新增儲(chǔ)能功率曲線、光伏出力曲線和電池SOC曲線三張表時(shí)間粒度和站點(diǎn)15分鐘表對(duì)齊。6.3 數(shù)據(jù)資產(chǎn)化從單站優(yōu)化到網(wǎng)絡(luò)級(jí)調(diào)度當(dāng)數(shù)據(jù)集覆蓋的站點(diǎn)越來(lái)越多單個(gè)站點(diǎn)的優(yōu)化逐漸讓位于網(wǎng)絡(luò)級(jí)調(diào)度。比如同一網(wǎng)絡(luò)內(nèi)多個(gè)站點(diǎn)同時(shí)參與需求響應(yīng)調(diào)度系統(tǒng)需要決定優(yōu)先削減哪個(gè)站的功率、把充電需求引導(dǎo)到哪個(gè)替代站點(diǎn)。這種網(wǎng)絡(luò)級(jí)優(yōu)化對(duì)數(shù)據(jù)質(zhì)量要求更高任何一個(gè)站點(diǎn)的異常數(shù)據(jù)都會(huì)傳導(dǎo)到全局結(jié)果。所以我在每個(gè)站點(diǎn)接入網(wǎng)絡(luò)調(diào)度前都會(huì)先做一輪數(shù)據(jù)健康度體檢缺失率、時(shí)區(qū)一致性、訂單-電表偏差、功率超容量比例、價(jià)格字段異常比例。體檢不過(guò)的站點(diǎn)只參與統(tǒng)計(jì)分析不參與調(diào)度決策。這套體檢邏輯現(xiàn)在已經(jīng)變成我做所有數(shù)據(jù)類項(xiàng)目的第一道工序效果非常實(shí)在。7. 幾個(gè)值得投入的后續(xù)擴(kuò)展方向整套方法論跑通之后后續(xù)可以直接延伸的方向不少我挑三個(gè)覺(jué)得回報(bào)率最高的說(shuō)。第一把用戶分群和價(jià)格敏感度做細(xì)。目前數(shù)據(jù)集里用簡(jiǎn)單的規(guī)則分群比如按月充電次數(shù)和車型粗分。更精細(xì)的做法是用聚類算法識(shí)別“價(jià)格敏感型”“時(shí)間敏感型”“品牌忠誠(chéng)型”三類用戶并動(dòng)態(tài)更新群標(biāo)簽進(jìn)一步支撐定向優(yōu)惠和精準(zhǔn)營(yíng)銷。第二把充電價(jià)格彈性從靜態(tài)值升級(jí)為時(shí)變彈性函數(shù)。比如在節(jié)假日和極端天氣下用戶對(duì)價(jià)格的敏感度會(huì)明顯下降時(shí)變彈性函數(shù)能更好地指導(dǎo)動(dòng)態(tài)定價(jià)。第三把現(xiàn)貨電價(jià)預(yù)測(cè)納進(jìn)定價(jià)系統(tǒng)。幾天前買(mǎi)的實(shí)時(shí)市場(chǎng)電價(jià)模型雖然還在改進(jìn)但哪怕只是比較粗略的預(yù)測(cè)也能讓定價(jià)策略從被動(dòng)響應(yīng)變成主動(dòng)前瞻。這些方向有一個(gè)共同點(diǎn)全都依賴高質(zhì)量、明細(xì)度高、時(shí)間對(duì)齊的充電站數(shù)據(jù)集。先把數(shù)據(jù)底座打好后面每一步都是水到渠成的事。我自己實(shí)操下來(lái)的體會(huì)是與其花大把時(shí)間調(diào)一個(gè)更高級(jí)的模型不如把八成精力投入在數(shù)據(jù)清洗、口徑對(duì)齊和特征邊界管理上。數(shù)據(jù)和業(yè)務(wù)邏輯理順了哪怕是相對(duì)簡(jiǎn)單的枚舉優(yōu)化也完全能帶來(lái)肉眼可見(jiàn)的營(yíng)收提升。反過(guò)來(lái)數(shù)據(jù)里藏著十個(gè)坑模型再花哨也只是放大器把這些坑原封不動(dòng)放大到每一筆訂單和每一次調(diào)度里。