Martian148's blog Martian148's blog
首页
  • ICPC 算法笔记
  • ICPC 算法题解
  • 体系结构
  • 高等数学
  • 线性代数
  • 概率论与数理统计
  • 具体数学
  • Martian148的奇思妙想
  • 游记
  • 通识课笔记
关于
  • useful 网站
  • 友情链接
  • 分类
  • 归档

Martian148

一只热爱文科的理科生
首页
  • ICPC 算法笔记
  • ICPC 算法题解
  • 体系结构
  • 高等数学
  • 线性代数
  • 概率论与数理统计
  • 具体数学
  • Martian148的奇思妙想
  • 游记
  • 通识课笔记
关于
  • useful 网站
  • 友情链接
  • 分类
  • 归档
  • ACM - ICPC

  • 编程语言

  • 体系结构

  • Web

  • 人工智能

    • 机器学习笔记
      • 前言
        • 监督学习
        • 无监督学习
      • 线性回归
        • 一元线性回归
        • 多元线性回归
        • 使用梯度下降求解多元线性回归
      • 梯度下降
        • 检查梯度下降是否收敛
      • 特征工程
      • 逻辑回归
    • 《python科学计算入门》学习笔记
    • LLM101 NLP学习笔记
  • 计算机网络

  • 数据库

  • 编程工具

  • 计算机科学
  • 人工智能
martian148
2025-05-21
目录

机器学习笔记

# 机器学习笔记

# 前言

# 监督学习

回归问题

有监督学习中,你的训练集存在一个输入数据 xxx 和一个正确的答案 yyy,算法根据训练集训练,然后给出一个位置的 xxx 来预测一个新的 yyy

这里我们根据 xxx,从无数个数中预测

分类问题

上面的回归问题是从无数的数中预测一个 yyy,分类问题是根据训练数据训练算法,然后对于一个新的 xxx,把这个 xxx 分到规定的几类中

例如:根据肿瘤的大小来判断肿瘤是恶性的还是良性的

# 无监督学习

无监督学习对于数据 xxx 不会给出对应的正确输出 yyy,需要程序自己去发现数据中一些特殊的结构或者规律

聚类算法

image-20250522011845961

在图中,我们可以发现一类人有相似的一些特征,所以我们把他们归为一类

Anomaly detection

异常值检测

# 线性回归

# 一元线性回归

观察一条直线,y=β0+β1xy=\beta_0+\beta_1 xy=β0​+β1​x,我们给定一个 xxx 就能得到一个 yyy

当我们用一个 xxx 来预测 yyy,就是一元线性回归模型

我们现在有一堆数据集 (x,y)(x,y)(x,y),然后我需要找到合适的 β0,β1\beta_0,\beta_1β0​,β1​ 来拟合这些点

image.png

于是,当来了一个新的 xxx,就能得到一个 yyy 了

我们需要一个评价标准来评判一条直线的拟合程度,于是就有了损失函数

定义真实值和预测值之间的差值为残差:e=y−y^e=y-\hat{y}e=y−y^​

那么误差就是残差平方和,叫 损失函数

Q=∑i=1m(yi−yi^)2=∑i=1m(yi−(β^0+β1xi^))2 Q=\sum_{i=1}^m (y_i-\hat{y_i})^2=\sum_{i=1}^m (y_i-(\hat\beta_0+\hat{\beta_1x_i}))^2 Q=i=1∑m​(yi​−yi​^​)2=i=1∑m​(yi​−(β^​0​+β1​xi​^​))2

我们的目标就是需要找到最小化 QQQ,即:

(w∗,b∗)=arg⁡min⁡∑i=1n(f(xi)−yi)2=arg⁡min⁡∑i=1n(yi−wxi−b)2 (w^*,b^*)=\arg\min\sum_{i=1}^n (f(x_i)-y_i)^2=\arg\min\sum_{i=1}^n (y_i-wx_i-b)^2 (w∗,b∗)=argmini=1∑n​(f(xi​)−yi​)2=argmini=1∑n​(yi​−wxi​−b)2

求解 www 和 bbb 使得 E(w,b)=∑i=1n(yi−wxi−b)2E_{(w,b)}=\sum_{i=1}^n (y_i-wx_i-b)^2E(w,b)​=∑i=1n​(yi​−wxi​−b)2 被称为最小二乘估计,对 E(w,b)E_{(w,b)}E(w,b)​ 分别求偏导数,得到:

