数据分析入门分类算法,监督学习入门
目录

数据分析入门分类算法,监督学习入门 | 九数云-E数通

eshutong 发表于2026年8月20日

分类算法入门最容易学错的地方,不是不会调用模型,而是把“预测类别”误认为“模型已经解决了业务问题”。我在项目复盘中见过一个客户流失模型,准确率达到 91%,上线后却几乎没有挽回价值,因为流失客户只占 8%,模型只要把所有人都判定为“不流失”,就能得到 92% 左右的表面准确率。监督学习的真正起点,不是选择算法,而是先定义标签、明确错判成本,再决定如何切分数据和评价模型。

数据分析入门分类算法,监督学习入门

一、先讲核心结论:分类算法不是“猜答案”,而是管理决策风险

1. 分类问题到底在解决什么

分类算法的任务,是根据一组已经观察到的特征,为新的样本分配一个或多个离散类别。例如,判断一笔交易是否可疑、一个客户是否可能流失、一封邮件是否为垃圾邮件、一个工单是否需要升级。这些任务的共同点是:输出不是连续数值,而是“是或否”“属于哪一类”“同时属于哪些类”。

监督学习则多了一层约束:训练数据中必须存在目标答案,也就是标签。模型通过历史样本中的“特征,标签”关系,学习一个从输入到输出的映射。没有标签时,模型可以做聚类、降维或异常检测,但那已经不属于典型的监督分类问题。

我通常把分类建模拆成五个连续问题:要预测什么、什么时候预测、用什么信息预测、错判的代价是什么、预测结果如何进入业务流程。这五个问题中,算法往往只占最后一小部分。

2. 分类模型输出的不是结论,而是分数

许多初学者以为分类模型直接输出“正类”或“负类”。更准确的理解是,模型通常先输出一个分数,代表样本属于某一类别的倾向,再由阈值把分数转成最终类别。比如模型给某客户输出 0.72,不代表客户有 72% 的概率一定流失,除非模型经过了良好的概率校准;它首先只是一个可排序的风险分数。

默认阈值通常是 0.5,但 0.5 只是软件实现上的方便选择,不是业务真理。反欺诈场景可能宁愿多拦截一些正常交易,也不愿放过高风险交易;营销触达场景则可能更重视名单精准度,避免销售人员把时间花在低价值客户上。

3. 一套可落地的分类流程

  1. 定义标签:写清楚正类是什么、观察窗口多长、标签何时生成。
  2. 检查预测时点:确认模型使用的特征在真正决策时已经存在。
  3. 建立基线:先用多数类、业务规则和简单逻辑回归做参照。
  4. 选择评价指标:根据漏判和误报的成本,组合使用召回率、精确率、F1、AUC、PR-AUC 或业务收益。
  5. 调整阈值:不要直接接受默认 0.5,应该根据处理能力和错判成本选择阈值。
  6. 做误差分析:把假阳性和假阴性逐条抽样,检查标签质量和特征缺陷。
  7. 设计上线反馈:监控数据漂移、标签延迟、人工处理耗时和模型收益。

下面这组数据是一个用于教学的情景模拟,展示一批原始业务记录为什么会在建模过程中逐步减少。它表达的不是某个行业的固定比例,而是提醒我在实际项目中最先检查哪些数据损耗点。

数据分析入门分类算法,监督学习入门

二、理解背景和真实场景:先判断分类类型,再判断算法

1. 二分类:最常见,也最容易被准确率误导

二分类只有两个类别,例如“会流失”和“不会流失”、“通过”和“不通过”、“正常”和“异常”。它看起来简单,但业务风险往往集中在少数正类上。客户流失、设备故障、贷款违约和欺诈交易,通常都不是均匀分布的。

二分类项目必须先明确哪个类别是正类。比如在质量检测中,把“不合格”定义为正类,召回率表示所有不合格产品中有多少被找出来;如果反过来定义,指标的解释会完全变化。标签名称不是技术细节,而是后续沟通、报表和决策的基础。

2. 多分类:一个样本只能归入一个类别

多分类是从多个互斥类别中选择一个结果。例如把客服工单分为退款、物流、产品故障、账户问题和咨询。此时不能只看一个总体准确率,还要查看每一类的召回率,因为小类别可能被大类别完全掩盖。

对于多分类模型,我会先看混淆矩阵。例如“产品故障”和“使用咨询”经常互相混淆,说明两类之间可能缺少明确的标签规则;如果“退款”几乎被识别成“物流”,则需要检查文本字段、业务流程或标注人员的判断标准。

3. 多标签分类:一个样本可以同时属于多个类别

一张用户反馈可能同时包含“价格贵”“功能缺失”和“操作复杂”三个主题,这不是多分类,而是多标签分类。多标签任务通常需要为每个标签分别判断,标签之间还可能存在共现关系。

