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

Martian148

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

  • 编程语言

  • 体系结构

  • Web

  • 人工智能

    • 机器学习笔记
      • 前言
        • 什么是机器学习
        • 监督学习
        • 无监督学习
      • 线性回归
        • 一元线性回归
        • 多元线性回归
      • 梯度下降
  • 编程工具

  • 计算机科学
  • 人工智能
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

X=(x11x12…x1d1x21x22…x2d1⋮⋮⋱⋮⋮xm1xm2…xmd1)=(x1T1x2T1⋮⋮xmT1) \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) X=⎝⎜⎜⎜⎜⎛​x11​x21​⋮xm1​​x12​x22​⋮xm2​​……⋱…​x1d​x2d​⋮xmd​​11⋮1​⎠⎟⎟⎟⎟⎞​=⎝⎜⎜⎜⎜⎛​x1T​x2T​⋮xmT​​11⋮1​⎠⎟⎟⎟⎟⎞​

把标记也写成向量形式 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

# 梯度下降

假设你有一个代价函数 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α 太大,梯度下降算法可能无法找到最小值

pink 老师 JavaScript 学习笔记
Git使用指南

← pink 老师 JavaScript 学习笔记 Git使用指南→

最近更新
01
Java基础语法
05-26
02
开发环境配置
05-26
03
pink 老师 JavaScript 学习笔记
05-26
更多文章>
Theme by Vdoing | Copyright © 2024-2025 Martian148 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式