周末清晨,你站在爆满的衣橱前,决定来一场彻底的整理。第一种情形:妈妈在旁边,每拿起一件衣服就告诉你它的类别——“这条是通勤裤,那件是运动卫衣”。你按她给的答案一件件记住,渐渐摸清规律,下次看到没见过的衣服也能对号入座。第二种情形:妈妈出门买菜,只剩你一个人面对堆成山的衣物。没人告诉你哪件是什么,你只能凭颜色、厚度、面料自己摸索:厚实的放一叠,轻薄的挂一排,深色系归到一起。几次尝试后,衣橱照样变得井井有条。 这两种整理方式,正是机器学习最基础的两大范式:监督学习与无监督学习。前者像有老师批改作业——数据带着“标准答案”(标签);后者像在无人区探险——数据没有答案,全靠模型自己发现结构。这篇内容就从“衣橱”出发,把两者的数据要求、典型算法、应用场景、优缺点和选型方法一次讲透,帮你建立起机器学习的第一块认知基石。

岗位关联

对 AI 从业者而言,分清监督与无监督是面试、选型、建模的第一道基本功——面对任何数据,你都能立刻判断该举起哪把工具,这决定了项目起步的方向与成本。

目录
  1. 可视化演示
  2. 一、核心概念:衣橱前的两条路
  3. 二、数据要求:标签的含金量
  4. 三、监督学习:照着答案学规律
  5. 四、无监督学习:自己发现结构
  6. 五、应用场景:各显神通的舞台
  7. 六、优缺点对比:没有免费的午餐
  8. 七、选择指南:给数据做判断题
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

数据对比:有标签 vs 无标签 每个样本都有明确的标签 (y) 样本没有标签,需要发现隐藏结构 监督学习训练:最小化预测误差 MSE = \u03a3(y-\u0177)\u00b2/n \u03b8* = argmin L(\u03b8) 监督学习vs无...

一、核心概念:衣橱前的两条路

整理衣橱时,妈妈在旁逐件报出类别,你把这些“正确答案”记在心里,下次见到巴黎新款的连衣裙也能一眼认出——这就是监督学习的雏形:给机器一份带答案的样本集,让它学着从输入走向输出。而妈妈出门后,你独自面对那堆衣服,没人告诉类别,你开始观察颜色、厚薄、面料这些属性,自己把它们分成“夏天的轻薄款”“冬天的保暖款”——机器做同样的事情,就叫无监督学习。

在机器学习里,一条数据通常写作 $\mathbf{x}$,它可以是图片的像素、邮件的词频、衣服的颜色与尺码;对应的答案写作 $y$,比如“连衣裙”或“垃圾邮件”。监督学习拿到的是一批“问题 + 答案”的配对,目标是学出一个函数 $f$,见到没见过的问题 $\mathbf{x}$ 也能预测答案 $\hat{y}$。为了后续讨论方便,我们先给这种配对集合一个严格的记号,它叫训练集。

有标签的衣橱,就是一套监督学习的训练集;没有标签的衣堆,则是无监督学习的原始素材。前者每一步都有参考答案可对照,后者只能靠观察和归纳。理解了这一点,我们就抓住了两种范式最本质的分水岭。

T={(xi,yi)}i=1m\displaystyle T = \{(\mathbf{x}_i, y_i)\}_{i=1}^{m}
  1. 样本总数$i$ 从 $1$ 遍历到 $m$,$m$ 表示训练集里样本的总条数,类似衣橱里被妈妈点评过的衣服总数
    i∈{1,2,…,m}\displaystyle i \in \{1, 2, \dots, m\}
  2. 特征向量$\mathbf{x}_i$ 是第 $i$ 个样本的特征,是一串描述衣服颜色、尺寸、面料的数字
    xi=(xi1,xi2,…,xip)\displaystyle \mathbf{x}_i = (x_{i1}, x_{i2}, \dots, x_{ip})
  3. 标签$y_i$ 是与第 $i$ 个样本配对的答案,比如“连衣裙”“衬衫”“垃圾邮件”
    yi∈{类别或数值}\displaystyle y_i \in \{\text{类别或数值}\}
  4. 配对单元$(\mathbf{x}_i, y_i)$ 把“问题”和“答案”捆成一组,是监督学习最基本的训练单元,就像“衣服 + 吊牌”这个整体
    (xi,yi)\displaystyle (\mathbf{x}_i, y_i)