多标签分类的难点在于评价方式。整体准确率常常没有意义,因为只要漏掉一个标签,整个样本就可能被判错。更实用的做法是分别查看每个标签的精确率、召回率和样本覆盖量,再决定哪些标签适合自动化,哪些标签仍需要人工审核。

4. 有序分类:类别之间存在等级关系

“低风险、中风险、高风险”虽然也是离散类别,但类别之间存在顺序。把高风险错判为低风险,通常比把高风险错判为中风险严重得多。如果直接使用普通多分类算法,模型可能把所有错判视为同一种错误,无法反映等级差异。

有序分类适用于信用风险等级、满意度等级、疾病分级和质量等级等场景。建模前要确认等级之间是否真的有业务顺序;如果“新手、熟练、专家”只是标签名称而没有稳定定义,强行采用有序分类反而会制造假设。

分类类型典型问题首要检查点适合关注的指标
二分类是否流失、是否欺诈正类比例与错判成本精确率、召回率、PR-AUC、业务收益
多分类工单路由、内容主题类别是否互斥、样本是否均衡宏平均 F1、各类别召回率、混淆矩阵
多标签一条反馈包含多个主题标签共现与人工标注一致性每标签精确率、召回率、覆盖率
有序分类低中高风险、满意度等级等级差异是否具有真实业务含义等级距离误差、加权 F1、分级召回率

下图采用建议基准而非行业统计,用于说明一个团队在不同分类任务上投入精力的侧重点应该不同。二分类项目数量可能最多,但多标签和有序分类在标签设计上往往更费时间。

数据分析入门分类算法,监督学习入门

三、拆解常见误区:很多“高分模型”并不值得上线

1. 误区一:准确率高,就说明模型好

准确率是预测正确的样本数除以总样本数。当正类非常少时,它会产生严重错觉。假设 10000 笔交易中只有 100 笔欺诈交易,一个“全部判为正常”的模型准确率是 99%,但它一笔欺诈也没有识别出来。

这并不意味着准确率完全没用,而是它不能单独承担评价任务。对于类别不平衡问题,我至少会同时报告正类比例、混淆矩阵、精确率、召回率和 PR-AUC。PR-AUC 比 ROC-AUC 更关注少数正类的识别质量,通常更适合极不平衡的筛查任务。

2. 误区二:随机切分数据一定公平

随机切分适合样本相互独立、时间变化不明显的场景,但很多业务数据具有用户、设备、订单或时间依赖。同一个客户在训练集和测试集同时出现,模型可能只是记住了客户特征;用未来生成的字段预测过去,也会让测试分数虚高。

如果模型将来是“用本周数据预测下周结果”,我就不会优先采用完全随机切分,而会使用按时间切分。若同一用户产生多条记录,还需要按用户分组切分,避免同一主体泄漏到训练集和测试集。

3. 误区三:把模型分数当成真实概率

模型排序能力强,不代表概率可信。一个模型可能把样本分成 0.2、0.5、0.9 三档,但所有输出 0.8 的样本最终只有 0.55 的比例发生目标事件。这种模型可以用于排序,却不适合直接用“风险概率乘以损失金额”来计算预算。

需要概率解释时,应使用可靠性图、校准曲线和 Brier Score 检查输出。常见校准方法包括 Platt Scaling 和 Isotonic Regression,但校准数据必须独立于模型训练数据,否则会把过拟合伪装成概率准确。

4. 误区四:特征重要性等于因果关系

如果“客服转人工次数”是流失模型的重要特征,只能说明它与流失结果相关,不能证明增加或减少转人工次数就会导致流失变化。它可能只是客户已经遇到问题的结果变量。

在运营决策中,我会把特征分成三类:可以干预的特征、只能观察的特征、可能带来泄漏或合规风险的特征。模型重要性适合帮助排查数据和优化采集,不适合直接替代因果实验。

5. 误区五:特征越多,模型越聪明

大量字段会带来三种风险:训练噪声增加、线上缺失率上升、字段含义难以解释。尤其是从日志、审批流和结果表中拼接特征时,最容易混入预测时点之后才产生的信息。

我更倾向于做特征分组实验:只使用基础属性、只使用行为特征、加入文本特征、加入聚合统计,然后比较每组特征对召回率、精确率、延迟和稳定性的贡献。如果增加一组字段只带来 0.5 个百分点的验证集提升,却让线上处理耗时增加一倍,通常不值得。

下面是一个情景模拟,用同一批不平衡数据比较“全部判为负类”和三个常见策略。它不是某个真实企业的统计结果,但能直观看出为什么只看准确率会误导决策。

数据分析入门分类算法,监督学习入门

时间泄漏的影响通常比类别不平衡更隐蔽。下面的示意对比展示同一模型在随机切分和时间切分下的结果差异,数值用于说明风险识别方法,不代表固定行业基线。

数据分析入门分类算法,监督学习入门

四、给出专业判断逻辑:从标签、成本到阈值逐层收敛

1. 第一步是写标签说明书

