AI 1000问:机器学习算法、优化与模型评估

本篇对应 AI 全景题库中的监督学习算法、模型评估、优化和无监督学习问题。核心原则是:先明确数据生成过程和业务代价,再选模型与指标;不要只根据单个准确率或排行榜分数判断模型好坏。

一、监督学习算法

Q1. 线性回归为什么叫“线性”?数据不是直线形状还能用吗?

答案: “线性”主要指模型对参数是线性的,而不一定要求输入与输出在原始坐标中呈直线关系。模型通常写作:

y_hat = w0 + w1*x1 + ... + wp*xp

若加入多项式特征 x、x²、x³,模型仍然对参数 w 线性,但能拟合弯曲关系。也可使用样条基函数或对数变换。

例子: y = w0 + w1x + w2x² 仍是线性回归(对 w0/w1/w2 线性),但曲线对 x 非线性。

注意: 高阶多项式容易过拟合且外推不稳定;必须用验证集比较复杂度,并检查残差、异常值和特征尺度。

Q2. 逻辑回归名字带“回归”,为什么用于分类?它回归的是什么?

答案: 逻辑回归先计算线性得分 z = wᵀx+b,再用 Sigmoid 将得分映射到 0 到 1,估计正类概率:

P(y=1|x) = 1 / (1 + exp(-(w^T x + b)))

它建模的是对数几率(log-odds)与输入特征的线性关系:

log(p/(1-p)) = w^T x + b

最后通过阈值把概率转成类别。默认 0.5 不是永远最优阈值,应根据误报/漏报成本、验证集和校准情况决定。

Q3. 决策树怎样选择分裂特征?

答案: 决策树在每个节点枚举候选特征和切分点,选择能最大程度降低子节点不纯度的切分。分类常用 Gini 或 Entropy,回归常用平方误差/方差下降。

以 Gini 为例:

Gini = 1 - Σ(p_k^2)
Gain = Gini(parent) - weighted_Gini(children)

切分后子节点类别越集中,不纯度越低。树容易过拟合,通常通过 max_depth、min_samples_leaf、剪枝和交叉验证控制复杂度。

Q4. SVM 的“最大间隔”是什么意思?为什么有帮助?

答案: SVM 寻找一个分类超平面,使两类样本中距离边界最近的样本(支持向量)到边界的最小间隔尽可能大。较大的间隔通常有助于提升泛化能力。

软间隔 SVM 允许少量样本违反间隔约束,通过惩罚参数 C 平衡“间隔宽度”和“训练错误”;核函数可把输入映射到更高维特征空间,形成非线性决策边界。

工程边界: 特征通常需要标准化;核 SVM 在大样本上的训练成本可能较高;支持向量机输出的分数不天然等于校准概率。

Q5. k-NN 为什么叫“懒学习”?它适合什么场景?

答案: k-NN 在训练阶段几乎不拟合参数,而是保存训练样本;预测时计算新样本与训练样本的距离,取最近的 k 个邻居投票或平均,因此称为“懒学习”。

优点:直观、非参数、能形成非线性边界;缺点:预测成本高、占内存、对特征尺度和距离度量敏感,高维空间中距离区分度可能下降。

实践中需标准化特征、选择距离度量、通过验证集选择 k,并评估索引结构或近似近邻以降低推理成本。

二、模型评估与分类指标

Q6. Accuracy 什么时候会骗人?

答案: 类别极不平衡时,Accuracy 可能很高但模型完全没有识别少数类。例如 10,000 条样本中只有 100 条正类,模型把所有样本都预测为负类,Accuracy 仍是 99%,但 Recall 为 0。

因此应根据业务代价选择指标:

  • 漏掉正类代价高:重点看 Recall、FN 和 PR-AUC。
  • 误报代价高:重点看 Precision、FP。
  • 需要综合权衡:看 F1/Fβ、混淆矩阵和阈值曲线。
  • 还要检查样本分组、时间切分和外部验证集,避免评估泄漏。

Q7. Precision 和 Recall 有什么区别?搜索引擎更关心哪个?

答案:

Precision = TP / (TP + FP)
Recall    = TP / (TP + FN)
  • Precision:所有被模型判为正类的样本中,真正为正的比例;回答“报出来的结果有多少是真的?”
  • Recall:所有真实正类样本中,被模型找出来的比例;回答“真正的正类找回了多少?”

搜索引擎通常同时关注两者:用户不希望结果无关(Precision),也不希望重要结果被漏掉(Recall)。具体权重取决于搜索阶段:粗召回阶段通常优先 Recall,精排阶段再提高 Precision。

Q8. F1 为什么是调和平均?什么时候使用 F1?

答案: F1 是 Precision 和 Recall 的调和平均:

F1 = 2 * Precision * Recall / (Precision + Recall)

调和平均会对较小的一项更敏感;如果 Precision 很高但 Recall 很低,F1 不会被高 Precision 轻易“拉高”。适用于希望同时兼顾误报与漏报、且需要单一汇总指标的场景。