二、数据要求:标签的含金量

新买的衣服上通常挂着一枚吊牌,写着品名、面料、洗涤方式——这枚吊牌就是“标签”。监督学习极度依赖吊牌:没有吊牌,它连“开始学”都做不到。然而吊牌不会自己长出来,得靠人工一个个贴上去。请人给十万件衣服贴吊牌,既花钱又耗时,这就是标注成本——它是监督学习最大的现实门槛。

无监督学习完全不需要吊牌,它直接从衣服外观出发自己总结规律,所以特别适合“吊牌缺失”的冷启动场景。但无论走哪条路,机器都读不懂“颜色好看”“面料柔软”这种模糊描述,必须先把衣服翻译成数字:颜色量化为 RGB 三元组,尺码编码成数值,厚度用克重表示。这串数字就是特征向量,它是机器认识世界的语言。

标签越全、特征越准,监督学习的上限越高;标签缺失时,特征本身的质量决定了无监督学习能挖出多少规律。吊牌贵不贵、全不全,直接决定了你在两条路之间如何抉择——这就是“数据可得性”和“规模需求”这两个现实约束背后的逻辑。

xi=(xi1,xi2,…,xip)T\displaystyle \mathbf{x}_i = (x_{i1}, x_{i2}, \dots, x_{ip})^T
  1. 特征分量$x_{i1}$ 表示第 $i$ 个样本的第 $1$ 个特征,如“衣长 65 厘米”
    xi1=65.0\displaystyle x_{i1} = 65.0
  2. 维度数量$p$ 是特征总数,衣服的颜色、尺寸、面料一一对应一个分量
    p=特征个数\displaystyle p = \text{特征个数}
  3. 转置符号$T$(上标)表示把行向量转成列向量,约定俗成地让公式更规范
    xi∈Rp\displaystyle \mathbf{x}_i \in \mathbb{R}^{p}

三、监督学习:照着答案学规律

你收集了一批“身高—裤长”对照数据,每一条都有准确的裤长答案(标签),想训练一个模型:输入身高,输出推荐裤长。这正是回归问题,而最简单的模型之一就是线性回归:假设裤长与身高近似满足一条直线关系 $\hat{y} = \mathbf{w}^\top \mathbf{x} + b$,其中 $\mathbf{w}$ 是权重,$b$ 是偏置。

直线有无数条,哪条最好?思路很朴素——“对答案”:把每个样本的预测裤长和真实裤长拿出来比,差距越小越好。把所有样本的差距平方后取平均,就得到均方误差(MSE),它衡量一条直线在整套数据上的平均表现。

MSE 就像妈妈批改你整理衣服的作业:每件衣服判一个分数,最后算出平均分。分数越低,说明你摸到的规律越接近真实。当标签是“垃圾/正常”这类离散类别时,监督学习则使用逻辑回归做分类,原理相通,只是输出的不再是连续数值,而是类别概率。

L(w,b)=1m∑i=1m(y^i−yi)2\displaystyle L(\mathbf{w}, b) = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i)^2
  1. 预测值$\hat{y}_i$ 是模型对第 $i$ 个样本输出的预测裤长,与真实值 $y_i$ 作对比
    y^i=w⊤xi+b\displaystyle \hat{y}_i = \mathbf{w}^\top \mathbf{x}_i + b
  2. 误差平方$(\hat{y}_i - y_i)^2$ 计算预测与真实的偏差并平方,既消除正负抵消,又放大较大错误
    (y^i−yi)2≥0\displaystyle (\hat{y}_i - y_i)^2 \geq 0
  3. 求和平均$\frac{1}{m} \sum_{i=1}^{m}$ 把全部 $m$ 个样本的误差加总再取平均,得到整体平均犯错水平
    1m∑i=1mei\displaystyle \frac{1}{m} \sum_{i=1}^{m} e_i
  4. 最小化目标训练就是不断调整 $\mathbf{w}, b$ 让 $L$ 变小,最常用的手段是梯度下降
    w←w−η⋅∂L∂w\displaystyle \mathbf{w} \leftarrow \mathbf{w} - \eta \cdot \frac{\partial L}{\partial \mathbf{w}}