在建模前,我会要求项目成员用一句完整的话定义标签:“在某个时间点,利用当时已经可见的信息,预测未来多少天内是否发生某个事件。”这句话必须包含预测时点、观察窗口、事件定义和排除条件。

例如,“预测客户是否流失”仍然过于模糊。是连续 30 天未登录,还是取消订阅,还是客服确认离开?不同定义会产生不同标签,也会改变模型真正优化的对象。

标签说明书至少应记录以下内容:

  • 正类和负类的业务定义。
  • 标签生成时间和观察窗口。
  • 无法确认结果的样本如何处理。
  • 同一主体重复出现时的去重规则。
  • 人工标注的一致性抽检方法。
  • 标签延迟多久才能用于最终评估。

2. 第二步是建立错判成本矩阵

分类模型的阈值选择,本质上是在两个错误之间做取舍。假阳性是把正常样本判成正类,可能增加人工审核、优惠成本或客户打扰;假阴性是漏掉真正正类,可能造成收入损失、风险暴露或服务事故。

如果一次人工审核成本是 8 元,一次漏掉高风险事件的平均损失是 300 元,那么模型就不能只按照准确率选阈值。可以先估算不同阈值下的总成本,再把人工团队每天能处理多少条纳入决策。

错误类型含义常见代价适合优先优化的指标
假阳性正常样本被判为正类审核成本、误触达、客户体验下降精确率、每千条人工量、误报成本
假阴性真正正类未被识别损失事件漏检、客户流失、风险暴露召回率、漏判损失、关键人群覆盖率
真阳性正类被正确识别成功干预、及时拦截或优先处理增量收益、干预成功率、处理时效

3. 第三步是选择指标组合,而不是寻找唯一指标

精确率回答“模型判为正类的样本中,有多少是真的”;召回率回答“所有真实正类中,有多少被模型找出”。两者通常存在此消彼长的关系。提高阈值,往往会减少误报、提高精确率,但可能漏掉更多正类;降低阈值则相反。

F1 是精确率和召回率的调和平均,适合需要在两者之间保持平衡的场景。AUC 衡量模型在不同阈值下的排序能力,但它不直接告诉你在某个具体审核容量下表现如何。极度不平衡时,PR-AUC 通常比 ROC-AUC 更能反映正类筛查质量。

我建议报告一组“模型指标”和一组“业务指标”。模型指标包括召回率、精确率、F1、PR-AUC;业务指标包括每百条人工量、单位成本、平均响应时间、增量转化率和漏判损失。只有两组指标同时改善,模型才有上线讨论的价值。

4. 第四步是根据阈值选择业务工作点

阈值不是训练结束后的装饰参数,而是模型和业务流程之间的接口。假设一个审核团队每天只能处理 2000 条记录,那么阈值应优先满足处理容量,再在可行范围内优化召回率或收益。

我通常会在验证集上绘制阈值曲线,至少观察阈值、正类预测量、精确率、召回率和估算成本。阈值确定后,再用完全独立的测试集验证一次,避免反复在测试集上调参。

数据分析入门分类算法,监督学习入门

5. 一个可复用的入门代码框架

下面的示例使用逻辑回归完成一个二分类基线。它的价值不在于代码复杂,而在于把数值字段、类别字段、缺失处理、特征转换和模型放入同一条流水线,降低训练和预测时口径不一致的风险。

from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import classification_report, average_precision_score

from sklearn.pipeline import Pipeline

from sklearn.preprocessing import OneHotEncoder, StandardScaler

numeric_features = ["login_days_30", "orders_90", "refund_count"]

categorical_features = ["region", "membership_level", "device_type"]

numeric_pipeline = Pipeline([

("imputer", SimpleImputer(strategy="median")),

("scaler", StandardScaler())

])

categorical_pipeline = Pipeline([

("imputer", SimpleImputer(strategy="most_frequent")),

("onehot", OneHotEncoder(handle_unknown="ignore"))

])

preprocessor = ColumnTransformer([

("numeric", numeric_pipeline, numeric_features),

("categorical", categorical_pipeline, categorical_features)

])

model = Pipeline([

("preprocessor", preprocessor),

("classifier", LogisticRegression(

max_iter=1000,

class_weight="balanced"

))

])

model.fit(X_train, y_train)

valid_score = model.predict_proba(X_valid)[:, 1]

threshold = 0.35

valid_pred = (valid_score >= threshold).astype(int)

print(classification_report(y_valid, valid_pred))

print("PR-AUC:", average_precision_score(y_valid, valid_score))

这里的 class_weight="balanced" 可以缓解类别不平衡,但它不会自动解决标签噪声、阈值选择或线上分布变化。它只是训练阶段的一种权重调整,最终仍要回到独立验证集和业务成本上判断。

五、用一个具体案例理解:为什么简单模型可能比复杂模型更适合第一版

1. 案例背景:预测客服工单是否需要升级