∂E(w,b)∂w=2(w∑i=1mx2−∑i=1m(yi−b)xi)∂E(w,b)∂w=2(mb−∑i=1m(yi−wxi)) \begin{aligned} \frac{\partial E_{(w,b)}}{\partial w} &=2\left( w\sum_{i=1}^m x^2-\sum_{i=1}^m (y_i-b)x_i\right)\\ \frac{\partial E_{(w,b)}}{\partial w} &= 2\left( mb-\sum_{i=1}^m(y_i-wx_i)\right) \end{aligned} ∂w∂E(w,b)​​∂w∂E(w,b)​​​=2(wi=1∑m​x2−i=1∑m​(yi​−b)xi​)=2(mb−i=1∑m​(yi​−wxi​))​

两个偏导数等于 000 就可以得到 www 和 bbb 对最优解

w=∑i=1myi(xi−x‾)∑i=1mx2−1m(∑i=1mxi)2 w=\frac{\sum_{i=1}^m y_i(x_i-\overline{x})}{\sum_{i=1}^m x^2-\frac{1}{m}\left(\sum_{i=1}^m x_i \right)^2} w=∑i=1m​x2−m1​(∑i=1m​xi​)2∑i=1m​yi​(xi​−x)​
b=1m∑i=1m(yi−wxi) b=\frac{1}{m}\sum_{i=1}^m (y_i-wx_i) b=m1​i=1∑m​(yi​−wxi​)

其中 x‾=1m∑i=1mxi\overline{x} =\frac{1}{m}\sum_{i=1}^m x_ix=m1​∑i=1m​xi​ 为 xxx 的均值

# 多元线性回归

给定数据集 D={(x1,y1),(x2,y2),⋯,(xm,ym)}D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}D={(x1​,y1​),(x2​,y2​),⋯,(xm​,ym​)},其中 xi=(xi1,xi2,⋯,xid),y∈Rx_i=(x_{i1},x_{i2},\cdots,x_{id}),y\in \mathbb{R}xi​=(xi1​,xi2​,⋯,xid​),y∈R,这里的 xix_ixi​ 是一个向量的形式,我们试图得到一个矩阵 w,bw,bw,b

f(xi)=wTxi+b f(x_i)=w^Tx_i+b f(xi​)=wTxi​+b

类似的,我们可以用最小二乘法来对 www 和 bbb 进行估计,我们把 w,bw,bw,b 写成一个 w^=(w;b)\hat{w}=(w;b)w^=(w;b),把数据集表示成一个 m×(d+1)m\times (d+1)m×(d+1) 大小大矩阵 XXX,其中每一行对应一个示例,最后一个元素恒为 111 $$ \mathbf{X}=\left(\begin{array}{ccccc} x_{11} & x_{12} & \ldots & x_{1 d} & 1 \ x_{21} & x_{22} & \ldots & x_{2 d} & 1 \ \vdots & \vdots & \ddots & \vdots & \vdots \ x_{m 1} & x_{m 2} & \ldots & x_{m d} & 1 \end{array}\right)=\left(\begin{array}{cc} \boldsymbol{x}{1}^{\mathrm{T}} & 1 \ \boldsymbol{x}{2}^{\mathrm{T}} & 1 \ \vdots & \vdots \ \boldsymbol{x}_{m}^{\mathrm{T}} & 1 \end{array}\right) $$

把标记也写成向量形式 y=(y1,y2,⋯,ym)y=(y_1,y_2,\cdots,y_m)y=(y1​,y2​,⋯,ym​),那么多位的损失函数就可以写成:

w^∗=arg⁡min⁡(y−Xw^)T(y−Xw^) \hat{w}^*=\arg\min(y-X\hat{w})^T(y-X\hat{w}) w^∗=argmin(y−Xw^)T(y−Xw^)

令 Ew^=(y−Xw^)T(y−Xw^)E_{\hat{w}}=(y-X\hat{w})^T(y-X\hat{w})Ew^​=(y−Xw^)T(y−Xw^),对 w^\hat{w}w^ 求导得到

∂Ew^∂w^=2XT(Xw^−y) \frac{\partial E_{\hat{w}}}{\partial \hat{w}} = 2X^T(X\hat{w}-y) ∂w^∂Ew^​​=2XT(Xw^−y)

当 XTXX^T XXTX 为满秩矩阵或正定矩阵时

w^∗=(XTX)−1XTy \hat{w}^*=(X^TX)^{-1}X^Ty w^∗=(XTX)−1XTy

令 xi^=(xi,1)\hat{x_i}=(x_i,1)xi​^​=(xi​,1) 可得,多元线性回归模型为

f(xi^)=xi^T(XTX)−1XTy f(\hat{x_i})=\hat{x_i}^T (X^TX)^{-1}X^Ty f(xi​^​)=xi​^​T(XTX)−1XTy

# 使用梯度下降求解多元线性回归