四、无监督学习:自己发现结构

没有吊牌,你决定先把衣橱分成两堆:厚的放一边,薄的放一边。怎么做?先随便在衣橱里抓两个“代表”(初始质心),然后每件衣服找离自己最近的代表靠拢,站队完成后重新计算每堆的“中心代表”,再重复这个过程。几轮之后,两堆衣服自然成形——这就是 K-Means 聚类,无监督学习里最有代表性的算法。

K-Means 的整个目标,可以浓缩成一个数学表达式:让所有样本到各自簇中心的距离平方和尽量小。簇内越紧凑,说明划分越好。

几次“站队 → 换代表 → 再站队”之后,衣橱自然分成两叠,全程没有任何人告诉你标准答案。这正是无监督学习的魅力:它不追求“预测得准”,而是追求“发现结构”。类似地,主成分分析(PCA)通过降维找到数据中最主要的变差方向,也是一种常见的无监督探索工具。

J=∑j=1k∑i∈Cj∥xi−μj∥2\displaystyle J = \sum_{j=1}^{k} \sum_{i \in C_j} \left\| \mathbf{x}_i - \boldsymbol{\mu}_j \right\|^2
  1. 簇数$k$ 是预先指定的簇的个数,相当于你决定把衣橱分成几堆
    k∈{1,2,3,… }\displaystyle k \in \{1, 2, 3, \dots\}
  2. 簇集合$C_j$ 表示第 $j$ 个簇里所有样本的集合,下标 $i \in C_j$ 表示遍历该簇的成员
    Cj={i:样本 i 属于簇 j}\displaystyle C_j = \{i : \text{样本 } i \text{ 属于簇 } j\}
  3. 质心$\boldsymbol{\mu}_j$ 是第 $j$ 个簇的中心点,通常取簇内样本的均值,类似每堆衣服的“平均代表”
    μj=1∣Cj∣∑i∈Cjxi\displaystyle \boldsymbol{\mu}_j = \frac{1}{|C_j|} \sum_{i \in C_j} \mathbf{x}_i
  4. 距离平方和$\left\| \mathbf{x}_i - \boldsymbol{\mu}_j \right\|^2$ 是样本到质心的欧氏距离平方,把所有簇内距离加总得到目标 $J$
    J=∑j=1k∑i∈Cj∥xi−μj∥2→min⁡\displaystyle J = \sum_{j=1}^{k} \sum_{i \in C_j} \left\| \mathbf{x}_i - \boldsymbol{\mu}_j \right\|^2 \to \min

五、应用场景:各显神通的舞台

监督与无监督各有所长,现实中各据一方。垃圾邮件分类是监督学习的经典舞台:历史上积累的邮件与“垃圾/正常”标记就是标签,模型学成后自动拦截新邮件。房价预测同样依赖监督:面积、地段、楼层作为特征,连续价格作为标签,训练出回归模型。

无监督学习则活跃在“没有答案”的战场。电商平台面对百万用户的行为数据(浏览时长、客单价、购买频率),没有任何人工分组标签,用 K-Means 聚类就能自然发现“价格敏感型”“高净值型”等群体,支撑精准营销。另一个重要场景是异常检测:正常的交易行为会聚成大簇,而欺诈行为因为特征怪异,往往游离在众簇之外。聚类判断“像不像”靠的是距离。

距离就像“两件衣服有多像”的尺子。聚在人群中央的是“多数派”,离谁都远的那件“孤品”,反而最值得警惕——异常检测正是抓住这个直觉,把孤立样本送进风控复审队列。

d(a,b)=∑j=1p(aj−bj)2\displaystyle d(\mathbf{a}, \mathbf{b}) = \sqrt{\sum_{j=1}^{p} (a_j - b_j)^2}
  1. 坐标差$a_j - b_j$ 是两个样本在第 $j$ 个特征上的差异,类似两件衣服的衣长差
    aj−bj\displaystyle a_j - b_j
  2. 平方求和所有特征差异的平方累加,保证正负差异不会相互抵消
    ∑j=1p(aj−bj)2\displaystyle \sum_{j=1}^{p} (a_j - b_j)^2
  3. 开方取正整体开平方得到欧氏距离,距离越小表示两个样本越相似
    d(a,b)≥0\displaystyle d(\mathbf{a}, \mathbf{b}) \geq 0