下面是一组脱敏情景模拟数据,参考常见客服工单项目的字段结构设计,目的是演示完整分析过程,不代表任何企业的真实业绩。数据包含 12 万条工单,标签定义为“工单创建后 24 小时内是否升级到高级支持团队”,正类比例为 8.7%。

预测时点是工单创建后的前 10 分钟,因此可以使用标题、正文前 10 分钟内的交互次数、客户等级、历史重复报障次数和产品模块,但不能使用“是否已转交高级团队”“最终解决时长”以及“升级原因”这类事后字段。

我们按时间顺序划分数据:前 8 周用于训练,第 9 周用于验证阈值,第 10 周作为最终测试。这样的切分比随机抽样更接近线上使用方式,也能够暴露产品版本变化和客户结构变化带来的性能下降。

2. 三组模型结果:先看业务容量,再看分数

基线模型是“全部判为不升级”,因为正类占比只有 8.7%,它的准确率自然很高,但召回率为 0。规则模型使用三条人工经验规则;逻辑回归使用结构化字段和经过清洗的文本统计特征;梯度提升模型则进一步学习非线性关系。

方案准确率精确率召回率每日审核量适用判断
全部判为不升级91.3%0%0%0条只能作为准确率基线,不能承担筛查任务
人工规则86.8%22.4%71.6%2750条适合作为第一版快速上线,但人工量偏高
逻辑回归90.5%34.8%68.2%1710条解释成本低,适合需要说明触发原因的团队
梯度提升模型89.9%41.6%74.8%1570条识别能力较强,但需要更多校准和稳定性监控

这里有一个容易被忽略的判断:梯度提升模型的准确率低于逻辑回归,但精确率和召回率都更高。原因是它把一部分原本被判断为负类的边界样本重新识别出来,增加了少量整体错误,却改善了目标人群的捕获效果。

如果高级支持团队每天只能处理 1600 条工单,那么梯度提升模型的默认阈值仍然不适合直接使用。我们可以提高阈值,把每日审核量压到 1500 条左右,再重新计算精确率、召回率和漏判损失。

3. 特征分组实验:文本不是越早加入越好

在这个案例中,我会先做特征分组,而不是一开始就把所有字段送入复杂模型。结构化字段便于解释和稳定部署;文本字段可能提升召回率,但也更容易受到表达方式、语言习惯和产品术语变化的影响。

以下结果属于样本推演,用于说明特征工程的判断方式。文本特征指词频、字符长度、情绪词计数和主题向量等可解释统计,不代表使用大模型生成的语义标签。

数据分析入门分类算法,监督学习入门

4. 误差分析比继续调参更有价值

我会从假阳性和假阴性中各抽取 50 到 100 条记录,按原因分类。假阳性可能来自客户情绪激烈但问题简单,也可能是规则把某个高频词误认为高风险;假阴性可能来自新产品术语、短文本描述、语言混杂或标签本身漏标。

如果大量假阴性都集中在某个新产品模块,优先动作不是换模型,而是补充该模块的训练样本和标签规则。如果假阳性主要是 VIP 客户的普通咨询,则可以增加客户等级与问题类型的交叉特征,或让 VIP 工单采用另一套阈值。

在实际应用中,我更看重错误样本是否能被解释和修正。一个分数略高但无法找到改进路径的模型,通常不如一个分数略低、错误模式清晰的模型有价值。

六、不同情况下的行动建议:从入门练习走向可用系统

1. 如果你刚开始学习,先完成一个最小闭环

初学者不需要一开始就研究几十种算法。建议选择一个标签清晰、数据量适中、结果容易解释的任务,例如预测订单是否退款、邮件是否为垃圾邮件或客户是否在 30 天内再次购买。

  1. 下载或整理一份带标签的数据集。
  2. 检查正负类比例和缺失值。
  3. 完成一份标签定义和字段字典。
  4. 用多数类基线计算准确率。
  5. 训练逻辑回归和决策树作为可解释基线。
  6. 绘制混淆矩阵、精确率,召回率曲线和校准曲线。
  7. 抽查错误样本,并写出至少三条改进假设。

这套练习的目标不是得到一个最高分,而是理解数据如何影响结果。只会调用 fitpredict,却无法解释正类比例、阈值和假阴性含义,仍然没有真正入门监督学习。

2. 如果样本量小,优先保证标签质量

当样本只有几百或几千条时,模型复杂度通常不是第一问题。此时最容易出现的是分层不足、偶然性过大和标签标准不一致。可以使用分层交叉验证,报告多次划分下的均值和标准差,而不是只展示一次测试结果。

如果人工标注成本高,应优先标注模型最不确定的样本,或者优先覆盖少数类别和关键业务场景。随机增加大量容易样本,可能只会让整体准确率看起来更好,却不能改善真正困难的边界样本。

3. 如果正类很少,优先建立人工容量模型

少数类场景中,数据采样和类别权重可以帮助训练,但它们不等于业务解决方案。过采样可能让训练集中的正类比例失真,最终阈值和概率需要回到原始分布的验证集上重新评估。

