做分时电价和需求响应评估的时候总会碰到一个让人头疼的场景价格信号放出去了短信发了客户经理也上门聊了一圈结果一部分用户的数据纹丝不动。去年我在某售电公司做用户画像分析时就撞上了这堵墙——将近三成的用户在尖峰电价拉高到平段的1.8倍之后峰段用电占比几乎没变。这类用户后来我才真正意识到它们就是典型的电费敏感用户模型里的低敏用户。低敏用户这个词乍看像是“不关心电费的人”但实际建模要复杂得多。它不是一个非黑即白的标签而是对电价变化响应不显著的用户集群。今天这篇就围绕电费敏感用户模型中的低敏用户识别聊聊我自己的建模思路、特征工程、模型验证和落地时踩过的坑。内容更适合正在做用户分群、需求响应潜力评估或售电套餐设计的同行参考读完能少走不少弯路。1. 为什么需要单独给“电费低敏用户”建一个模型1.1 需求响应与分时电价背后的核心假设几乎所有需求侧管理工具默认有一条隐含假设用户会对价格信号做出理性反应。分时电价把一天切成峰平谷三段峰段电价高、谷段电价低目的就是引导用户把用电负荷从峰段挪到谷段缓解电网的调峰压力。但这条假设在真实用户身上经常失效。我见过一个做机械加工的厂子订单排期决定了它的用电曲线——白天高峰时段正好是产线全开的时间即便峰段电价是谷段的2倍也只能照用不误让它把工序挪到深夜产线人力成本、物流成本反而更高省下来的电费远不够覆盖其他成本的增加。这种情况下电价敏感度就被其他运营成本彻底压过了。当“价格弹性”假设在相当一部分用户身上不成立时把所有人都用同一套分时电价进行分析、用同一套需求响应策略去动员就会产生两个直接问题一是营销成本大量浪费在天然就不会响应的用户身上二是高敏用户的响应潜力被平均化的数据掩盖导致策略设计失真。低敏用户模型的价值就在于此先把人群拆开再谈精细运营。1.2 用户敏感度分层高敏、中敏、低敏的业务意义建模第一步先把敏感度分层这件事想清楚。从业务上看用户大致可以切三层高敏用户对电价变化有明显的负荷转移行为。典型代表是具备储热、储能、可中断产线的工业用户。这类用户是需求响应的主力应重点动员并设计灵活的套餐。中敏用户有一定弹性但响应受限于生产安排或舒适度标准。像部分商业空调负荷、可调度的充电桩等。这类用户适合做半强制性需求响应需要提前通知和适度激励。低敏用户电价调整前后负荷形态几乎不变价格弹性很低。它们不是不交电费而是“省不下来”或“不想省”。这类用户如果继续推送实时电价和激励信息转化率极低反而应该换一套运营逻辑。三层分完之后策略重心就清楚了高敏用户抓紧签合同、做需求响应结算中敏用户做行为引导低敏用户则要做固定收益类套餐或节能改造服务。因为低敏用户的用电曲线平稳反而适合售电公司锁定价差这是它独特的商业价值。1.3 低敏模型的边界它不是“静态标签”是一个连续分数有一点必须先说清楚。用二分类把用户硬切成“低敏”和“高敏”是非常粗暴的做法。敏感度本质上是连续变量更适合用一个0到100的分值表示。低敏用户只是在这个分值区间里分数偏低、行为特征偏向低敏的一端而不是绝对意义上“完全没反应”。我在建模时习惯把输出定义为敏感度评分然后再按百分位切段。这样有几个好处阈值可以灵活调节业务方提出“我要找到最不敏感的30%用户”时不需要重训模型只需要改切分点同时也能观察到用户的敏感度是否随着季节和生产周期变化而漂移这就为后续动态更新打了基础。2. 低敏用户的长相从负荷曲线里读出典型画像要说怎么从数据里识别低敏用户首先得知道他们在负荷曲线上长什么样。这部分我建议每一位做建模的同行都先花时间人工看一批用户的96点曲线形成直觉后再上特征工程。模型只是把直觉量化直觉本身才是判断模型是否合理的第一关。2.1 四类最常见的低敏用户形态我从几个数据集里反复比对后归纳出低敏用户最典型的四类形态。如果你手头的用户也有类似表现大概率是低敏候选户。第一类是连续生产型工业用户。三班倒或高负荷连续运行的工厂日负荷曲线接近一条直线负荷率往往超过85%峰谷电量比接近1。这类用户的用电由产能决定不由电价决定涨价只能被动接受属于刚性用电。第二类是刚性公共服务型用户。医院、养老机构、部分学校等用电时段由业务性质决定。手术室不能因为电价贵就少开空调食堂不能因为峰段电价高就不做饭。这类用户以保障为导向价格在决策链条里的分量很低。第三类是7×24小时IT设备型用户。数据中心、通信机房等。服务器只要开机就持续运转负载水平非常平均。我之前碰过一个机房全年日均负荷曲线抖动的标准差不到平均负荷的5%这种设备特性决定了它对任何价格信号都“免疫”。第四类是管理粗放的小型商业体。小型餐饮、临街商铺等。店主不怎么看电费账单空调常年设定同一个温度营业时间也很固定。对它们来说电费在总成本中占比不高店主没有意识也没有意愿去优化用电行为。2.2 为什么负荷率比峰谷比更能反映低敏特征很多分析习惯用峰段电量占比或峰谷差来描述用户的移峰填谷潜力但在低敏用户建模里我更推荐优先看均负载率。均负载率的公式很简单统计周期内平均负荷除以最大负荷。它描述的是负荷曲线的“饱满程度”。连续生产型工厂的均负载率通常超过0.8机房可能到0.9以上而高敏用户里常见的单班制车间白天8小时满负荷、晚上几乎空载均负载率往往只有0.3到0.5。峰谷比容易误导人一个峰谷比接近1的用户可能是低敏的连续生产企业也可能是一个有着光伏自用电、自发自用比例很高的用户。但均负载率能把前者清晰地暴露出来。因此建模时我把均负载率放在第一优先级峰谷电量占比作为辅助特征而不是主特征。2.3 一个容易被忽视的特征电量对温度的弹性有一类用户日常负荷率很低看起来挪峰空间很大但它们的温度弹性基本面非常弱。这种用户也要警惕被误判为高敏。什么叫温度弹性弱我一般用夏季每日平均气温和每日电量的秩相关系数来衡量。正常的商业空调用户温度升3度、电量有肉眼可见的抬升相关系数能到0.6以上但有些建筑的空调系统全年不分区调节、只设一个总开关或者物业管理粗放温度变化对账单毫无影响。它们的电量曲线平坦不是因为没有空调负荷而是根本没有精细管理的意识。这类用户在低敏模型里要单独标记因为它们的低敏来自“管理能力不足”而不是“设备本身没有弹性”。后续若做了节能改造或加装智能温控敏感度是有可能提升的。模型输出的只有当前状态不代表永远不变。3. 特征工程把15分钟一条的计量数据变成敏感度信号建模里最花时间的从来不是算法调参而是特征工程。电费敏感度模型要用到的原始数据其实不复杂——96点负荷曲线15分钟一个点、电量、电价记录再加上用户档案里的行业、容量、电价类别等静态信息。难的是怎么把这些原始记录变成真正能区分敏感度的信号。3.1 基础数据表的设计思路我建议把特征表按用户-月份粒度来构建而不是按用户-年。因为敏感度在年内会有季节性波动比如北方冬季供暖用户和夏季空调用户的负荷特征完全不同按月粒度可以保留这种变化信息后续如果想做滚动更新也更方便。数据源有几种自动采集系统的96点负荷是首选能直接计算负荷率、波动系数等形态特征如果没有负荷曲线至少要有分时电量记录峰平谷三段也能计算峰谷占比类特征实在只有日电量的话特征空间会压缩到温度弹性、趋势变化这几个维度精度会下降不少建议优先补充计量硬件。3.2 六个核心特征的计算与含义基于上述数据粒度我会为每个用户每月构造一组特征。下表是核心特征清单和说明特征名计算方式对低敏识别的含义均负载率月平均负荷 ÷ 月最大负荷越高代表负荷越饱满越可能低敏峰段电量占比峰段电量 ÷ 全天电量高且稳定通常意味着刚性生产或经营管理粗放负荷波动系数负荷标准差 ÷ 平均负荷越低代表曲线越平稳低敏概率越高最大需量利用小时数月电量 ÷ 变压器报装容量长期接近满容量运转意味着很难调峰温度敏感系数气温序列与日电量序列的Spearman相关系数接近0或为负说明空调弹性弱可能低敏历史响应指数历次电价或需求响应事件前后用电量的变化幅度直接度量实测敏感度是最有说服力的特征任何一个特征单独看都可能存在反例但组合在一起低敏用户的表现是非常稳定而且突出的。我常用的一个组合特征是“高均负载率低波动系数”如果同时出现这个用户基本可以判定具有强低敏倾向。3.3 特殊用户样本的清洗规则特征工程里最容易被忽略、但最容易翻车的是样本清洗。有一条规则要放在最前面光伏用户、充电桩用户和转供电用户必须从训练样本里剔除或单独建模。原因是光伏用户在午间高峰时段上网电量会抵消从电网取用的电量看起来峰段电量占比很低、像是高敏用户但这不是行为变化而是计量口径造成的假象。充电桩用户的负荷通常集中在夜间谷段看起来是主动避峰实际是随电动汽车使用习惯被动形成同样会干扰敏感度评估。转供电用户更麻烦电价在中间环节被加价或分摊用户感知到的价格信号和目录电价不一致历史响应数据完全不可信。这类用户我建议单独分到一个“不可评估组”不要参与敏感度打分。4. 敏感度判别建模规则评分卡、监督学习与验证方法特征整理完之后接下来是建模方式的选择。电费敏感度这个命题有一个特点它并不是纯粹通过历史标签就能学的“用户是否违约”那类分类问题因为真正规范的响应事件样本往往很少标签稀疏而且口径混乱。所以我不推荐一上来就套深度学习或复杂集成模型先用可解释的规则评分卡是更稳的做法。4.1 自下而上的规则评分卡稳定且可向业务解释评分卡的思路是给每个特征设若干分段每段对应一个分值最后把分值加权汇总成敏感度分数。比如均负载率这一项小于0.5记3分高敏倾向0.5到0.7记2分0.7到0.85记1分大于0.85记0分。负荷波动系数大于0.4记3分0.25到0.4记2分0.15到0.25记1分小于0.15记0分。温度敏感系数大于0.5记3分0.3到0.5记2分0.1到0.3记1分小于0.1记0分。得分越高代表越不敏感、越低敏。每个特征的阈值切分点可以参考分位数也可以用业务经验人工调整。特征权重方面我尝试过等权也尝试过按信息价值计算权重实际结果差异不大最后反而用了等权方案——因为解释成本低业务方容易接受而且主特征之间的相关性没有高到需要复杂加权。4.2 为什么监督学习在敏感度识别上有局限我试过拿历史需求响应签约和实际响应数据做标签训练梯度提升树来做二分类特征用上面那些再加一些交叉特征。测试集表现看起来还行AUC大概0.85左右但一上到人工复核环节问题就暴露了模型输出的“高敏用户”里混了不少伪响应者。原因其实不复杂。需求响应历史事件有限可能就三四场而且每场都是提前通知、有补贴的用户响应行为也和自发性的价格响应不完全一样。标签本身很稀疏正样本数量几十个负样本虽然多但里面大量用户根本没被通知过谈不上“不响应”。这种标签噪声会让监督模型学到一些虚假规律比如偏向某类行业电工联系方式完善、通知触达率高的用户。所以我的建议是有干净标签、有充足样本时可以用监督学习做校准但大多数情况下规则评分卡加上少量人工复核产出更可靠而且每一次特征分值的调整都能直接对应到业务逻辑里去解释。4.3 模型验证要看的不是单一指标而是分组稳定性敏感度模型上线之前我先不急着看整体准确率而是看三个层面的稳定性。第一是行业稳定性。把评分结果按行业分类统计验证连续生产类行业的低敏比例是否系统性偏高、办公类行业是否系统性偏低。如果某一类行业的结果和业务直觉冲突需要回到该行业的负荷曲线上核查而不是急于相信模型。第二是时间稳定性。用上一个季度的数据训练出的规则去测试下一个季度的用户看排序是否有剧烈变化。低敏用户群体的排序应该是缓慢漂移的如果前后两个月的评分排名发生大幅度随机跳动说明特征里混入了较强的噪声可能要补充平滑处理。第三是阈值召回率。人工抽样复核一部分被模型判定为高敏和低敏的用户看边界用户的判断准确度。复核方式就是打开它的负荷曲线肉眼观察是否有明显的移峰填谷痕迹。这个环节虽然原始但几乎每次都能抓到特征工程里漏掉的问题。5. 试点项目复盘从数据准备到分群结果的全过程讲完方法论拿一个具体的试点项目把整个流程串起来。这个项目是某地区一般工商业用户的敏感度分群试点目标是找出低敏用户为后续固定套餐推广提供名单。5.1 数据准备与样本筛选原始数据取了1200户一般工商业用户覆盖一个完整年度的96点负荷曲线、日电量、电价记录和基础档案。时间跨度足够涵盖夏季高峰和冬季供暖期能捕捉到季节性特征。清洗过程比想象中繁琐。第一步剔除光伏用户约40户因为午间报表里发电量对冲导致峰段电量占比失真第二步剔除充电桩专用变压器用户约25户夜间谷段充电的特征会干扰负荷率的判断第三步剔除转供电用户约53户它们的结算电价不是目录电价历史行为不可比。最终进入建模的样本是1082户。5.2 建模过程与结果对比我同时跑了规则评分卡和一个修正后的监督学习版本后者用过去一年内实际参与过需求响应且被确认完成响应的用户作为正样本没参与过的作为负样本。结果很有意思两张名单的重合率大概在70%左右。差异主要集中在那些负荷形态像低敏、但档案里行业属于商业办公的用户——规则评分卡认为它们低敏监督模型认为它们存在响应潜力。人工复核后发现这些用户大多属于物业管理松散、空调运行时段固定的写字楼底商评分卡的判断更符合实际情况。项目最终采用了规则评分卡作为主模型监督学习的输出当作辅助参考。5.3 分群结果与人工复核的边界案例最终评分结果显示敏感度评分70分以上、属于低敏倾向的用户占31%45到70分的中敏区间占42%45分以下的高敏倾向占27%。人工复核阶段重点抽查了评分在62到70分之间、处于低敏边缘的用户。有一户是冷链仓储企业评分65分均负载率0.78温度敏感系数0.35波动系数0.18规则判定为低敏候选。但翻它的历史记录发现该用户在两年前某次电价结构改革后确实把部分制冷负荷切到了谷段只是后来生产规模扩张、冷库满载运行弹性空间被压缩了。这类用户的低敏是“阶段性”的不是本底特征。这提醒我一个重要的处理原则模型输出分数时最好同时输出特征明细而不是只给一个分。业务方在后续名单使用时能针对不同成因的低敏用户采取差异化的沟通策略。6. 模型落地时避不开的坑与我的处理方式6.1 计量采集异常会让分数失真96点负荷曲线看着规整但落到明细数据各种问题都有采集终端掉线导致某一天全是0日冻结电量偶尔出现负值还有极少数用户换表导致最大负荷记录异常偏高等。我的处理方式是先做数据质量校验逐户计算完整率低于95%的月份直接剔除不参与特征计算。日电量小于等于0的记录要回溯到采集系统核查确认是换表还是终端故障如果是换表就要按新表口径重新对齐。这个环节不解决后面的特征分母全是错的。6.2 季节漂移一年前训练好的规则不能直接用一年模型上线后最常见的问题是季节漂移。比如一个以暖通负荷为主的用户夏季温度敏感系数很高模型判断它属于中敏偏高但到了冬季如果它用电采暖而不是燃气锅炉温度敏感系数变化不大如果是燃气锅炉冬季电量对温度就几乎无弹性敏感度评分会明显下降。所以我坚持按季滚动重算。具体做法是每个季度末用最近12个月的滚动窗口重新计算所有用户的特征并用同样的规则重新打分。重算之后对比排名变化把上升和下降超过阈值的用户列出来做人工复核确认是行为变化还是数据质量问题。6.3 阈值设定不是拍脑袋要用成本收益曲线决定低敏和二分类阈值定在哪里不是拍脑袋决定的。我在项目里用过一个简单的成本收益框架假设对低敏用户停止发送需求响应短信和上门动员每停止动员一个低敏用户可以节省约若干元营销成本但每把一个中敏用户误判成低敏并停止动员就会损失一定量的潜在响应收益。把模型评分作为横轴、误判代价作为纵轴画一条成本收益曲线取总成本最低的点作为切分阈值。实际算下来最优切分点通常落在评分65到72分之间具体取决于该批用户的响应补贴水平和营销触达成本。这个框架能让阈值设定从“经验主义”变成“可计算、可复盘”业务方也更愿意接受。7. 从低敏识别到运营动作模型不只是一个分数低敏用户模型真正发挥价值是在打分之后做的策略动作。识别出低敏用户不是终点而是重新分配运营资源的起点。7.1 低敏用户的套餐设计与沟通策略低敏用户不适合推送实时电价套餐因为价格信号对它们的负荷曲线几乎没有引导作用。但对售电公司来说这类用户反而是优质客户负荷平稳、预测容易、偏差考核风险低。对它们应该推固定电价套餐或基础电价加服务费模式售电公司可以从稳定的价差中获得收益用户获得电费支出的确定性。沟通策略上也要换一套话术。对连续生产型工业用户谈的不是“错峰省钱”而是“稳定生产、避免考核风险”对粗放管理型商业用户谈的是“一次签约、不用操心电费”而不是“你每天盯一下峰谷时段”对机房用户谈的则是供电可靠性和电能质量保障。同一批低敏用户用错触达方式再好的套餐也推不动。7.2 需求响应资源排序低敏用户最后再动员需求响应项目执行时经常出现人力有限、时间紧迫的情况。手里的名单按敏感度评分排好序高敏用户先通知、先签协议、先做应急演练中敏用户作为弹性后备力量低敏用户放最后只在响应资源缺口较大时才有限触达。这么做还有一个额外好处低敏用户因为长期不被需求响应营销信息骚扰对电网公司的信任度和配合度反而可能更高——当真正遇到极端的保供事件需要紧急压负荷时礼貌而明确的请求比日常轰炸更容易得到配合。这是我实际观察到的现象也侧面说明精细化运营的核心不是放弃某个群体而是把资源放到边际产出最高的地方。7.3 模型迭代方向把敏感度做成动态序列最后聊一下模型本身的迭代。低敏用户的敏感度不是一条直线而是会随着生产变化、电价结构调整和节能改造而改变。我目前的做法是把每个用户的敏感度评分按季度输出为一条时间序列再和行业平均水平对照识别出“敏感度异常下降”或“异常上升”的用户。敏感度异常下降的用户往往意味着生产性质发生了变化比如加装了储能、新上了连续产线、换了管理模式值得回访异常上升的用户则可能是数据异常或计量问题需要提醒核验。把这套序列监控跑起来之后敏感度模型就从“一次性的分群工具”变成了“持续运转的用户运营基础设施”价值也随之翻倍。我自己的体会是低敏用户建模的成败七成在特征和样本清洗两成在业务规则的设定算法本身只占一成。先把用户的负荷曲线看明白把“为什么低敏”解释清楚模型自然会变得好用。