六、优缺点对比:没有免费的午餐

监督学习的优点是“准”:有标准答案可以对,学出来的模型在相似场景下预测相当可靠,猫狗分类、信用评分这些任务都能达到很高精度。缺点是“贵”:标签依赖人工,专家标注动辄数十万条,且它只能学会已知类别,一旦出现全新物种,模型会一脸茫然。

无监督学习恰好相反:不需要标签、成本低、能发现从未被定义的类别,特别适合冷启动和探索性分析。但它也有隐忧——聚类结果不一定符合业务直觉,簇的含义还得靠人解读,效果好坏也缺少客观的“正确答案”来评判。把两边的利弊放进同一个天平,就得到监督学习性价比的完整表达式:

没有免费的午餐——想要低误差,就得付出标注成本;想省钱,就得接受无监督的“结果要人来解释”的风险。理解了这组权衡,你就能明白为什么很多团队在实际项目中,先用无监督快速探索数据,再针对高价值场景投入标注做监督。

Cost=λ1⋅Nlabel+λ2⋅Error\displaystyle \text{Cost} = \lambda_1 \cdot N_{\text{label}} + \lambda_2 \cdot \text{Error}
  1. 标签成本$N_{\text{label}}$ 是需要标注的样本数量,$\lambda_1$ 是每个标签的单价,两者相乘得到标注总开销
    λ1⋅Nlabel\displaystyle \lambda_1 \cdot N_{\text{label}}
  2. 误差成本$\text{Error}$ 是模型的预测错误水平(如 MSE),$\lambda_2$ 是误差带来的业务损失系数
    λ2⋅Error\displaystyle \lambda_2 \cdot \text{Error}
  3. 总代价两者加权相加得到总成本,监督学习是在“多花标注钱”与“降低业务错误”之间做权衡
    Cost=标签开销+错误开销\displaystyle \text{Cost} = \text{标签开销} + \text{错误开销}

七、选择指南:给数据做判断题

面对一个新的数据任务,先按顺序问三个问题。第一问:有没有标签?有标签是监督学习的入场券,没标签就直奔无监督。第二问:要预测还是发现?业务目标是“给新样本一个答案”就选监督,目标是“搞清楚数据里有什么结构”就选无监督。第三问:数据量多大?深度学习监督模型动辄需要百万级样本,而聚类在小数据集上也能快速出结果。

如果只有少量标签,不必二选一,可以走混合策略:先让无监督算法在大量无标签数据上学习特征或聚类,再用少量标签做校准或微调——这是半监督学习与预训练范式的雏形,也是当前工业界最常用的省钱路径。而在监督任务内部,还要再判断输出的类型,这决定了具体用回归还是分类:

整理衣橱前,先看有没有吊牌、是想“按吊牌归类”还是“自己发明分区”——数据会告诉你该走哪条路。判断的顺序永远是:数据形态决定范式,输出类型决定算法,成本预算决定策略。