我会先问业务团队每天能处理多少条、每次处理需要多长时间、漏掉一条正类的平均损失是多少。只有把这三个数字纳入模型评价,阈值调优才不会变成单纯的指标游戏。

4. 如果场景涉及高风险决策,必须保留人工复核

涉及金融、医疗、招聘、保险、公共服务或重大安全的分类系统,不宜把模型结果直接当作最终决定。模型可能受到历史偏差、样本缺失、代理变量和分群表现差异的影响。

至少应当记录每次预测的模型版本、特征快照、阈值、人工处理结果和最终标签。对不同人群分别检查误报率、漏报率和拒绝率,避免总体指标掩盖某个群体的异常表现。

5. 如果模型要上线,先设计监控再设计接口

分类模型上线后的最大风险,往往不是代码报错,而是业务分布悄悄变化。产品改版后,某个字段可能突然全部为空;营销活动会改变客户结构;新的欺诈方式会让历史特征失效。

建议至少监控四类信号:

  • 输入稳定性:缺失率、取值范围、类别新增、特征分布变化。
  • 输出稳定性:正类预测率、分数分布、不同渠道的阈值命中率。
  • 结果质量:延迟标签到达后的召回率、精确率和校准误差。
  • 业务收益:人工处理耗时、单位干预成本、增量转化和漏判损失。

以下是一组情景模拟的 12 周监控数据。它展示了模型可能在输入分布变化后,正类预测率不断升高,但真实召回率和概率校准反而恶化的情况。

数据分析入门分类算法,监督学习入门

七、不同算法的取舍:没有“最强算法”,只有最合适的工作点

1. 逻辑回归:最值得保留的第一条基线

逻辑回归适合做第一版基线,尤其是特征经过合理编码、关系相对稳定、团队需要解释结果的场景。它的优势是训练快、输出容易分析、系数方向有一定解释性,也便于定位特征泄漏和数据异常。

它的短板是对复杂非线性关系和变量交互的表达能力有限。比如“高等级客户加上连续多次失败操作”才显著增加风险,这种组合关系可能需要显式构造交叉特征,或者使用能够自动学习非线性的模型。

2. 决策树和树集成:适合处理非线性,但要防止过拟合

决策树可以自然处理阈值、分支和特征交互,解释单条路径比较直观。但单棵树对数据扰动敏感,树太深时容易记忆训练样本。

随机森林通过多棵树降低方差,通常对表格数据有不错的起点表现;梯度提升类模型则通过逐步修正错误学习复杂边界,常常在结构化数据上表现强。但它们需要更细致地检查概率校准、特征漂移和线上推断成本。

3. 支持向量机、近邻方法和神经网络:要看数据形态再使用

支持向量机在中小规模、特征经过标准化的数据上可能表现良好,但大规模训练和概率解释需要额外处理。近邻方法概念直观,却容易受到特征尺度、维度和线上检索成本影响。

神经网络适合数据量大、输入复杂、具有图像、语音或长文本结构的任务。对于几千条结构化业务记录,直接使用复杂网络往往会增加调试和部署成本,却不一定带来稳定收益。

4. 用四个问题做算法选择

  • 数据是结构化表格,还是图像、文本、语音等非结构化数据?
  • 是否需要向业务解释单条预测的原因?
  • 预测延迟、资源消耗和模型维护能力是否有限?
  • 错误成本是否高到需要稳定概率和严格审计?
算法路线解释性非线性能力训练与部署成本优先使用场景
逻辑回归中低第一版基线、需要解释的表格分类
决策树较高中高规则边界明显、需要展示路径的任务
随机森林表格数据、特征关系复杂、对单模型稳定性要求较高
梯度提升中高结构化数据竞赛和业务排序、筛查任务
神经网络较低很高大规模文本、图像、语音或复杂表示学习

下面的对比是一个示意性决策基准,假设所有方法在同一验证集上测试。它不代表任何算法的固定性能,只用于说明模型选择必须同时考虑识别效果、解释能力和线上成本。

数据分析入门分类算法,监督学习入门

八、把分类算法真正用起来:一份可执行的项目清单

1. 第一天到第二天:先做数据和标签体检

不要先打开模型库。先统计总样本数、正类数量、每个主体的记录数、时间跨度、字段缺失率和标签生成延迟。对每个候选特征写出“产生时间”和“线上可获得时间”,只要后者晚于预测时点,就必须排除或改写。

同时抽查正类和负类各 30 条样本,确认标签是否符合业务定义。如果人工都无法稳定判断,模型不可能凭空学会准确边界。标签一致性往往是最值得投入的第一项工作。

2. 第三天到第四天:完成三个基线

第一个基线是多数类基线,用来揭示准确率陷阱;第二个基线是人工规则,用来代表现有业务经验;第三个基线是逻辑回归或浅层决策树,用来衡量机器学习是否带来增量。

