回归、分类、聚类——监督与无监督,你到底该用哪个

发布时间:2026/7/27 3:31:18
回归、分类、聚类——监督与无监督,你到底该用哪个 前两篇把机器学习的道和术聊了一些今天咱们聊聊器——算法的分类框架。很多人一上来就问XGBoost和神经网络哪个好其实这个问题没法回答因为你先得搞清楚你的任务类型是什么。机器学习算法有三大门派回归、分类、聚类。前两者属于监督学习有标签第三者属于无监督学习无标签。这三者的本质区别就一句话——你手里有没有Y。回归预测一个连续的数值回归任务的目标是猜一个数。房价预测——输入房屋的各种特征输出一个具体价格比如327.5万销量预测——输入日期、促销信息、历史数据输出明天卖多少件比如1834件温度预测——输入气象数据输出明天下午2点的具体气温比如26.3℃。回归任务的评价指标是误差有多小——MSE均方误差、MAE平均绝对误差、R²决定系数。你不能问预测对了没有因为连续值预测几乎永远不可能完全正确只能讨论偏差有多大。常用算法线性回归、Ridge/Lasso回归、决策树回归、随机森林回归、GBDT回归、神经网络回归。分类预测一个离散的类别分类任务的目标是打一个标签。垃圾邮件识别——输入邮件内容输出垃圾或非垃圾图像分类——输入图片像素输出猫狗汽车等类别信用评分——输入用户信息输出好客户或坏客户。分类任务的评价指标是准确率有多高——准确率、精确率、召回率、F1-Score、AUC。这些指标的用法和陷阱我在第七篇会专门讲这里只提一句分类任务千万别只看准确率尤其在类别不平衡的情况下。分类任务的输出通常是一个概率分布——模型说这张图有92%的概率是猫、6%是狗、2%是兔子然后取概率最高的类别作为最终预测。这个置信度信息非常重要——它告诉你不光有是什么还有多确信。常用算法逻辑回归、决策树、随机森林、XGBoost/LightGBM、SVM、神经网络尤其是CNN/Transformer。聚类发现数据内在的分组结构聚类任务跟前面两个完全不同——你没有Y没有标签没有人告诉你这个样本属于哪一类。你需要让算法自动发现数据里的团块结构——哪些样本天然地聚在一起跟其他样本明显不同。典型场景用户分群——你有10万个电商用户的行为数据想知道这些人可以分成几类价格敏感型、品牌追随型、随意浏览型以便做差异化营销图片压缩——把颜色相近的像素聚成一类用代表色替代原始颜色压缩图像体积异常检测——那些跟所有聚类中心都离得远远的点可能就是异常值或欺诈行为。聚类算法的核心是所有样本之间的距离——定义距离的尺度直接决定了聚类结果。欧氏距离看重绝对数值差异余弦距离看重方向相似性马氏距离考虑到了数据协方差——选哪个取决于你的数据性质。常用算法K-Means最简单、最快、但要求簇是凸的且大小相近、DBSCAN基于密度能发现任意形状的簇、自动排除噪声点但参数调起来麻烦、层次聚类生成树状结构可以看任意粒度的聚类结果但大数据量下慢。监督 vs 无监督——有标签就一定用监督学习吗有标签当然用监督学习啊不然为什么花那么多钱去标数据——这是大多数人的第一反应。但真实情况更复杂。如果你的标签质量不高标注员水平参差不齐、标注标准模糊、标签噪声超过20%用监督学习反而可能比无监督更差。因为你让模型去学习的规律里混杂了大量错误信号。这时候反而可以考虑半监督——用少量高质量标签做种子然后用无监督方法在大量无标签数据上扩散。如果你的标签分布跟真实分布严重不一致监督学习也会出问题。比如你在实验室理想条件下采集的数据训了模型拿到真实场景里用——光照变了、背景变了、人群变了。这种训练集和测试集分布不一致的域迁移问题监督学习往往表现极差而无监督的域适应方法通过对抗训练或者自训练反而能找到更鲁棒的表示。如果你真正关心的是数据的内在结构而不是预测某个具体值那无监督才是正确的选择。做市场细分的人要的是发现潜在客户群而不是预测某个客户会不会买前者是聚类后者才是分类。从任务出发选算法不要拿着锤子找钉子很多新人学了一个模型就到处用。学了XGBoost就什么问题都往XGBoost上套哪怕是个简单的线性关系、哪怕数据量只有100条——这就叫拿着锤子看什么都像钉子。正确的逻辑是先看你的任务目标再选算法家族最后在家族里试具体实现。要预测数值→回归家族要打离散标签→分类家族要发现隐藏结构→聚类家族或者降维家族比如PCA、t-SNE要同时做多个任务→多任务学习要做序列预测→时间序列模型或者RNN/Transformer每个家族里具体用哪个算法取决于你的数据量、数据维度、可解释性需求、训练时间和推理时间预算。这些权衡在后面的几篇里会陆续展开。最后说一个常见的认知误区——深度学习比传统机器学习好是错的准确的说是在数据量大、计算资源充足、任务高度复杂的情况下深度学习可能比传统模型好。如果你只有几千条结构化数据用户年龄、收入、行为计数这种表格数据深度学习在这上面毫无优势——数据量太小、特征太稀疏深度学习根本训不起来。XGBoost或者LightGBM在这种表格数据中等数据量的场景下几乎是不可战胜的。你非要用Transformer来训几千条数据结果就是过拟合得一塌糊涂AUC比随机森林低10个点。把合适的方法用在合适的问题上比用最时髦的方法重要一万倍。