y∈{R回归任务,预测连续数值{0,1,…,C−1}分类任务,预测类别编号\displaystyle y \in \begin{cases} \mathbb{R} & \text{回归任务,预测连续数值} \\ \{0, 1, \dots, C-1\} & \text{分类任务,预测类别编号} \end{cases}
  1. 连续输出当 $y$ 落在实数集 $\mathbb{R}$ 上,任务为回归,如房价、温度这类连续值
    y∈R\displaystyle y \in \mathbb{R}
  2. 离散输出当 $y$ 只能取 $\{0, 1, \dots, C-1\}$ 中的整数,任务为分类,$C$ 是类别总数
    y∈{0,1,…,C−1}\displaystyle y \in \{0, 1, \dots, C-1\}
  3. 根据输出选算法先判断 $y$ 的类型,再选择线性回归或逻辑回归,这就是监督任务内部的第一道分岔口
    输出类型↦算法家族\displaystyle \text{输出类型} \mapsto \text{算法家族}

AI 应用场景

场景一:电商客户分群(无监督聚类)

阶段:数据探索与用户画像

解决的问题:传统市场调研靠人工问卷划分客户类型,成本高、样本少,且分组标准主观,容易漏掉真实存在的细分群体。K-Means 聚类直接对海量行为数据(浏览时长、客单价、购买频率)自动分群,无需任何人工标签。

具体案例:某电商平台对 100 万用户的三个月行为数据做标准化后,用 K-Means 聚成 4 簇,意外发现一个此前从未定义过的群体——“深夜下单、退货率低、客单价中等”的理性型买家。运营团队据此设计了夜间定向推送,整体转化率提升 18%。

场景二:银行信贷违约预测(监督分类)

阶段:模型训练与风险预测

解决的问题:传统人工审批速度慢、标准不一致;基于规则的评分卡又难以捕捉复杂非线性关系。利用历史贷款记录(含“违约/正常”标签)训练监督分类模型,可以自动、快速、稳定地对新申请给出违约概率。

具体案例:某银行使用 5 年累计的 20 万条贷款数据,特征包含收入、负债率、征信查询次数等,训练逻辑回归违约预测模型。上线后审批耗时从 2 天缩短到 5 秒,坏账率下降约 12%。

场景三:新用户冷启动推荐(混合策略)

阶段:特征工程与冷启动推荐

解决的问题:新用户没有历史行为标签,监督模型无从训练。先用无监督聚类对全量用户做分群,再把新用户按特征就近归入某个群,用群内热门商品做推荐,后续行为积累后再用监督模型精细优化。

具体案例:某视频平台对新用户只采集到设备型号与注册时段,先用 K-Means 把存量用户分成 6 类内容偏好群体,新用户根据这两项特征落群后,直接推送该群 TOP20 视频。次日留存率比统一热门推荐提升 9 个百分点。

Python 演示

python84 行
import mathimport random  class LinearRegression:    """监督学习:梯度下降拟合 y = w * x + b"""     def __init__(self, lr=0.01, epochs=300):        self.lr = lr        self.epochs = epochs        self.w = 0.0        self.b = 0.0     def fit(self, xs, ys):        n = len(xs)        for _ in range(self.epochs):            dw = 0.0            db = 0.0            for x, y in zip(xs, ys):                pred = self.w * x + self.b                dw += (pred - y) * x                db += pred - y            self.w -= self.lr * dw / n            self.b -= self.lr * db / n     def predict(self, x):        return self.w * x + self.b  class KMeans:    """无监督学习:K-Means 聚类,把样本分成 K 簇"""     def __init__(self, k=2, epochs=50):        self.k = k        self.epochs = epochs        self.centers = []     def fit(self, points):        random.seed(42)        centers = [points[idx] for idx in random.sample(range(len(points)), self.k)]        for _ in range(self.epochs):            clusters = [[] for _ in range(self.k)]            for p in points:                d = [self._dist(p, c) for c in centers]                clusters[d.index(min(d))].append(p)            new_centers = [self._mean(cl) or c for cl, c in zip(clusters, centers)]            if new_centers == centers:                break            centers = new_centers        self.centers = centers        return centers     @staticmethod    def _dist(a, b):        return math.sqrt(sum((a[i] - b[i]) ** 2 for i in range(len(a))))     @staticmethod    def _mean(group):        if not group:            return None        n = len(group)        return [sum(p[i] for p in group) / n for i in range(len(group[0]))]  def main():    # 监督学习:根据身高预测体重,数据带标签    heights = [1.5, 1.56, 1.62, 1.68, 1.74, 1.8, 1.86]    weights = [44.0, 50.2, 55.7, 62.1, 68.4, 75.0, 81.9]    reg = LinearRegression()    reg.fit(heights, weights)    print("监督(线性回归): 体重 = %.2f * 身高 + %.2f" % (reg.w, reg.b))     # 无监督学习:对一组坐标点做聚类,数据不带标签    points = [[1.1, 1.0], [1.3, 0.9], [1.0, 1.2], [3.9, 3.8], [4.1, 4.0], [3.8, 4.2]]    km = KMeans(k=2)    centers = km.fit(points)    print("无监督(K-Means) 聚类中心:", centers)    for p in points:        label = min(range(km.k), key=lambda i: KMeans._dist(p, centers[i]))        print("样本", p, "归入簇", label)  if __name__ == "__main__":    main()
目的:用同一个“衣橱”数据集演示两大范式——带标签的坐标拟合出直线,无标签的坐标点被自动聚成两簇。
  1. dw += (pred - y) * x计算每个样本的误差对权重的“推挤方向”,误差越大,修正越用力
  2. self.w -= self.lr * dw / n沿着误差下降的方向小步更新权重,lr 是学习率
  3. d = [self._dist(p, c) for c in centers]计算当前样本到每个质心的距离,相当于测量衣服离每个“代表”有多远
  4. clusters[d.index(min(d))].append(p)把样本归入距离最近的质心所在的簇,就像衣服投向最近的衣架
  5. new_centers = [self._mean(cl) or c for cl, c in zip(clusters, centers)]重新计算每个簇的中心,如果某簇为空则保留旧质心,避免程序崩溃

常见误区

误区我以为只要数据没有标签,用的方法就都属于无监督学习。听别人提到半监督、自监督,也觉得它们只是无监督的另一种叫法,反正都没有人工标注嘛。

正解无监督学习特指完全不用标签、目标是发现数据内在结构的方法,如 K-Means 聚类、PCA 降维。而半监督学习是“少量标签 + 大量无标签”并用;自监督学习则是自己构造伪标签(比如把一句话挖掉一个词去预测),它其实在“制造标签”。就像妈妈出门了,但你偷偷翻出了吊牌看一眼——这不算真正的无人指导。

为何常见:从字面理解,“没有监督 = 无监督”,初学者很容易把“不用人工标签”和“完全不用标签”混为一谈。

误区既然监督学习有标准答案可以对,那肯定在各方面都比无监督学习强。无监督学习就是在数据里瞎猜,没什么实际价值。

正解在有明确正确答案的任务(如图像分类)上,监督确实更准。但在探索性任务上,无监督可以发现从未定义的类别,监督模型反而做不到;在预训练范式里,BERT 等模型正是先用无监督/自监督在海量无标签文本上学习,再用少量标签微调,效果远超纯监督训练。无监督不是差,只是擅长的赛道不同。

为何常见:监督学习在业务预测和竞赛中曝光率高,容易让人产生“监督万能”的错觉。

误区聚类不就是自动分类吗?那我不用告诉它分成几类,它自己应该能决定。就算要指定,K 设大一点也没关系,反正多分几堆更细致。

正解K 值是 K-Means 必须预先指定的超参数,它决定了衣橱要分成几堆。K 太小会把该分开的类别合并,K 太大又会把同类拆散。实际中常用肘部法则:画出目标函数 $J$ 随 K 变化的曲线,找到拐点作为 K;也可以用轮廓系数等指标辅助评估。

为何常见:“聚类”这个名字自带“自动”的暗示,让人误以为连簇数也会自动发现。

误区监督学习拿到了正确答案,那模型肯定靠谱。只要训练数据够多、标签都正确,训练出来的模型直接上线用就行了。

正解标签质量、数据分布、训练方法都会让监督模型翻车:标签本身可能标错(噪声),坏样本可能极少(类别不平衡),模型还可能把训练集背下来却在真实数据上失灵(过拟合)。所以监督学习的严谨流程必须包含验证集评估、正则化与超参数调优——就像妈妈教你认衣服,你死记硬背了所有吊牌,但遇到没见过的款式照样可能认错。

为何常见:把“训练误差低”误认为“模型表现好”,忽略了泛化能力才是监督学习的真正目标。

面试题

Q1. 监督学习与无监督学习的根本区别是什么?

单选题 · easy

  • A.数据是否带标签← 正确答案
  • B.模型是否使用神经网络
  • C.是否需要 GPU 加速
  • D.是否依赖大数据量

答案:A。监督学习依赖带标签的数据,通过“问题—答案”配对学习映射;无监督学习使用无标签数据,自主发现结构。就像整理衣橱时,妈妈在不在场决定了你是有参考答案还是纯靠自己摸索。神经网络、GPU、数据量都不是两者的本质分野。

Q2. 下列哪个任务最适合用无监督学习完成?

单选题 · easy

  • A.垃圾邮件分类
  • B.房价预测数值
  • C.客户群体划分← 正确答案
  • D.手写数字识别

答案:C。客户群体划分没有现成标签,适合用 K-Means 等聚类算法自动发现人群结构。垃圾邮件分类、房价预测、手写数字识别都有明确标签(垃圾/正常、房价、数字类别),属于监督学习任务。

Q3. 均方误差(MSE)衡量的是什么?

单选题 · mid

  • A.预测值与真实值的平均差距← 正确答案
  • B.特征之间的差异程度
  • C.所有样本的分布形态
  • D.模型自身的参数数量

答案:A。MSE 先求每个样本预测值与真实值的差,平方后取平均,整体衡量模型在全部样本上的平均犯错大小,对应正文中 $\frac{1}{m}\sum(\hat{y}_i - y_i)^2$。它不描述特征差异、分布形态或参数数量。

Q4. K-Means 算法中,质心每轮迭代后如何更新?

单选题 · easy

  • A.取簇内样本的均值← 正确答案
  • B.随机抽取一个新点
  • C.取簇内样本的众数
  • D.保持初始值不变

答案:A。K-Means 在每轮“站队”完成后,重新计算每个簇内所有样本的均值作为新质心,相当于重新推选每堆衣服的“平均代表”。随机抽取、取众数或保持不动都不是该算法的更新规则。

Q5. 以下哪个是监督学习中“标签”的典型形式?

单选题 · mid

  • A.图像中物体的类别名← 正确答案
  • B.图片的像素值
  • C.网络层的参数数量
  • D.训练集的样本个数

答案:A。标签是与样本配对的“答案”,图像中物体是猫还是狗这种类别名就是典型的离散标签。像素值是特征而非标签,参数数量和样本个数都是训练过程的配置信息,与标签无关。

Q6. 下列属于无监督学习算法的有哪些?

多选题 · mid

  • A.K 均值聚类算法← 正确答案
  • B.主成分分析方法← 正确答案
  • C.线性回归建模
  • D.逻辑回归建模

答案:AB。K-Means 聚类自动把无标签数据分成 K 簇,PCA 降维在无标签数据上找主要变差方向,两者都是无监督学习。线性回归和逻辑回归必须有标签来“对答案”,属于监督学习。

Q7. 关于监督学习与无监督学习的对比,下列说法正确的有哪些?

多选题 · hard

  • A.监督学习需要人工标注标签← 正确答案
  • B.无监督学习可以发现未知类别← 正确答案
  • C.监督学习永远优于无监督学习
  • D.两者可以结合成半监督学习← 正确答案

答案:ABD。监督学习依赖人工标签,正确;无监督学习不预设类别,能发现数据中的新结构,正确;C 过于绝对,无监督在探索和预训练中优势显著,错误;半监督正是少量标签配合大量无标签数据的混合策略,正确。A/B/D 构成对两大范式较完整的认知。

Q8. 训练集 $T = \{(x_i, y_i)\}_{i=1}^{m}$ 中的 $y_i$ 表示什么?

单选题 · mid

  • A.第 i 个样本的标签← 正确答案
  • B.第 i 个样本的特征
  • C.模型的权重系数
  • D.聚类中心的编号

答案:A。在配对符号 $(x_i, y_i)$ 中,$x_i$ 是特征(衣服的颜色、尺寸),$y_i$ 是标签(“连衣裙”“垃圾邮件”)。权重系数是模型参数,聚类中心编号属于无监督概念,都不在这个监督训练集的记号里。

Q9. 半监督学习的核心思想是什么?

单选题 · hard

  • A.少量标签配合大规模无标签数据← 正确答案
  • B.只使用无标签数据进行训练
  • C.人为构造错误的标签数据
  • D.使用无梯度的优化方法

答案:A。半监督学习利用“少量带标签样本 + 大量无标签样本”:先用无标签数据学结构或特征,再用少量标签校准方向,是成本与效果的折中方案。B 是无监督,C 是主动学习制造噪声,D 与半监督无关。

Q10. 关于 K-Means 算法的说法,正确的有哪些?

多选题 · hard

  • A.K 值需要事先指定← 正确答案
  • B.对初始质心位置敏感← 正确答案
  • C.保证收敛到全局最优解
  • D.适用于有标签数据的分类

答案:AB。K-Means 的 K 必须由使用者预先给定,正确;它从随机质心开始,不同初始位置可能得到不同聚类结果,正确;目标函数非凸,只能保证收敛到局部最优而非全局最优,C 错误;K-Means 处理的是无标签数据,D 错误。