三个基线必须使用相同的时间切分和相同的验证集。否则你比较的不是模型能力,而是数据划分差异。输出结果时不要只给一个分数,要同步给出混淆矩阵和每天预测量。

3. 第五天到第六天:做阈值和错误分析

把验证集分数按从高到低排序,观察不同阈值下的命中量、正类比例、召回率和人工处理量。然后抽查高分误报和低分漏报,确认问题来自模型、特征、标签还是业务规则。

如果模型在某一类人群上明显更差,不要用总体平均值掩盖问题。可以按渠道、地区、产品版本、客户等级和新老用户分别计算指标,寻找性能差异的来源。

4. 第七天:决定是否进入小流量验证

如果模型在离线测试中达到预设标准,也不应直接全量替换人工流程。更稳妥的方式是先做“影子运行”,让模型给出预测但不影响业务决策,持续观察输入字段、预测量和人工反馈。

之后再选择一小部分流量进行人工对照,比较模型建议与原流程的增量收益。对于干预类任务,最终要看被模型识别的人群是否比随机人群产生更高收益,而不是只看模型本身的离线指标。

5. 什么时候不应该使用分类算法

如果业务没有稳定标签、事件发生极少且没有足够历史记录、类别边界完全依赖主观判断,或者预测结果没有对应的行动,分类算法可能不是当前最优解。

例如,团队只是想“看看客户能不能分群”,但没有明确的目标变量,聚类可能比强行构造分类标签更自然;如果所有高风险样本最终都必须人工逐条判断,模型可能更适合作为排序工具,而不是自动决策器。

我把模型是否值得建设归纳为一个简单判断:如果预测结果不能改变任何处理顺序、资源分配或风险控制动作,那么再高的分类分数也只是报表装饰。

九、常见问题与进一步理解

1. 分类算法和回归算法有什么区别

分类算法输出离散类别或类别概率,例如是否购买、属于哪种工单类型;回归算法输出连续数值,例如销售额、配送时长或客户生命周期价值。两者都可以使用监督学习,因为都需要历史样本中的目标答案。

有些业务问题可以同时建模。例如先用分类模型预测客户是否会购买,再用回归模型预测可能购买的金额。此时两个模型的标签、评价指标和上线动作都应该分别定义。

2. 初学者应该先学哪种分类算法

我建议顺序是:多数类基线、逻辑回归、决策树、随机森林或梯度提升,然后再根据数据形态学习支持向量机、文本模型和神经网络。这个顺序不是因为前面的算法永远更强,而是因为它能帮助你逐步理解特征、边界、过拟合和评价指标。

3. 为什么训练集准确率很高,测试集却很低

常见原因包括模型过拟合、训练和测试分布不同、数据泄漏处理不一致、样本量过小以及标签质量不稳定。若训练集和测试集之间差距很大,应先检查数据切分、重复主体和特征处理,再考虑调节模型复杂度。

4. AUC 很高,为什么业务效果仍然不好

AUC 衡量模型在不同阈值下的整体排序能力,但业务只会使用其中一个或少数几个阈值。如果真正可处理的人群处在低分区间,AUC 可能很好看,实际精确率却很低。

解决办法是查看目标工作点的精确率、召回率、预测量和收益。如果正类极少,还应重点观察 PR-AUC,而不是只用 ROC-AUC 评价。

5. 是否一定要使用最复杂的模型

不一定。复杂模型只有在识别效果的增量足以覆盖部署、解释、监控和维护成本时才值得使用。对于标签不稳定、样本量小或规则变化快的任务,简单模型反而更容易发现问题和快速修正。

十、总结:监督学习入门的关键,不是记住算法名称

1. 先记住这条判断链

面对一个分类问题,我建议按以下顺序思考:目标标签是否清楚,预测时点是否真实,样本切分是否泄漏,正类比例是否失衡,错判成本如何计算,指标是否匹配场景,阈值是否满足处理容量,模型是否能被持续监控。

这条判断链比“哪个算法准确率最高”更重要。因为分类模型不是考试答题,而是在不确定信息下帮助团队分配时间、资金和注意力。

2. 下一步怎么做

  1. 选一个标签明确的二分类任务,先统计正类比例。
  2. 写出预测时点和观察窗口,删除所有事后字段。
  3. 建立多数类、业务规则和逻辑回归三个基线。
  4. 用时间切分或主体分组切分,避免随机切分造成虚高。
  5. 同时查看精确率、召回率、PR-AUC、混淆矩阵和人工处理量。
  6. 根据错判成本选择阈值,而不是默认使用 0.5。
  7. 抽查错误样本,确认改进方向来自标签、特征还是算法。
  8. 先影子运行,再小流量验证,最后才考虑全量上线。

我对分类算法入门最核心的判断是:一个模型真正的价值,不是它能把多少历史样本分对,而是它能否在未来的真实约束下,把有限的业务资源优先交给最值得处理的样本。从这个角度看,监督学习的第一课不是调用分类器,而是学会把业务问题翻译成可验证、可承担、可持续改进的决策问题。