考虑单变量的线性回归中,我们考虑每次迭代 www 和 bbb,方程如下 $$ \begin{aligned} w&=w-\alpha \frac{\partial}{\partial w} J(w,b)=w-\alpha \frac{1}{m}\sum_{i=1}^m(f_{w,b}(x^{(i)})-y^{(i)})x^{i}\ b&=b-\alpha \frac{\partial}{\partial b} J(w,b)=b-\alpha \frac{1}{m}\sum_{i=1}^m(f_{w,b}(x^{(i)})-y^{(i)}) \end{aligned} $$ 在多元线性回归中,x⃗\vec{x}x 和 v⃗\vec{v}v 都是一个向量,所以,上面那个方程需要做一些改变 $$ \begin{aligned} w_1&=w_1-\alpha \frac{\partial}{\partial w} J(w,b)=w_1-\alpha \frac{1}{m}\sum_{i=1}^m(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})x^{i}1\ \cdots\ w_n&=w_n-\alpha \frac{\partial}{\partial w} J(w,b)=w_n-\alpha \frac{1}{m}\sum{i=1}^m(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})x^{i}n\ b&=b-\alpha \frac{\partial}{\partial b} J(w,b)=b-\alpha \frac{1}{m}\sum{i=1}^m(f_{w,b}(x^{(i)})-y^{(i)}) \end{aligned} $$

# 梯度下降

假设你有一个代价函数 J(w,b)J(w,b)J(w,b),你需要找到 min⁡w,bJ(w,b)\min_{w,b}J(w,b)minw,b​J(w,b)

基本算法思想是:

  • 给 w,bw,bw,b 一个初始,通常是 w=0,b=0w=0,b=0w=0,b=0
  • 稍微改变一点 w,bw,bw,b 来减少 J(w,b)J(w,b)J(w,b)
  • 直到 JJJ 稳定在最小值附近
image-20250526133752694

假设你站在这个山顶上,你要往前试探性的走一步,然后看往那个方向走能让你更快得降到山谷中,然后就往那个方向走一步,以此类推

接下来我们来看一下如何具体实现梯度下降算法,这里实现了 w,bw,bw,b 的同时更新 $$ \begin{aligned} w&=w-\alpha \frac{\partial}{\partial w} J(w,b)\ b&=b-\alpha \frac{\partial}{\partial b} J(w,b) \end{aligned} $$

  • 这里的 α\alphaα 是学习率,其决定了梯度下降的步伐大小

如果学习率 α\alphaα 特别小,梯度下降算法会起作用,但是需要很长的时间

如果学习率 α\alphaα 太大,梯度下降算法可能无法找到最小值

# 检查梯度下降是否收敛

我们将梯度下降的次数为横轴,J(w,b⃗)J(\vec{w,b})J(w,b​) 为纵轴,花了一个图

image-20250528203746766

​

从这个图中可以看到,整个曲线呈一个下降的趋势,如果有一段不下降反而上升了,说明有可能 α\alphaα 取得太大了,或者程序编写错误了

如果最后的图变得很平缓,说明梯度下降收敛了

我们可以先使用一个较小的 α\alphaα 来看梯度下降是否收敛,然后慢慢调大,例如,可以从 0.0010.0010.001 开始,每次扩大 10 倍这样子

# 特征工程

例如我们要估算一个房子的价格,首先我们可以选择房子的长度和宽度作为参数 x1,x2x_1,x_2x1​,x2​

image-20250528210749115

这样我们的函数就是 f(x⃗)=w1x1+w2x2+bf(\vec{x})=w_1x_1+w_2x_2+bf(x)=w1​x1​+w2​x2​+b

当然,我们同样可以令 x3=x1×x2x_3=x_1\times x_2x3​=x1​×x2​,于是我们得到的函数可以是 f(x⃗)=w1x1+w2x2+w3x3+bf(\vec{x})=w_1x_1+w_2x_2+w_3x_3+bf(x)=w1​x1​+w2​x2​+w3​x3​+b

特征工程指的就是你基于对事物的理解来选取合适的特征

# 逻辑回归

我们在使用了线性回归之后,还可以使用一个逻辑函数 g(z)=11+e−zg(z)=\frac{1}{1+e^{-z}}g(z)=1+e−z1​ 来优化回归过程,也就是我们讲的逻辑回归

于是,逻辑回归的柿子就变成了 $$ f(x)=g(z)=\frac{1}{1+e^{-(wx+b)}} $$ 如果我们面临一个二分类问题,即非 000 即 111 那么我们可以设置一个值 ppp 当预测的参数小于 ppp 的时候被认为是 000,否则被认为是 111

三件套笔记
《python科学计算入门》学习笔记

← 三件套笔记 《python科学计算入门》学习笔记→

最近更新
01
在 ACM 集训队年会上的讲话
07-01
02
计算机网络笔记
06-13
03
LLM101 NLP学习笔记
06-02
更多文章>
Theme by Vdoing | Copyright © 2024-2025 Martian148 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式