查看全课大纲(第 33 / 82 节)
- 1.函数与数据泛化
- 2.向量:从几何直觉到高维空间
- 3.矩阵与张量
- 4.特征值与特征向量:矩阵变换的不动方向
- 5.凸函数:从向量求导的矩阵记号到好优化的函数形状
- 6.概率与统计:机器学习的数学基础
- 7.独立性与随机变量:贝叶斯公式与二项分布
- 8.期望、方差与协方差:随机变量的数字画像
- 9.联合概率:当一条轴不够用的时候
- 10.概率分布(一):从伯努利到伽马函数
- 11.概率分布(二):贝塔、泊松、正态与两个贝叶斯故事
- 12.机器学习的模型:找输入与输出的关系
- 13.机器学习的应用
- 14.过拟合
- 15.机器学习的分类
- 16.有监督学习:从房价预测说起
- 17.损失函数
- 18.梯度下降(上):更新规则与学习速率
- 19.梯度下降(2)
- 20.牛顿方法
- 21.KNN简介
- 22.距离测算
- 23.朴素贝叶斯
- 24.朴素贝叶斯的实际应用
- 25.信息熵:决策树构建的度量基础
- 26.信息增益与决策树的构建
- 27.ID3算法
- 28.决策树节点的划分
- 29.CART树
- 30.Bagging
- 31.Boosting:自适应提升算法
- 32.Gradient Boosting
- 33.线性模型:回归与分类的同一副骨架
- 34.最小二乘:把最优参数直接解出来
- 35.最小二乘法的几何与概率视角
- 36.极大似然:给最小二乘一个概率出身
- 37.逻辑回归(1):把线性模型接到分类上
- 38.逻辑回归(2):损失函数与多分类
- 39.---- 手造数据: 5 个样本, 2 个特征; x2 几乎 = 2*x1 (偏差手工指定, 无随机) ----
- 40.讲师例: 向量 "23014" -- 三把范数尺子量同一个向量
- 41.优化方法(1):坐标下降与前向选择
- 42.优化方法(2):前向策略与最小角回归
- 43.拉格朗日乘子法(1):从无约束到等式约束
- 44.拉格朗日乘子法(2):等式约束下的平行条件与拉格朗日函数
- 45.拉格朗日乘子法(3):不等式约束与 KKT 条件
- 46.最大间隔:把分类问题变成优化问题
- 47.拉格朗日对偶问题:把 w 和 b 全部换成 α
- 48.支持向量:边界上的少数派
- 49.SVM 计算过程:一笔到底算完,再走进核方法
- 50.贝叶斯公式:概率即信念
- 51.隐含变量和概率模型:给看不见的原因建模
- 52.EM 算法:期望与最大化的迭代
- 53.琴生不等式:EM 的数学钥匙
- 54.三个硬币问题:EM 的复盘与衔接
- 55.高斯混合模型:用隐变量解释双峰数据
- 56.隐马尔可夫模型
- 57.隐马尔可夫模型(2):前向算法与动态混合模型
- 58.隐马尔可夫模型在 NLP 中的运用
- 59.EM 算法:把「为什么收敛」推到底
- 60.HMM 在 NLP 中的运用:从分词到机器翻译
- 61.HMM 参数估计:Baum-Welch 的三块拉格朗日
- 62.高维下的高斯模型
- 63.主题模型:从词袋到隐含主题
- 64.Dirichlet 分布(1)
- 65.Dirichlet 分布(2)
- 66.统计学习内容回顾
- 67.K-means 算法
- 68.PCA 降维
- 69.SVD 降维
- 70.从聚类到流形
- 71.局部线性嵌入
- 72.随机邻域嵌入:SNE 与 t-SNE
- 73.无参模型:让数据自己说话
- 74.高斯过程:函数空间里的正态分布
- 75.高斯过程(2):噪声、正则化与核的线性组合
- 76.神经网络简介:从感知器到自编码器
- 77.反向传播:把误差一层层传回去
- 78.卷积神经网络(CNN):让特征自己学出来
- 79.循环神经网络(RNN):给网络装上记忆
- 80.深度学习回顾:静态一类,动态一类
- 81.增强学习(1):蒙特卡洛、树搜索与 Q-learning
- 82.强化学习(2):从乌鸦吃核桃到井字棋的 value 回传
线性模型:回归与分类的同一副骨架
约 9 分钟
小象实战讲义 · 机器学习算法精讲
上一章,我们把一棵决策树养成了一片森林:CART、Bagging、Boosting、GBDT,一路走到 XGBoost。今天,classical machine learning models 的行程换一条主线——线性模型。它其实是我们最早认识的老朋友:刚开始学机器学习时举的房价例子就是它,第 4 章的梯度下降也是为它服务的。本节先把”线性模型”这个词彻底说清楚——它的形式、它的记号、以及它同时服务回归与分类两种任务的本事——最后引出一条新路:不用梯度下降,直接把最优参数解出来。这条路叫最小二乘法,下一节正式开工。
💡 核心导读
- 上章回顾:决策树 → CART(classification and regression tree)→ Bagging(代表:随机森林)与 Boosting(代表:AdaBoost)→ Gradient Boosting(以 CART 举例)→ XGBoost 代码。
- 形式与记号:;参数 ,靠 的约定把偏置 收进内积。
- 一个形式,两种任务:回归——找让所有点到它距离最短的线/面;分类——拿 当边界,新数据代入看正负。
- 本节主旨:线性模型可以不走梯度下降,用向量的方式直接求解——最小二乘法,一个在统计学和数学上历史悠久的方法。
章首回顾:从决策树家族到线性模型
先用一分钟把上一章串起来。我们从基本的决策树出发,认识了 CART——classification and regression tree,分类与回归树;在 CART 的基础上讲了两大集成思路:Bagging 与 Boosting。Bagging 的代表例子是随机森林(random forest),Boosting 的代表是 AdaBoost。随后讲了什么是 Gradient Boosting,并继续用 CART 作为基学习器举例;最后还给了一份 XGBoost 的代码,鼓励大家课后动手跑一跑、试一试。
今天我们继续 classical machine learning models 的部分,主角换成 linear model——线性模型。
线性模型:我们最早的老朋友
其实我们以前就讲过线性模型。最开始学机器学习时用它举例子,用的正是吴恩达课程开篇的经典场景:想买房子的时候,发现房子有很多不同的特征——房子的大小、里边有多少个房间、甚至花园的面积等等。这些特征值各不相同,而我们想做的事,是在给定所有这些房子特征时,预测房价该是多少。当时我们说,这件事用一个线性模型就可以进行预测(第 4 章有完整的展开)。
线性模型的形式是:
它就是一个线性的组合。这里的每一个 本身又是一个高维向量,包含 这么多个特征分量;每一组输入 都对应一个目标值 。
怎么读:特征的权重
面对同一个输入 ,换一组系数就换一个函数——那么哪一组系数更正确?我们可以给 不止一种解释,其中最自然的一种:把它看作各特征之间相对的权重。 分别衡量了每个特征对输出的影响程度——哪个特征更重要、往哪个方向拉,读系数就能感知。这也是线性模型作为”基础模型”的第一层含义。
训练数据与参数估计
有了线性模型,接下来的问题就是:怎么从数据里把 学出来? 经典的设定是给定训练数据 :
一共 组数据。我们要估计的 本身也是个高维向量:
注意维度是 而不是 。为什么?关键在 :它相当于 里的那个 ,不与任何特征相配。为了记号统一,我们约定永远默认有一个 ,且 ——这样 就有了自己的”座位”, 也称为线性函数的偏置(bias)。有了这个约定,整个模型可以写成干净的内积形式:
求解它,我们已有的工具
给定 之后怎么求 (帽子表示”从数据估计出来的”)?大家应该还记得第 4 章学过的梯度下降:
其中 是学习速率, 是损失函数。梯度下降的完整细节——学习速率怎么选、迭代会出什么状况——第 4 章与配套讲义已经写得非常详细,这里不再重复。
不用梯度下降行不行
有的时候,我们其实并不完全需要梯度下降。 把问题写成向量的形式之后,可以直接对整个函数求它的最优解——一步到位地”解”出参数,而不是一步一步迭代逼近它。这就是我们经常所说的最小二乘法——一个从统计学和数学上发展出来、有非常长历史的算法。它凭什么可以跳过迭代?推导过程正是下一节的主角,今天先把方法和线性模型的一些延伸交代清楚。
“线性”到底指什么
说到 linear model,大家要知道它一般主要在讲 linear regression(线性回归)。在统计学里,linear model 这个词出现的最常见场合就是回归模型,甚至经常被当作 linear regression model 的同义词来用。
线性长什么样?在二维空间里,线性就是 ——一条直线。到了高维:
二维空间里线性是一条线;三维空间里它是一个面;四维空间里它是三维空间里的一个面(更高维则统称超平面)。这些形象大家心里要有数。
还有一点要说清楚:“线性”这个词在别的领域有别的含义——控制理论里有线性系统,运筹学里还有线性规划,说的都不是一回事。我们这门课讲的 linear model,特指特征空间里满足 这种形式的一类函数——满足这个形式的叫线性函数,相应的模型叫线性模型。
一个形式,两种任务
线性模型能干的活不止一件。
用作回归:找最近的面
用线性函数去拟合数据:在所有直线(或高维的面)里,找到离数据”最近”的那一个。以两个特征为例, 在三维空间里就是一个面,模型把这个面描述出来。
而我们真正期望的 呢?大家能想象:不可能所有的点都恰好落在这个平面上——若都落在上面,那就是一次完美的回归,现实里不会这么客气。所以我们退而求其次:希望找到一个面,使所有点到这个面的距离总和最短——这个面就是最合适的面。“距离怎么定义、最短怎么求”,正是下一节最小二乘要解决的问题。
用作分类:拿边界线一分为二
线性模型还可以换一种用法:找到一条线性的直线,作为边界,把所有数据分成两部分。分类时习惯上把参数记成大 ,边界的方程是:
这条线把特征空间一分为二:代入任何点,函数值大于零落在它的一侧,小于零落在另一侧。于是分类的操作非常简单——来了一条新数据 ,把它代进这个方程,看结果比零大还是比零小,就完成了判别。线性模型的分类用法(比如本章后面的逻辑回归)都建立在这个边界思想上。
一个形式,两种任务:回归时它是一张拟合面,分类时它是一条分界线——这就是线性模型作为机器学习”骨架”的地位。
📝 动手练一练
- 记号辨析:特征有 维,为什么参数 ? 这个约定解决了什么问题?如果不引入这个约定,模型表达式会变成什么样?
👉 点击查看参考答案
多出来的那一维是 ——它相当于 里的 ,不与任何真实特征相乘,所以天然比特征数多一维。 的约定给 安了一个”座位”,好处是模型可以统一写成内积 ,不再需要单独把常数项拎出来写。
如果不引入这个约定,就要写成 (、 表示去掉常数项后的部分)——每次推导都要带着一个”孤零零”的 ,下一节的最小二乘推导将全部建立在统一内积形式上,没有这个约定,矩阵形式会麻烦得多。
- 分类边界手算:某线性分类器的边界方程为 ,其中 、,即 。判断以下三个新样本各落在边界的哪一侧:(A) ;(B) ;(C) 。样本 C 说明什么?
👉 点击查看参考答案
把各点代入判别函数 :
- (A) ,落在正侧;
- (B) ,落在负侧;
- (C) ,恰好落在边界上。
样本 C 说明:边界上的点判别函数值为零,“大于零/小于零”的两分法对它失效。实践中需要人为约定(例如规定 判为正类),这也是为什么后面讲逻辑回归时,我们会把”硬边界判别”升级成”输出概率”——边界附近的点恰恰是最需要谨慎对待的。
本章小结
- 上章回顾:决策树 → CART → Bagging(随机森林)与 Boosting(AdaBoost)→ Gradient Boosting → XGBoost,集成学习一章收官。
- 线性模型的形式:;参数 ,靠 的约定把偏置 收进内积, 可读作各特征的相对权重。
- “线性”的边界:本课的 linear model 特指特征空间里 形式的函数类;二维是线、三维是面、更高维是超平面——与控制里的线性系统、运筹里的线性规划不是一回事。
- 一个形式,两种任务:回归时找让所有点到它距离最短的线/面(点不会都落在面上);分类时拿 当边界,新数据代入看正负即完成判别。
- 预告:求 不止梯度下降一条路——用向量形式直接求解,就是历史悠久的最小二乘法,下一节完整推导。
📋 行动清单
- 默写线性模型的完整形式,说清 与 的来龙去脉
- 在纸上画一个二维分类例子:画出边界直线,标出”大于零”与”小于零”两侧,再放三个点(含一个边界上的点)做判别
- 回顾第 4 章梯度下降的更新公式,带着”能不能不迭代、直接解出来”的问题预习下一节《最小二乘》
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。