🤖机器学习

type
status
date
slug
summary
tags
category
icon
password

知识整体框架

判别式人工智能概述

判别式人工智能(discriminative AI)可用于分类预测,其核心在于“Functions Describe the World”。
给定输入 (features,即“特征”),模型输出 (label,即“标签”)。我们假设存在某个未知函数 ,它描述了从输入到输出的映射:
机器学习的任务:用数据去逼近这个未知函数 (在标记数据集上训练),得到一个可计算、可泛化(generalize,即对没见过的新样本也有效)的近似函数
  • 典型例子
    • 垃圾邮件过滤
      • 输入:一封邮件的特征(发件人、关键词、可疑链接等)
      • 输出:垃圾邮件 (1) / 非垃圾邮件 (0)
    • 语音识别
      • 输入:一段语音的声学特征
      • 输出:文字序列
    • 机器翻译
      • 输入:英文句子
      • 输出:中文句子
以上例子都属于监督学习(supervised learning):我们有“输入-输出成对”的样本来学习映射。

监督学习概述

监督学习假设我们有一组带标签的数据:
其中 是第 个输入样本的特征向量; 是对应的正确答案(标签)。
目标:学习一个函数 ,使得
用学到的 ,我们就可以在新样本上做预测
  • 监督学习的两大典型任务
      1. 分类(classification)→ 预测离散的类别标签。
        1. e.g. 会下雨 / 不会下雨;批准贷款 / 拒绝贷款。
      1. 回归(regression)→ 预测连续的数值输出。
        1. e.g. 给定广告投放额,预测销售额。
  • 二者的本质区别:
    • 分类输出是离散的(例如 );
    • 回归输出是实数值(例如 元的销售额)。
分类的目标是:根据输入特征,把样本判到某个类别。
例子:根据湿度和气压判断“是否会下雨”。
可视化时,我们把每一天的湿度和气压画成一个点,并用颜色标记当天是否下雨。任务就变成:找到一种规则,能把“下雨”的点和“没下雨”的点分开。
这种“把平面切成两块”的东西,叫做决策边界(decision boundary)。决策边界一侧是“下雨”,另一侧“没下雨”。

KNN

K 最近邻算法(k-nearest neighbors, KNN)是最直接的分类方法之一。它不试图学出一个显式的公式,而是用“相似样本的多数意见”来进行分类。

基本思想

对于一个待分类的样本
  1. 计算它与所有训练样本之间的距离;
  1. 找出距离它最近的 个训练样本;
  1. 查看这 个邻居的标签;
  1. 采用投票(多数表决)决定 的预测类别:将待识别的样本分类为距离它最近的 个数据点中最普遍的类别。
  • e.g. 如果是二分类(例如“下雨 = ” vs “不下雨 = ”):
    • 若最近的 个邻居中有 个是“”, 个是“”,则预测结果为
🖊️
对于回归任务,也可使用 KNN:对最近 个邻居的目标值做平均,得到一个连续的预测数值。

距离度量