若业务更重视 Recall,可用 Fβ(β>1);更重视 Precision,可用 Fβ(β<1)。类别不平衡时应同时报告每类指标、Macro-F1/Weighted-F1 和混淆矩阵,不能只报一个 F1。

Q9. ROC 曲线和 AUC 表示什么?AUC=0.5/1.0 怎么理解?

答案: ROC 曲线以不同分类阈值下的 False Positive Rate(FPR)为横轴、True Positive Rate(TPR/Recall)为纵轴。AUC 是 ROC 曲线下面积,衡量模型把随机正样本排在随机负样本前面的排序能力。

  • AUC = 0.5:排序能力接近随机。
  • AUC = 1.0:在评估样本上正负样本完全可分。
  • AUC < 0.5:可能模型方向反了,也可能数据/标签定义有问题。

AUC 衡量排序,不代表某个固定阈值下的准确率,也不保证概率校准。类别极不平衡时,PR 曲线和 PR-AUC 往往更能反映少数类检出能力。

三、优化方法

Q10. 梯度下降为什么沿梯度反方向走?

答案: 梯度 ∇J 指向函数局部增长最快的方向,因此沿负梯度方向做足够小的步长更新,通常能使目标函数下降:

theta_(t+1) = theta_t - learning_rate * gradient(J(theta_t))

学习率决定步长。梯度下降不是“保证找到全局最小值”的魔法:非凸目标可能有鞍点、平坦区域和局部极小值,实际效果依赖初始化、优化器、学习率和数据。

Q11. 学习率太大或太小会怎样?自适应学习率是什么?

答案:

  • 太大:更新跨过最优区域,损失震荡甚至发散。
  • 太小:收敛缓慢,可能长时间停在平坦区域。
  • 自适应方法:AdaGrad、RMSProp、Adam 等根据梯度历史调整每个参数的有效步长。

Adam 常用于深度学习,但不意味着总能优于 SGD;最终应看验证集性能、收敛稳定性和目标任务。学习率 warmup、scheduler、weight decay 和梯度裁剪也常用于稳定训练。

Q12. Batch GD、SGD 和 Mini-batch SGD 有什么区别?

答案:

  • Batch GD:每次用全部训练样本计算梯度,梯度较稳定,但大数据集计算和内存成本高。
  • SGD:每次用一个样本更新,计算便宜但梯度噪声大,更新方向波动明显。
  • Mini-batch SGD:每次使用一小批样本,是现代深度学习常用折中,适合 GPU 并行计算。

小批量大小影响吞吐、梯度噪声、内存占用和泛化;应结合硬件、模型和数据测量选择,而不是固定认为越大越好。

Q13. 局部最优和全局最优有什么区别?梯度下降会被困住吗?

答案: 全局最优是在整个可行域上目标函数最低的点;局部最优只是在其邻域内最低。非凸优化还可能出现鞍点(某些方向上升、另一些方向下降)和平台区。

深度网络的优化景观复杂,但“训练失败就是陷入局部最优”通常过于简单。也可能是梯度消失/爆炸、学习率不合适、数据归一化不当、模型/损失设计错误或优化时间不足。常见应对包括随机初始化、多次训练、学习率调度、归一化、残差连接和自适应优化器。

四、无监督学习

Q14. K-means 怎样聚类?K 代表什么?

答案: K-means 将样本分成 K 个簇,目标是最小化样本到所属簇中心的平方距离和(within-cluster sum of squares)。基本流程:

  1. 选择 K 个初始中心(常用 k-means++)。
  2. 将每个样本分配给最近中心。
  3. 对每个簇计算样本均值,更新中心。
  4. 重复分配和更新,直到中心/标签变化很小或达到迭代上限。

K 是簇数,需要由任务先验、轮廓系数、肘部法、稳定性和业务解释共同判断。K-means 假设欧氏距离下簇大致紧凑,难以处理不同密度、非球形簇和大量离群点。

Q15. K-means 初始质心为什么重要?如何选择?

答案: K-means 的目标函数非凸,不同初始化可能收敛到不同局部解。随机选择的中心若过于接近或落在离群区域,可能得到较差聚类。

常用 k-means++:先随机选一个中心,再按样本到最近中心的平方距离加权抽取后续中心,使初始中心分散一些。实际还应多次随机重启,比较 inertia、轮廓系数和聚类稳定性;若业务簇形状不适合 K-means,可考虑 DBSCAN、HDBSCAN 或层次聚类。

Q16. PCA 为什么寻找方差最大的方向?这和保留信息有什么关系?

答案: PCA(主成分分析)寻找一组互相正交的方向,使数据投影到前几个方向后的方差最大。在线性重构误差(平方误差)意义下,保留最大的几个主成分等价于尽量保留数据的主要变化结构。

流程通常是中心化(常见还需标准化)→ 协方差矩阵/奇异值分解 → 按特征值大小排序 → 取前 k 个主成分 → 投影。

重要边界: 方差大不一定代表业务信息重要;低方差特征也可能承载关键故障信号。PCA 是无监督线性降维,不能保证保留与标签最相关的信息。标准化参数只能在训练集拟合,再应用于验证/测试集,避免数据泄漏。

相关专题与实验