先做可行动的分类,不先追求复杂预测
分类的价值在于把一个连续、嘈杂、很难直接处理的经营问题,转化成可以分组响应的对象。例如,我可以把“未来 14 天是否可能流失”转成高风险与非高风险两类,再为高风险用户设置优惠券、客服回访或内容触达。但标签必须能够在历史数据中被观察到,不能用“我觉得他会流失”作为训练依据。
如果团队还没有稳定的标签体系,我会先用描述性分析确认复购、客单价、退款、活跃天数等指标的分布,再确定一个可复盘的目标。先把问题说清楚,通常比直接调参更有效。
我不把支持向量机描述成一个“只要套上就会提升准确率”的黑盒。对电商团队来说,真正需要先回答的是:第一,业务目标究竟是识别高风险用户、预测订单结果,还是判断商品是否值得补货;第二,现有数据能不能形成稳定标签;第三,模型输出是否能够在成本可接受的情况下改变一个具体动作。
如果这三个问题没有答案,换算法通常不能解决根本问题。反过来,当标签定义清楚、样本时间边界合理、特征可以在预测时获得时,SVM 在中小规模、结构化、维度较高的数据上往往能够给出稳定的分类边界,尤其适合先做一个可比较、可审计的基线模型。
我会把高效拆成四个维度:预测效果、数据准备成本、业务解释成本和上线后的行动效率。只有四者同时成立,算法才真正创造价值。
分类的价值在于把一个连续、嘈杂、很难直接处理的经营问题,转化成可以分组响应的对象。例如,我可以把“未来 14 天是否可能流失”转成高风险与非高风险两类,再为高风险用户设置优惠券、客服回访或内容触达。但标签必须能够在历史数据中被观察到,不能用“我觉得他会流失”作为训练依据。
如果团队还没有稳定的标签体系,我会先用描述性分析确认复购、客单价、退款、活跃天数等指标的分布,再确定一个可复盘的目标。先把问题说清楚,通常比直接调参更有效。
支持向量机的核心思想,是在不同类别之间寻找一个间隔尽可能大的决策边界。数据经过标准化后,如果类别在特征空间中具有较清晰的区分结构,线性 SVM 可以快速提供稳健基线;如果关系呈曲线形态,核函数可以把问题映射到更适合分离的空间。
它并不天然适合每天新增数千万条数据、需要实时概率校准或强依赖原生解释的所有场景。我的建议是把 SVM 放入候选模型集合,与逻辑回归、树模型等进行同一数据切分下的比较。
很多分类结果并不是简单的“对或错”。如果漏掉一个高价值流失用户的成本远高于多发一张优惠券,我会接受更高的召回率和一定的误报;如果优惠成本很高,我则需要提高精确率。SVM 的 decision score 可以用于排序和阈值选择,但不能未经校准就直接当作百分比概率。
因此,我会先算出混淆矩阵、精确率、召回率、F1、PR-AUC,并把每个阈值对应的触达人数与预估成本放在同一张表里。
对多数业务团队来说,模型不会单独存在。数据需要从订单、用户、商品和营销渠道汇总,结果要能被运营、商品、客服和管理者共同查看。以 E数通为例,我会优先把样本口径、标签分布、模型分组、触达结果和后续转化放入统一分析流程,减少在多个表格之间复制数据的风险。
这里的 E数通案例和数据均为说明方法的模拟示例,不代表 E数通官方产品性能、真实客户数据或公开统计结论。
电商的优势是行为链路丰富,难点是行为链路也容易混乱。我需要在“可观测”与“可预测”之间划出边界。
用户是否会在未来 30 天复购、是否属于高价值潜客、是否可能对某类优惠敏感,通常可以从近因、频率、金额、访问、加购、咨询和售后等行为构造特征。这里最重要的是时间窗口:预测日之后发生的数据绝不能回流到预测日之前的特征中。
我可以把订单分类为高退款风险、可能延迟、需要人工复核或正常履约。此类任务必须谨慎处理,因为模型输出会影响客服优先级、仓配资源甚至消费者体验,不能把统计相关性直接当作用户责任判断。
商品可以被分类为高潜、平稳、滞销或适合组合推荐的对象;营销活动可以判断哪些人群更可能产生增量转化。但我不会只用点击率判断活动成功,因为点击可能来自低质量流量,最终仍要观察支付、毛利、退款和长期留存。
我会把自然语言中的目标拆成对象、观察窗口、预测窗口、标签、动作和评价指标。下面是一个可以直接用于项目启动会的示例口径,数字仅为方法演示。
| 业务提问 | 机器学习目标 | 标签定义示例 | 推荐指标 | 可执行动作 |
|---|---|---|---|---|
| 谁可能停止购买? | 用户二分类 | 预测日后 30 天无支付订单记为 1 | 召回率、PR-AUC、触达成本 | 分层优惠、内容唤回、客服关怀 |
| 哪些订单需要履约预警? | 订单二分类 | 承诺时效后仍未签收记为 1 | 精确率、漏报率、分仓成本 | 提前拦截、改配仓、主动通知 |
| 哪些商品适合补货? | 商品分类或排序 | 未来 14 天销量超过阈值记为 1 | 召回率、库存周转、缺货损失 | 补货、调价、组合销售 |
| 哪类活动更有增量? | 人群响应分类 | 触达后支付且扣除自然转化后的增量为正 | 增量收益、ROI、校准曲线 | 选择人群、调整预算和权益 |
我在审查电商模型时,通常先查数据流程和评价方式,再看算法名称。以下问题往往比模型类型本身更容易造成错误结论。
电商行为具有明显的时间依赖。若把同一用户临近日期的记录随机分到训练集和验证集,模型可能在训练时已经“见过”非常接近未来的信息,离线准确率会很漂亮,线上却明显下降。我更倾向于按照时间做训练、验证、测试,例如用 1—8 月训练、9 月验证、10 月测试,并确保每条特征只使用当时已经发生的数据。
当高风险用户只占 5% 时,一个永远预测“正常”的模型也能得到 95% 的准确率,但它没有识别出任何高风险对象。此时我会同时观察正类召回率、精确率、F1、PR-AUC,以及前 10% 高分人群覆盖了多少真实风险用户。
大量冗余字段会增加清洗、维护和解释成本,甚至把偶然噪声当成规律。对 SVM 来说,特征尺度差异还会直接影响距离和间隔计算。例如金额字段在几百到几万之间,而次数字段只有 0 到 10,如果不做标准化,金额可能不合理地支配边界。
我会先按业务含义分组,再检查缺失率、唯一值数量、时间稳定性、相关性和线上可获得性。对高维稀疏特征,可以考虑线性模型和适当的正则化,而不是盲目使用复杂核函数。
模型发现“使用优惠券的人更容易复购”,并不说明给所有人发券都能提高复购。原本活跃的人可能更愿意领取优惠券,这里存在选择偏差。若要判断活动的增量效果,我会设计对照组、随机实验或至少使用更严谨的因果分析,而不是直接把分类结果当作投放依据。
同样,某个地区退款率较高也不代表该地区用户天然有问题,还可能与配送时效、商品结构、售后政策或渠道来源有关。
支持向量机可以看作一套寻找“更有安全间隔的分类边界”的方法。理解它不需要先背诵复杂公式,但需要明确它在数据空间中做了什么。
假设我有两类用户:未来会复购与未来不会复购。最简单的分类器可以画出一条线把两类样本分开,但可行的线可能有很多条。SVM 倾向于选择距离两类最近样本都更远的边界,使模型对轻微噪声和新样本更有容错空间。
距离边界最近、对边界位置影响最大的样本被称为支持向量。它们不是“最重要的客户”,而是数学意义上决定边界的样本。业务解释时,我不会把支持向量直接翻译成重点客户,而会把它理解为模型判断中最靠近临界区域的观察样本。
真实电商数据经常包含异常订单、标签延迟、重复用户和不可避免的边界样本。SVM 的软间隔允许部分样本违反理想边界,同时通过参数 C 控制对错分的惩罚。
如果用户是否复购与访问次数、折扣敏感度、最近购买间隔之间存在弯曲关系,线性边界可能不够。核函数在不显式构造所有高维组合的情况下,衡量样本之间的相似关系,让模型能够形成更复杂的边界。
常见选择包括线性核、RBF 高斯核和多项式核。对结构化电商数据,我通常先从线性核开始,再用 RBF 做对照;如果 RBF 只带来很小收益,却增加了训练和解释成本,我会保留线性方案。
SVM 对特征尺度敏感。金额、次数、天数、比例和二值标记如果直接混在一起,距离计算会被量纲较大的字段影响。我会在训练集上拟合 StandardScaler,再将同一组变换应用到验证集和线上数据,绝不能分别对每个数据集单独计算均值和标准差。
RBF 核常见的参数是 C 与 gamma。gamma 较大时,每个样本影响范围更小,边界可能变得复杂;gamma 较小时,影响范围更广,边界更平滑。参数网格不应无限扩大,我会结合样本量、训练耗时、验证集指标和业务稳定性设定有限搜索范围。
| 任务 | 典型模型 | 电商例子 | 输出形式 | 我会关注什么 |
|---|---|---|---|---|
| 分类 | SVC、LinearSVC | 用户是否在 30 天内复购 | 类别或 decision score | 召回率、精确率、阈值成本 |
| 回归 | SVR | 预测未来 14 天销售额 | 连续数值 | MAE、RMSE、区间误差、库存风险 |
| 排序 | 基于分数的排序方案 | 对高风险用户进行触达优先级排序 | 分数序列或分层名单 | Top-K 命中、覆盖、增量收益 |
如果我不能解释一行样本代表谁、发生在什么时候、标签何时产生,那么模型分数再高也没有可靠的业务含义。
最常见的粒度是“用户—预测日”或“订单—创建时刻”。同一个用户可以在不同预测日出现多行,但每一行都必须有明确的观察窗口和预测窗口。混合用户粒度、订单粒度和商品粒度,会让模型在无意中学习到错误关系。
标签是预测目标的历史答案。例如,在 2024 年 9 月 1 日生成用户样本,观察 9 月 2 日至 9 月 30 日是否出现支付订单,若没有支付则记为流失标签。实际日期仅为示意,团队应根据业务周期和数据延迟重新确定。
每个特征都需要“as of”时间。预测日之前已经发生的订单、访问和售后可以使用;预测日之后的退款、最终签收或回访结果不能使用。尤其是累计字段,要确认累计截止时间,而不是直接调用今天的汇总表。
缺失不一定等于零。用户没有咨询记录可以编码为 0,但用户没有被采集到来源渠道可能代表数据链路问题。我会先区分“业务上的没有”和“系统上的未知”,再决定填充策略。
金额异常需要结合退款、取消和支付状态判断;极端值可以截尾或做对数变换,但不能为了让图表好看而直接删除。类别字段可以做独热编码、频次编码或目标编码,目标编码必须在训练折内计算,避免标签泄漏。
所有处理方式都要记录到数据字典中,并在 E数通的指标说明或项目文档里保留口径版本,方便后续复核。
下面是我为了讲清方法而构造的模拟案例。所有样本量、指标和效果均为示例,不代表 E数通官方数据、真实客户结果或产品承诺。
假设某电商团队在 E数通中汇总用户订单、访问、加购、优惠券、退款和客服数据,选取 12 万条“用户—预测日”样本进行建模。目标是预测用户在未来 30 天内是否没有再次支付订单,并将高分用户交给运营团队做分层触达。这个 12 万只是模拟数值,不能理解为某个真实企业的数据规模。
我把观察窗口设为预测日前 90 天,预测窗口设为之后 30 天;为了避免时间穿越,训练集使用较早月份,验证集使用后续月份,测试集再向后滚动。样本中的正类约占 18%,因此不会用准确率作为唯一目标。
为了说明比较方法,以下为同一模拟验证集上的示例指标。数值用于演示阅读方式,不是实测结果。
阅读建议:如果运营更怕漏掉高风险用户,应先看召回率与 PR-AUC;如果触达预算有限,还要看前 K 个高分用户的命中情况。
正负样本不平衡时,模型可能偏向多数类。我会在训练阶段处理权重,在评估阶段保持真实分布。
这里的 18% 正类比例仅用于示范。真实项目应使用经过数据质量检查的历史比例。
下表不是因果结论,只展示我在探索性分析中会关注的差异方向。均值经过四舍五入,数据为模拟示例。即使某项特征在两类之间有差异,也仍需检查时间稳定性、业务合理性和是否存在泄漏。
| 特征 | 模拟未流失组 | 模拟流失组 | 观察解释 | 处理提醒 |
|---|---|---|---|---|
| 近 30 天活跃天数 | 8.4 天 | 2.1 天 | 近期活跃度存在明显分层 | 按预测日前截止,不能含未来访问 |
| 最近购买距今天数 | 17 天 | 56 天 | 购买间隔可能与复购周期相关 | 需要按品类和生命周期分组校验 |
| 近 90 天订单数 | 3.8 单 | 1.2 单 | 交易频率有助于区分用户层级 | 新用户与老用户不能简单混合解释 |
| 优惠券核销率 | 42% | 35% | 可能反映权益敏感度差异 | 不等于发券一定能造成增量 |
| 近 90 天退款率 | 5.6% | 11.8% | 售后体验可能与后续关系相关 | 需要排查商品、物流和渠道结构 |
我会用多个时间段观察模型是否只在某一个月份有效,以免把季节性或一次性活动误当成普遍规律。
示例中精确率和召回率会随月份变化,这是正常现象;关键是找到变化原因,并设定重新训练和阈值复核机制。
我不会把所有用户都交给运营,而是按资源容量和风险程度做分层。例如,假设每天只能触达 1 万人,可以将模型分数最高的一部分标记为“优先人工关怀”,中间部分进入低成本内容触达,低分部分仅保留常规运营。
进度条是项目诊断示意,并非 E数通官方评分。真正上线前,我会用数据质量、业务执行率和增量实验结果替换这些示例值。
我把项目拆成六个阶段,每个阶段都有可以验收的产出,避免“做了一个模型,却不知道下一步是谁来用”。
明确预测对象、预测时点、未来窗口、标签规则、动作负责人和成本上限。把“提升复购”改写成可观测的目标,例如“识别未来 30 天无支付用户”。
建立用户、订单、商品、营销、履约和售后之间的关联关系,确定主键、粒度、时间字段与数据刷新频率,并保留数据字典和口径版本。
检查缺失、异常、重复、类别长尾、标签比例和时间漂移。先画分布和漏斗,再决定是否合并字段、变换数值、处理离群点或剔除泄漏字段。
以逻辑回归或线性 SVM 建立基线,再对比 RBF SVM、树模型等候选方案。所有模型使用相同时间切分和相同业务指标,避免不同评估方式造成虚假优势。
将 decision score 转为排序和分层名单,评估不同阈值带来的触达量、命中量、优惠成本和客服负荷。必要时做概率校准,但不要把未经校准的分数写成概率。
持续观察输入分布、标签延迟、召回与精确率、分层人数、行动执行率和增量收益。发生大促、品类变化、渠道切换或用户结构变化时,及时复核模型。
我会和运营、数据、技术共同确认对象、标签、时间边界、触达容量和成功标准,先决定什么不做,避免范围无限扩大。
在 E数通中建立基础指标、用户分层、订单漏斗和标签分布,核对数据刷新情况,并形成可复用的数据字典。
用时间切分进行训练和验证,完成标准化、类别处理、不平衡处理和有限参数搜索,记录每一次实验的特征版本和评价指标。
将高分用户分成不同优先级,设定优惠或内容的成本边界,保留对照组,先观察执行率和用户反馈,不急于全量推广。
同时看模型指标与业务增量指标。如果模型分数不错但行动没有增量,我会优先调整策略和标签,而不是马上更换算法。
我不会仅凭“数据量大”或“需要 AI”来选模型,而会同时看数据规模、特征形态、解释要求、更新频率和错误成本。
| 情况 | 我的判断 | 推荐做法 | 主要取舍 |
|---|---|---|---|
| 样本中等、特征已结构化、边界相对清晰 | 适合先试 SVM | 标准化后比较线性 SVM 与 RBF SVM,使用时间验证。 | 效果和稳健性较好,但概率解释需要额外校准。 |
| 特征维度高、文本或稀疏编码较多 | 优先线性方案 | 采用线性 SVM,控制正则化,关注稀疏矩阵处理效率。 | 速度较快,非线性表达能力有限。 |
| 样本极大且需要频繁实时更新 | 谨慎使用核 SVM | 先评估线性模型、增量学习或树模型,保留 SVM 作基线。 | 核方法训练和预测成本可能过高。 |
| 业务必须直接解释每个变量的影响方向 | 不以 SVM 为唯一方案 | 并行使用逻辑回归、可解释树模型或 SHAP 等解释工具。 | 解释便利与非线性表达能力之间需要权衡。 |
| 正类极少,错过一个样本代价很高 | 先处理不平衡与成本 | 使用 class weight、重采样、PR-AUC 和成本敏感阈值。 | 召回率提高可能带来更多误报和触达成本。 |
| 业务目标是增量转化而非相关预测 | 不能只靠分类 | 保留实验对照,结合 uplift 或因果方法判断真正增量。 | 设计实验的成本和周期会增加,但结论更可靠。 |
我把“准确”与“有用”分开讨论。模型输出必须进入资源有限的现实环境,才知道什么叫更好。
如果任务是风险预警,较高召回率可以减少漏掉高价值风险对象,但会扩大触达名单。优惠券、人工电话和专属客服的成本不同,我会为不同动作设置不同阈值,而不是全系统只有一个阈值。
适用策略:高价值用户用较低阈值做人工复核,普通用户采用低成本自动内容触达。
RBF 核可能捕捉到更复杂的关系,但模型边界和特征影响更难直接解释,参数搜索也更耗时。如果业务方需要向客服解释“为什么把这个用户列为高风险”,我会考虑保留线性基线或配套解释工具。
适用策略:先用线性 SVM 建立可解释基线,再用 RBF 做效果上限对照。
一次时间切分上的高分不能说明长期稳定。大促、价格政策、渠道流量和商品结构都可能改变数据分布。我会把监控和重训周期纳入项目预算,宁愿选择略低但波动更小的模型。
适用策略:按周或按月做滚动验证,出现漂移时先排查业务变化,再决定是否重训。
以模拟流失预警为例,假设每触达一个用户的平均成本为 1.5 元,成功挽回一次支付的贡献毛利为 80 元,模型选出的名单中有一部分只是相关而非真正增量。因此,我不会直接用“命中用户数 × 毛利”计算收益,而会用保留对照组的增量转化率评估。
| 计算项 | 模拟值 | 说明 |
|---|---|---|
| 触达人数 | 10,000 人 | 由运营每日容量决定,不是模型想触达多少就触达多少。 |
| 单人成本 | 1.5 元 | 包括权益、渠道或人工成本的示意值。 |
| 总触达成本 | 15,000 元 | 触达人数乘以单人成本。 |
| 增量支付人数 | 300 人 | 必须来自实验组与对照组差异,而不是全量支付人数。 |
| 单次贡献毛利 | 80 元 | 需要扣除商品成本、优惠和履约等相关费用。 |
| 模拟增量收益 | 24,000 元 | 300 乘以 80;最终还要扣除触达成本及其他项目成本。 |
以上为计算结构示例,不能理解为真实项目 ROI。真实业务还需要考虑长期留存、用户体验、优惠透支和渠道归因。
我建议根据当前成熟度选择最小可行动作,而不是一次性建设完整的复杂平台。
下面的问题采用知乎式的提问方式,每个答案都尽量连接技术术语与具体业务动作。示例中的数据均已明确标注为模拟内容。
我经常困惑:既然逻辑回归容易解释,决策树也容易画出来,为什么还要选择 SVM?我的理解是,算法没有绝对的优先级,关键在数据结构和业务成本。逻辑回归适合做可解释基线,树模型擅长捕捉非线性和变量交互,而 SVM 更关注类别间隔,在中小规模、数值特征经过标准化、类别边界相对清晰的场景中可能表现稳健。
例如,在一个“未来 30 天是否复购”的模拟任务中,我会同时比较三者的 PR-AUC、召回率、精确率和前 10% 用户命中率。如果 SVM 的召回率略高,但解释成本和训练成本明显增加,我只会在高风险漏报代价较高时选择它,而不会因为它听起来更先进就直接替换基线。
我想知道特征是不是越多越好,以及订单金额、访问次数、优惠券和退款这些字段应该怎样组合。实践中,我会优先准备能在预测时稳定获得、与用户生命周期有关、并且能够被业务解释的特征,而不是先收集所有可能字段。RFM 特征通常是一个起点,包括最近购买间隔、近 30 或 90 天订单数、消费金额、品类数量和客单价。
除此之外,我会加入活跃天数、加购与支付转化、优惠券核销率、退款率、客服咨询、物流异常和渠道来源。每个特征都要明确截止时间,例如预测日之前 90 天的累计金额,不能直接读取包含预测日之后退款的全周期汇总。对不同品类和新老用户,我还会检查同一特征是否具有相同含义。
我有时会看到一个模型准确率达到 90% 以上,但运营使用后并没有明显变化。最常见的原因是正类比例很低,模型只预测多数类也能得到高准确率;第二个原因是模型只发现了相关性,却没有证明触达会带来增量;第三个原因是高分名单超过了运营容量,或名单交付后没有实际执行。
因此,我会同时看混淆矩阵、正类召回率、精确率、PR-AUC、Top-K 命中率和执行率。以模拟流失预警为例,如果每天只能联系 1 万人,就应该评估前 1 万人覆盖了多少真实风险用户,并设置随机对照组比较增量复购,而不是只看全量测试集准确率。
我不建议直接复制网上的一组参数,因为 C 和 gamma 的效果与样本量、特征尺度、正负比例、噪声和目标任务有关。C 可以理解为对训练错分的惩罚强度,较大时模型更努力拟合训练样本;gamma 常用于 RBF 核,决定单个样本影响范围,较大可能产生更复杂的边界。
我的做法是先完成标准化,再在有限范围内做交叉验证或时间验证,并将模型指标与业务成本一起比较。对于具有时间变化的电商数据,随机交叉验证可能高估效果,所以我更愿意用滚动时间窗口。如果 RBF 在验证集只提升很少,却使训练耗时和解释难度明显增加,我会保留线性 SVM 或其他更易维护的方案。
我常见的疑问是:正类只有 5% 或 10% 时,给 SVM 加 class weight 是否就足够了?答案是否定的。class weight 能让模型在训练时更重视少数类,但它不会自动解决标签错误、样本选择偏差、阈值不适合和运营资源不足等问题。首先,我会确认正类定义是否合理、标签是否延迟,并保留测试集中的真实分布。
接着可以比较 class weight、适度重采样和阈值调整的效果,重点观察 PR-AUC、正类召回率、精确率和前 K 命中率。假设模拟正类比例为 18%,运营每天只能触达 1 万人,那么最终选择的阈值应由“能够触达多少人、其中有多少真实风险、每次触达成本是多少”共同决定,而不是只追求更高召回。
我会把 E数通理解为数据分析和经营协同的重要入口,而不是在没有确认产品能力和部署方式的情况下,宣称它可以替代所有机器学习系统。以本文的模拟案例为例,E数通适合帮助我汇总订单、用户、商品和营销指标,统一看板口径,分析标签分布,呈现模型分层结果,并让运营和管理者共同查看行动效果。
如果项目需要高频在线推理、复杂特征服务、模型版本管理或自动化接口,我还需要根据实际技术架构配置相应的训练和服务组件。最佳做法是把模型结果回流到分析环境中,与触达、支付、退款和长期留存数据连接起来,形成可复盘闭环,而不是把一个模型文件孤立地交给业务。
我会把判断分成三层。第一层是数据与模型层:检查时间切分、泄漏、PR-AUC、召回率、精确率、校准和不同月份的稳定性;第二层是执行层:看高分名单是否按时交付、运营是否按策略触达、用户是否产生投诉或权益滥用;第三层才是业务层:通过对照组比较增量支付、贡献毛利、留存和长期价值。
例如,模拟项目中模型组的复购率高于全体平均值,并不能直接说明模型有效,因为模型可能只是识别了本来就活跃的人。只有在相似人群中随机分配触达与不触达,观察增量差异,并扣除优惠、渠道和人工成本,才能更接近“模型帮助我做出了更好的决策”这一结论。
我对这篇主题的最终判断,不是“支持向量机一定比其他算法好”,而是要建立一种从业务问题出发、用数据验证、用成本做取舍、用行动闭环的工作方式。