“最近”依赖于“距离”的定义,即距离度量(distance metric)。常见的距离包括:
  • 欧氏距离(Euclidean distance):两点之间的直线距离
    • 曼哈顿距离(Manhattan distance):坐标轴方向的距离之和
      不同的距离度量会导致“谁是最近邻”的判定发生变化。
      🖊️
      如果不同特征的量纲差别很大(例如一个特征是“身高 (厘米)”,另一个特征是“收入 (元/年)”),大尺度特征会主导距离,因此常常需要特征缩放(feature scaling)或标准化(standardization),即把不同特征调整到类似的范围。

      算法步骤

      1. 设定邻居数量 ,作为超参数(hyperparameter)。
      1. 对每一个需要分类的新样本
        1. 计算 与训练集中所有样本的距离;
        2. 选出距离最小的 个样本;
        3. 对于分类问题:统计这 个样本里每个类别出现的次数,取次数最多的类别作为预测。 (对于回归问题:取这 个样本目标值的平均值作为预测。)

      超参数 的影响

      • 时,预测只看最近的一个邻居。
        • 优点:对局部变化非常敏感。
        • 缺点:对噪声也非常敏感,容易过拟合(overfitting),即模型只记住训练点,不具备泛化能力。
      • 取较大值时,
        • 预测会更加平滑、不那么容易被个别噪声点误导,
        • 但可能忽略细节,出现欠拟合(underfitting),即模型太粗糙,无法刻画真实结构。
      通常 不是拍脑袋决定的,而是通过验证集(validation set)或交叉验证(cross-validation)来选择,使得模型在“没见过的数据”上表现更好。
      🖊️

      理论解释

      在统计学习理论中,-近邻分类器(1-NN)在样本数趋于无穷大时,其分类误差率有上界,最多是贝叶斯最优分类器(理论上最好的分类器)的两倍。这意味着最近邻法并不是随意投票,而是有统计一致性(consistency)的基础:在数据充分多时,它可以逼近最优决策边界。

      线性分类与感知机模型

      与 KNN 这种非参数方法不同,感知机模型(perceptron)/ 线性回归(Linear Regression)试图直接学习出一条分隔不同类别的线——在高维空间中是超平面(hyperplane),即画出决策边界(decision boundary)。

      模型形式

      我们把输入向量写成 ,其中第一个分量 1 对应偏置项(bias),相当于允许分界线不必穿过原点;把可学习的权重向量写成
      感知机的打分函数(score)是内积
      预测规则是
      这条决策边界是 ,在二维空间中是一条直线,在三维空间中是一个平面,在更高维度中是一个超平面。

      感知机的学习规则

      感知机通过逐个样本地更新权重,让模型逐渐学会把正类和负类分开。
      对训练样本 ,其中 ,当前预测为 。对每一维 ,更新:
      • 是学习率(learning rate),控制每次更新的步幅。
      • 若预测正确,则 ,不更新。
      • 若预测错误(比如实际的 但估计出的 ),则 为正,权重会沿着 的方向增加,使下次更可能输出
      来源:Cornell CS4780
      来源:Cornell CS4780
      🖊️

      感知机算法的正确性(收敛性简述)

      感知机收敛定理(Perceptron Convergence Theorem):如果训练数据是线性可分的(linearly separable),也就是说,存在某个超平面能把正类和负类完全分开,那么感知机学习算法会在有限步内找到一组权重,使得所有训练样本都被正确分类。
      1. 当分类错误时,权重 会被“往正确类别的方向”推。
      1. 在线性可分的情况下,总有一个“正确答案向量” 能完美分开正负类。
      1. 经过有限次修正后, 的方向会逐渐靠近,直到不再出现错误分类。
      因此感知机不是“碰运气”,而是对线性可分数据有明确的收敛保证。

      代码实现:手写实现感知机模型

      损失函数与梯度下降

      机器学习训练的基本范式通常是:
      1. 定义一个损失函数(loss function)衡量预测与真实答案的差距。
      1. 通过优化(optimization)最小化该损失函数。

      常见损失函数

      1. 0-1 损失(0-1 loss)
          • 优点:直接体现“对 / 错”。
          • 缺点:不可导(不光滑),很难用梯度法优化。
      1. L1 损失(绝对值损失,L1 loss)
        1. 对离群点(outlier,极端值)更稳健。
      1. L2 损失(二次损失,L2 / squared loss)
        1. 对大偏差惩罚更重,常见于回归与线性模型;它是可导的、光滑的,适合用梯度优化。

      从损失函数到梯度下降

      梯度(gradient)是损失函数对参数的偏导数组成的向量,表示“最陡峭的上升方向”。
      梯度下降(gradient descent)沿着负梯度方向前进,从而减少损失。
      以感知机为例,若我们(临时)把 $\hat{y}$ 当成一个实值输出,并考虑二次损失
      则对 的偏导为
      梯度下降的更新公式为
      这与感知机的更新公式一致(忽略硬阈值带来的不可导问题)。
      因此,感知机学习规则可以理解为随机梯度下降(stochastic gradient descent, SGD)的一种具体形式。

      三种常见的梯度下降方式

      1. 批量梯度下降(batch gradient descent)
          • 每次更新前,用“整批训练数据”的平均梯度。
          • 优点:更新方向稳定。
          • 缺点:当训练集很大时,计算代价高。
      1. 随机梯度下降(stochastic gradient descent, SGD)
          • 每次只用一个样本更新一次参数。
          • 优点:更新快,适合大规模数据。
          • 缺点:更新方向噪声大,参数会“抖动”。
      1. 小批量梯度下降(mini-batch gradient descent)
          • 每次用一小批(如 32、64 个)样本计算平均梯度。
          • 在计算效率与稳定性之间折中,是现代深度学习训练的主流方式。

      Logistic 回归

      线性分类器的硬阈值只能告诉我们“属于 0 还是 1”,但不能告诉我们“有多大把握”。Logistic 回归(logistic regression)把输出解释为概率。

      Sigmoid / Logistic 函数

      给定打分 ,Logistic 回归使用 Sigmoid 函数:
      预测正类(例如 )的概率为
      很大时,$\hat{p}\approx 1$;当它很小时,$\hat{p}\approx 0$。
      这就把一个线性打分变成了“概率”解释。

      交叉熵损失

      Logistic 回归用交叉熵损失(cross-entropy loss)来衡量概率预测和真实标签之间的差距:
      这个损失函数有两个重要性质:
      1. 当真实标签是 1 时,如果模型给的概率 非常接近 ,损失就非常小;如果 很小(自信但错),惩罚会非常大。
      1. 它是关于参数 凸函数(convex function),这意味着我们在优化时不会陷入局部极小值陷阱:用梯度下降可以找到全局最优解。

      梯度更新(随机梯度下降形式)

      对每个参数 ,交叉熵损失的梯度可以写成
      因此更新规则为
      这与感知机的规则形式非常类似,区别在于:
      • 感知机的 是 0/1 的硬判定;
      • Logistic 回归的 是平滑的概率,允许使用可导的损失进行优化。

      决策边界与可分性

      在二维平面上,Logistic 回归的决策边界仍然是 这条直线。
      与感知机的不同不在于边界的形状,而在于:
      • Logistic 回归不仅给出类别,还给出“多大概率是正类”;
      • Logistic 回归的学习是解一个凸优化问题,训练稳定、可解释为极大似然估计(maximum likelihood estimation)。

      支持向量机

      感知机和 Logistic 回归都能找一条线把数据分开,但它们并不关心分得“多安全”
      支持向量机(Support Vector Machine, SVM)在意的是:不但要分开,还要分得尽可能宽

      几何直觉:间隔

      设想我们有一条分界线把蓝点(正类)和红点(负类)分开。
      我们衡量这条线到最近的蓝点的距离和到最近的红点的距离,取最小者,这个距离叫做间隔(margin)支持向量(support vectors)是那些离分界线最近的训练样本。SVM 要选择的分界线是:让这个最小距离(间隔)最大的那一条线。这叫最大间隔分离器(maximum-margin separator)
      用数学的标准硬间隔 SVM 形式(线性可分情形)可以写成:
      含义:
      • 约束 确保所有样本都被正确分到对应的一侧,并且离边界至少有距离 1 的“安全边界”。
      • 目标 等价于最大化间隔。 换句话说,向量 越“短”,边界越不陡,间隔越大。
      重点公式(硬间隔 SVM 优化目标)

      为什么最大间隔是合理的

      1. 如果一条边界线离所有点都很远(间隔大),那么即使未来的新样本有一点噪声,也更可能仍被正确分类。
        1. 这可以理解为“鲁棒性”(robustness,抗扰动能力)。
      1. 对于线性可分数据,感知机可能找到任意一条能分开的线;SVM 会挑“最稳”的那条,也就是几何意义上“最安全”的分界线。
      这给了 SVM 一个几何上的最优性定义,使得它不仅能分开训练集,而且在理论上具有更好的泛化上界(generalization bound,泛化误差的上限)。

      处理非线性可分数据:核函数

      当数据不是线性可分时(例如正类是内圈、负类是外圈的同心圆),二维平面上一条直线无法分开它们。
      SVM 使用核函数(kernel function)把数据隐式映射到更高维特征空间,在那个高维空间里,它们常常是线性可分的。
      • 我们并不显式计算“高维坐标”。
      • 取而代之的是,用核函数 去计算高维空间中内积
      • 这样,算法的数学形式几乎不变,但我们等价地在高维里做了最大间隔分割。
      常见核函数包括线性核、多项式核、多数实际任务中非常常用的 RBF 核(高斯核)。

      决策树

      决策树(decision tree)是一种可解释的模型:它像一连串“如果……那么……”的规则,逐步把样本分到不同的叶子节点(leaf nodes),最后给出分类或预测。
      分类回归树(Classification And Regression Tree, CART)算法是一种决策树分类方法。CART 每一个节点上都采用二分法,内部节点只能根据属性进行二分,生成的树一定是二叉树。
      CART 算法既可以用分类任务,也可用于回归任务。下面介绍 CART 算法使用 Gini 指数最小化来生成分类树的算法。

      基本思路

      1. 选一个特征,按某个阈值或类别把数据分成两组或多组。例如:
          • “申请人是否有工作?”
          • “申请人名下是否有房产?”
          • “信用评级是‘非常好’还是‘一般’?”
      1. 对每一组,再继续选择最能区分输出标签的特征并划分。
      1. 重复,直到:
          • 该节点内部几乎都是同一类(“纯”);
          • 或树的深度达到上限;
          • 或样本太少,继续划分没有意义。
      最终形成的是一棵树:从(root)往下走的每条路径都是一串判定条件,叶子节点给出最终的类别决策(如“批准贷款”或“拒绝贷款”)。

      节点纯度与基尼系数

      在训练过程中,决策树需要选择“在哪个特征上切分最好”。“最好”的直观含义是:切分后,子节点里的样本最好“很单一”(纯),即大部分样本属于同一类。基尼系数(Gini index)衡量一个节点内的不纯度(impurity),可以反映随机选择两个样本,其类别不一致的概率。
      若节点 中类别 的比例是 ,则
      • 如果节点里全是同一类,则某个 、其他 ,于是 ,表示完全纯。
      • 如果节点里类别均匀混合(例如二分类时正负各一半),则 较大,表示很不纯。
      在某个候选特征上切分后,我们会得到若干子节点。计算每个子节点的 ,然后对它们做加权平均(权重是各子节点的样本数量占比),它体现的是经过特征分类后的样本被分错的概率。比如,在节点 上按照特征 将样本划分成 两部分,那么加权 Gini 为:
      我们选取加权 Gini 最小的特征阈值组合作为当前节点的最佳划分。

      构建贷款审批树的例子

      • 特征示例:
        • 是否有工作(是/否)
        • 是否有房产(是/否)
        • 信誉等级(“一般”“好”“非常好”)
        • 最终结果(批准/拒绝)
      • 过程:
          1. 尝试按“是否有工作”划分,计算划分后两组(有/无工作)中“批准 vs 拒绝”的 Gini,并计算加权平均。
          1. 尝试按“是否有房产”划分,做同样的计算。
          1. 尝试按“信誉等级”划分(可能是多分支划分),同样计算加权 Gini。
          1. 选择加权 Gini 最小的划分方法作为根节点。
          继续在子节点上重复该过程,直到满足停止条件(如节点纯度高、深度到上限等)。

      防止过拟合:停止条件 / 剪枝

      单棵决策树可能会过拟合——也就是说,它可能会把训练数据切分到极度细碎的程度,只是为了“记住”每一个训练样本的细节。
      • 常见的防止过拟合的做法:
        • 限制树的最大深度(max_depth)。
        • 要求一个节点必须包含足够多的样本才允许继续切分(min_samples_split)。
        • 在训练完一棵大树后再进行“剪枝(pruning)”,即把对泛化无益的分支剪掉。
        • 这些技巧的目标是控制模型复杂度,提升泛化性能(generalization performance)。

      代码实现:使用 sklearn 实现决策树算法

      代码实现:手写代码构建决策树

      notion image
      题目:W4-ML-HW
      答案:W4-ML-HW 工具函数
      答案:W4-ML-HW build_tree

      集成学习与随机森林

      即使一棵精心调整过的树也可能不够稳健。集成学习(ensemble methods)通过“多个模型投票”来获得更可靠的结果。

      基本思想

      1. 训练许多“弱相关”的模型(通常是很多棵不同的决策树)。
      1. 在预测时,把这些模型的结果合并。
      合并可以有两种典型方式:
      • 硬投票(hard vote / majority vote):每棵树各自给出一个类别,最终预测是票数最多的类别。
      • 软投票(soft vote):每棵树给出“属于正类的概率”,然后把这些概率平均,再根据平均概率做决策。
      多数情况下,软投票能更好地利用模型的置信度信息。

      随机森林

      随机森林(random forest)是最常见的树模型集成方法。核心有两点随机性:
      1. 自助采样(bootstrapping)/ 有放回抽样
          • 对原始训练集做“有放回”的随机抽样,得到很多“子训练集”。
          • 每个子训练集都用来训练一棵决策树。
          • 因为每棵树看到的训练数据不完全相同,树与树之间会有所差异。
      1. 特征子采样(feature subsampling)
          • 在每个树的每个分裂节点处,只允许它在一个随机挑选出的特征子集里寻找最佳划分。
          • 这进一步鼓励不同的树“看问题的角度”不同。
      通过这两层随机性,随机森林中的各棵树之间不会太“雷同”。
      多个差异化的弱学习器(weak learners)投票,往往比任何一棵单树更稳健,泛化误差更低。
      这就是**Bagging(Bootstrap Aggregating)**思想的典型实践:
      • Bootstrap 产生多个样本子集;
      • 各子集上分别训练;
      • 最后 Aggregating(聚合)输出。

      回归(regression)

      回归任务预测的是连续值,而非离散标签。
      典型例子:
      • 输入:广告投放预算(例如 TV、Radio、Social Media 的投入额)。
      • 输出:下一周的销售额(一个实数)。
      最经典的回归模型是线性回归(linear regression)
      训练线性回归的常见做法是最小化 L2 损失(又叫“最小二乘”,least squares):
      线性回归给出的往往是一条“总体趋势线”,而不是一个硬性的类别边界。回归问题关心的是“预测值有多接近真实数值”,而不是“分到对的那一类”。

      训练目标、过拟合与正则化

      机器学习训练的目标

      在监督学习中,我们往往定义一个“代价函数”(cost function):
      • :模型在训练数据上的预测误差(比如交叉熵损失或平方损失)。
      • :模型复杂度的度量,例如权重向量的范数大小、树的深度等。
      • :正则化系数(regularization strength),用来平衡“拟合误差”和“复杂度惩罚”。
      重点公式(正则化思想)

      过拟合(overfitting)

      过拟合指:模型几乎“背住”训练集的细节噪声,导致在新数据上表现不佳。
      现象举例:
      • 在分类里,决策边界被扭曲得非常复杂,只是为了把训练集里每一个点都分对。
      • 在回归里,拟合曲线疯狂弯曲,只为了通过所有训练点,而没有体现真实的总体趋势。
      过拟合意味着:模型学到的不是“普遍规律”,而是“训练集中偶然出现的细枝末节”。

      正则化(regularization)

      正则化强迫模型“不要太复杂”。
      直觉:我们不只奖励在训练集上表现好,还额外惩罚过度复杂的解。
      好处:
      • 避免模型被少量异常点“牵着走”;
      • 提升泛化能力(generalization):即在未见过样本上的表现。
      常见的正则化方式包括:
      • L2 正则化(也叫权重衰减 weight decay):在 cost 里加上
      • 限制树的最大深度、最小样本数等结构性约束(对决策树 / 随机森林而言)。

      模型评估与交叉验证

      训练一个模型并在训练数据上表现很好,并不代表它真的“学懂了模式”。
      我们必须在未被用来训练的数据上评估它。

      保留法 / 留出法(holdout)

      1. 将原始数据集切分成两部分:训练集和测试集。
      1. 用训练集拟合模型。
      1. 用测试集评估模型表现。
      优点:实现简单。
      缺点:测试集那一部分数据没有参与训练,等于少用了一部分数据来学习。

      k 折交叉验证(k-fold cross-validation)

      1. 把数据平均分成 份(称为 个“折”)。
      1. 轮训练+评估:
          • 每一轮拿其中 1 折当测试集,其余 折当训练集;
          • 记录测试表现。
      1. 最终报告 次测试表现的平均值。
      好处:
      • 每个样本都在某一轮中扮演过“测试集”,也在其他轮扮演过“训练集”,充分利用了数据;
      • 评估结果更稳定,不太依赖于某一次偶然的划分。
      折数 的影响:
      • 小:训练数据更少,评估方差更大。
      • 大(极端是留一法 Leave-One-Out CV):训练数据几乎是全量,但计算量高。
      交叉验证不仅用来评估模型,还常用于调参(hyperparameter tuning),例如:
      • KNN 中 的大小;
      • Logistic 回归的正则化强度;
      • 决策树的最大深度;
      • 随机森林的树的数量和特征子采样比例。

      分类模型的评估指标

      单一的“准确率”(accuracy)往往不够,尤其是在类别不平衡(class imbalance)的任务中。我们需要更细的指标。

      混淆矩阵(confusion matrix)

      针对二分类任务(正类 = 1,负类 = 0):
      • TP(True Positive)真阳性:真实为 1,预测为 1
      • FP(False Positive)假阳性 / 误报:真实为 0,却预测为 1
      • TN(True Negative)真阴性:真实为 0,预测为 0
      • FN(False Negative)假阴性 / 漏报:真实为 1,却预测为 0
      基于这四个数,可以定义以下指标:

      召回率(recall / sensitivity / true positive rate, TPR)

      解释:在所有真正为正类的样本中,有多大比例被模型成功检出。
      在疾病筛查中,召回率高意味着“很少漏诊真正的病人”。

      精确率(precision / positive predictive value)

      解释:在所有被模型判为正类的样本中,实际真的正类占多大比例。
      在垃圾邮件过滤中,精确率高意味着“很少把正常邮件误杀成垃圾邮件”。

      F1 分数(F1 score)

      F1 是精确率和召回率的调和平均(harmonic mean):
      F1 越高,表示模型既保持了不错的召回率,也保持了不错的精确率。
      这在正负样本极度不平衡的任务中非常有用。

      ROC 曲线(ROC curve, Receiver Operating Characteristic)

      很多分类器(例如 Logistic 回归或带概率输出的 SVM)并不是直接输出 0/1,而是输出一个分数概率
      我们可以选择一个阈值 $\tau$:
      • 若分数 ,预测为正类;
      • 若分数 ,预测为负类。
      不同的 会产生不同的 (TP, FP, TN, FN)。
      ROC 曲线以:
      • 横轴为假阳性率(FPR,false positive rate)
        • 纵轴为真阳性率(TPR,也就是 Recall)
        把所有可能阈值下的点连接起来,就得到 ROC 曲线。

        AUC(Area Under the ROC Curve)

        AUC 是 ROC 曲线下的面积:
        • 若 AUC 接近 1,表示模型几乎总能把正类的分数排在负类前面。
        • 若 AUC 约为 0.5,说明模型几乎等同于随机猜测。
        AUC 的优势是:它不依赖于固定的单一阈值,而是综合考察了所有可能阈值下的表现。

        无监督学习(unsupervised learning)

        目前为止,我们一直假设训练数据有标签(“下雨/不下雨”“批准/拒绝”)。
        无监督学习放弃了这个假设:我们只有输入特征,没有标签。

        定义

        无监督学习的目标是在无标签的数据中自动发现结构和模式。
        常见任务包括:
        • 聚类(clustering):把相似的样本分到同一组。
        • 降维(dimensionality reduction):把高维数据映射到低维空间,方便可视化或后续建模。
        常见应用场景:
        • 基因表达分析(发现功能相近的基因群)
        • 医学影像分析(把相似的区域聚成一类)
        • 市场细分 / 用户画像(把用户自动分成若干行为类型)
        • 社交网络分析(发现社群结构)

        K 均值聚类(k-means clustering)

        K 均值聚类试图把数据分成 $k$ 个簇(clusters),并给出每个簇的质心(centroid),即该簇样本的平均位置。
        算法步骤如下(迭代进行):
        1. 初始化(Initialization)
          1. 随机选择 个初始质心。
            这些质心可以是随机挑选的 个样本点,或是随机生成的点。
        1. 分配步骤(Assignment step)
          1. 对于每个样本点 ,计算它到每个质心的距离(通常是欧氏距离)。
            分配给“最近的”那个质心所在的簇。
            这样,所有点被划分成 组。
        1. 更新步骤(Update step)
          1. 对于每一组簇,把该簇内所有样本的坐标取平均,得到新的质心位置。
            也就是说,每个簇的质心被移动到当前簇点的平均值处。
        1. 重复
          1. 回到分配步骤,再次把每个点分配给最近的质心,然后更新质心。
            这个循环会不断进行,直到质心几乎不再移动,或者簇分配不再变化。
        可以把它理解为:“分配-平均-再分配-再平均”,直到稳定。
        数学上,K 均值在最小化如下目标函数:
        其中 是第 个簇的质心。
        该目标 是“簇内平方误差和”(within-cluster sum of squares)。
        K 均值的 Assignment stepUpdate step 轮流进行,会让 单调不增(不会上升)。因此算法必然收敛到某个稳定解(局部最优)。
        这给了 K 均值一个简单但重要的正确性保证:它不是随意摆点,而是在逐步下降一个明确的目标函数。

        总结

        • 监督学习:利用带标签的数据来学习一个输入到输出的映射函数。
          • 分类(classification):输出离散标签,常见方法包括 K 最近邻(KNN)、感知机(Perceptron)、Logistic 回归、支持向量机(SVM)、决策树、随机森林。
          • 回归(regression):输出连续数值,线性回归是典型例子。
        • 模型训练依赖损失函数(loss)和优化(optimization)
          • 感知机更新规则可被视为随机梯度下降。
          • Logistic 回归使用 Sigmoid 把线性函数转成概率,并用交叉熵损失;其优化问题是凸的。
          • SVM 通过最大化间隔选择“最安全”的分割超平面,并能通过核技巧处理非线性可分情况。
          • 决策树用特征划分 + 基尼系数逐步生成 if-then 规则;随机森林用多棵树的集成来提升鲁棒性。
        过拟合(overfitting)是核心风险:模型可能只是记住训练集,而没有学到泛化规律。
        正则化(regularization)通过在代价函数中惩罚复杂度,抑制过拟合,从而提升泛化性能。
        • 模型评估不能只看训练集。
          • 使用保留法或 k 折交叉验证来评估泛化能力。
          • 对分类模型,要通过混淆矩阵进一步计算召回率、精确率、F1、ROC、AUC 等指标,而不仅仅是准确率。
        • 无监督学习即使没有标签,也能发现结构。
          • K 均值聚类通过“分配-更新-再分配-再更新”最小化簇内平方误差,从而把数据自动分成若干簇。
        上一篇
        优化
        下一篇
        神经网络 I
        Loading...