资料参考:scikit-learn 用户指南中的分类指标、概率校准与模型评估文档;Google《Rules of Machine Learning》;UCI Machine Learning Repository 公开数据集说明;NIST AI Risk Management Framework。文中标注为情景模拟、样本推演或建议基准的数据,仅用于解释方法,不应视为行业统计结论。

常见问题解答(FAQ)

1. 分类算法那么多,新手该从哪个算法入门?

我刚开始学监督学习,看到分类算法有决策树、逻辑回归、KNN、支持向量机等,完全不知道先学哪个。希望有人能分享自己的学习路径,哪个算法对新手最友好,又能帮助理解核心概念?

我的第一手经验是:先从决策树入门,但别把它当主力。我当年拿泰坦尼克号数据练手,决策树画出来很直观,能看懂每个分裂条件,所以学习曲线很平缓。但后来用同一份数据做交叉验证,决策树过拟合明显,换了几组参数也没根本改善。反而是逻辑回归作为基线,稳定性和可解释性都更好。为什么这么判断?

决策树的优势在可视化教学,但它对数据扰动非常敏感,叶子节点容易把噪声学进去。逻辑回归本身就是线性分类器,数学假设简单,训练速度快,跑出来的系数还能解释特征方向。对新手来说,先把逻辑回归弄懂,后续再理解支持向量机或神经网络会顺很多。

具体做法:课程或书籍里,先用决策树理解“特征分裂、信息增益”这些概念,然后用逻辑回归做真正的模型训练。比如在scikit-learn里,一行LogisticRegression().fit(X_train, y_train)就能得到可用的基线模型。

我建议在同一个数据集上同时跑决策树和逻辑回归,记录准确率、精确率、召回率三条指标,你会发现逻辑回归往往更稳定。

我当年在泰坦尼克号数据上的对比结果如下: 算法准确率精确率召回率 决策树78%75%70% 逻辑回归81%80%78% 所以我的结论是:入门分类算法,先学决策树理解机制,再以逻辑回归作为第一个能稳定产出的模型。别一上来就啃支持向量机,那会打击自信心。

2. 用分类算法时,训练集和测试集怎么划分才靠谱?

我自己跑模型的时候,随便把数据切了七三开,结果在训练集上效果很好,测试集上一团糟。到底是随机划分还是按时间划分?交叉验证到底怎么用?希望有经验的人讲讲实际操作中的坑。

我踩过的最大一个坑,是把时间序列数据直接随机切分。当时客户给的是过去一年的订单数据,我按默认的train_test_split打乱,得到很高准确率。结果上线后预测下个月的订单,效果一塌糊涂。后来才发现,随机切分会让模型“偷看”未来信息,因为测试集里混着后面的样本,模型在训练时已经见过同时间段的分布。

专家判断:划分数据不是机械地留出20%,而是先搞清楚数据有没有时间依赖。如果有,必须按时间顺序切割,比如前8个月训练,后4个月测试。如果没有明显时间依赖,那使用分层随机划分,确保类别比例一致。比如分类任务里,正样本占10%,那训练集和测试集都要保持10%,这用stratify参数就能实现。

具体做法:在scikit-learn里,我会先看数据里有没有date字段,有的话就排好序再切;没有的话用train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)。另外,交叉验证也别只做一次划分。

我用5折交叉验证看稳定性,如果各折之间准确率波动大于5%,说明模型对数据分布敏感,这时不要急着调参,回过来检查数据划分方式和特征是否有泄漏。所以我的结论是:划分数据的优先级,先是排除泄漏,再保证类别分布,最后才是比例大小。新手最容易忽略的是“泄漏”,但这一条几乎等于模型能不能上线。

3. 分类结果不好时,先从哪个方向排查?

我用逻辑回归做二分类,准确率只有60%,试了加特征、调参数都没起色。遇到这种情况,该从数据清洗、特征工程还是模型选择开始排查?想听听有经验的人的排查顺序。

我连续两周困在准确率上,后来发现是标签定义错了。当时做离职预测,把三个月内离职记为1,结果模型训练时看到大量还在职的样本,准确率虚高。这事之后,我给自己定了一个排查顺序:先看数据,再看模型,最后才调参。专家判断:准确率低不一定是模型不行,很可能是数据泄露、类别不均衡或特征分布不对。

我建议的排查顺序是:第一,检查标签是不是干净的,有没有空值、错误标注;第二,检查特征里有没有包含未来信息,比如用订单金额预测下单行为时,不小心把退款状态也放进去;第三,先跑一个baseline模型,比如逻辑回归,看它到底有多差。

具体细节:有一次我对一个二分类问题做特征重要性排序,发现某个特征权重特别大,一查是用户ID编码,模型学会了记忆用户而不是预测行为。删掉之后,测试集准确率从60%涨到78%。这让我明白,分类问题排查的顺序应该是“数据 > 特征 > 模型 > 参数”,不是反过来。

所以我的建议是:先把训练集和验证集的准确率差拉开,看是否存在过拟合。如果训练集高、测试集低,优先处理特征泄漏和正则化;两者都低,再从数据清洗和特征工程开始。

4. 监督学习里的分类算法,精度和召回率到底该优先哪个?

我在做信贷违约预测,正样本很少,模型准确率却很高,但业务方说没用,说要抓那些违约的人。我看了一些资料说要关注精确率和召回率,但不知道实际怎么取舍,希望结合真实案例讲讲。

我有一次做点击率预测,正样本(点击)只有5%,模型准确率轻松做到95%,但业务方说没法用。原因很简单:模型把所有样本都预测成“不点击”,准确率照样95%,但漏掉了所有点击。所以准确率在类别不均衡时几乎无效,必须看精确率和召回率。专家判断:优先哪个取决于业务损失。

以信贷违约为例,把违约客户错判为不违约,会带来坏账损失;把正常客户错判为违约,会损失利息收入和用户信任。如果坏账损失更大,就要提高召回率(选出更多疑似违约的人);如果客服成本或误伤成本更高,就优先精确率。具体做法:调参时不要只盯着一个指标。我通常用F1分数找平衡点,再结合业务成本调整阈值。

比如逻辑回归默认阈值是0.5,我会在验证集上画PR曲线,找到召回率达到80%时的精确率,计算对应的成本,再决定阈值。之前有一次跑到阈值0.3,召回率从40%提到75%,但精确率掉了20%,业务方一算账,发现省下的坏账金额远大于多付的人工审核成本,就接受了。

所以我的结论是:没有绝对优先,但类别不均衡时,至少要把精确率和召回率同时报告出来。如果只能选一个,先问老板,漏掉一个目标客户损失多少钱,误判一个正常客户损失多少钱,算完账再决定。

核心关键词

读者评论

马思妍

文章把分类算法从“预测类别”上升到“管理风险”很到位,尤其是那个91%准确率却无实际价值的案例,直接点破了初学者最容易被误导的地方。能让人停下来重新审视自己的评估指标。

白浩然

作为刚接触数据的新手,最受用的是五个连续问题的拆解和标签定义那部分。以前总觉得调包调参最重要,现在才明白业务理解和数据定义才是分类项目的地基。

冯诗涵

非常认同关于阈值和数据泄漏的提醒。模型输出的是分数而不是结论,0.5不是默认真理。曾经因随机切分数据让AUC虚高,换时间切分后才发现模型稳定性很差,这篇讲得很实在。

陆承宇

关于多标签和有序分类的对比表格很有启发,尤其是提醒类别顺序是否真有业务含义。最近在做风险等级预测,原本直接套多分类,看完后打算重构标签和评价方式。

免责申明:本文内容通过AI工具匹配关键字智能整合而成,仅供参考,帆软及九数云不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系jiushuyun@fanruan.com进行反馈,九数云收到您的反馈后将及时处理并反馈。
咨询方案
咨询方案二维码

扫码咨询方案

热门产品推荐

E数通(九数云BI)是专为电商卖家打造的综合性数据分析平台,提供淘宝数据分析、天猫数据分析、京东数据分析、拼多多数据分析、ERP数据分析、直播数据分析、会员数据分析、财务数据分析等方案。自动化计算销售数据、财务数据、绩效数据、库存数据,帮助卖家全局了解整体情况,决策效率高。

相关内容

查看更多
数据分析实战金融案例,银行风控分析项目

数据分析实战金融案例,银行风控分析项目

2022年我参与的某城商行零售信贷风控分析项目,业务背景是贷款不良率连续两个季度上涨,从1.4%抬升到2.1% […]
数据分析实战满减案例,满减活动效果分析

数据分析实战满减案例,满减活动效果分析

数据分析实战满减案例,满减活动效果分析 2023年Q4,我接手了一家连锁烘焙品牌的满减活动复盘。品牌方在11月 […]
数据分析实战客户案例,客户价值提升分析

数据分析实战客户案例,客户价值提升分析

数据分析实战客户案例,客户价值提升分析 2022年11月,我接手了一个家居日用品DTC品牌的客户价值分析项目。 […]
数据分析实战进阶项目,中级难度分析案例

数据分析实战进阶项目,中级难度分析案例

两个月前,我带着一套“感觉自己已经会了”的分析技能,接下一个季度促销复盘项目。数据量不算大:42万行订单明细、 […]
数据分析实战流程案例,业务流程优化分析

数据分析实战流程案例,业务流程优化分析

2024年初,我接手一家华东汽车零部件工厂的交付流程诊断项目。这家工厂年产值约3.2亿元,ERP、MES、WM […]

让电商企业精细化运营更简单

整合电商全链路数据,用可视化报表辅助自动化运营

让决策更精准