# 机器学习
**机器学习概论**


机器学习的应用

1. 计算机视觉
1. 自然语言处理
1. 逻辑推理
1. 大语言模型

机器学习的分类

任务角度：分类、回归、聚类、降维……

方法（数据）角度：有监督、无监督、强化、半监督……

从本质上来讲，机器学习就是让计算机发现数据中的规律。那么我们可以根据这个规律，来预测、作出决策、发现世界运作的关系……

三要素：1、任务2、评价性能指标3、经验（数据集）

有监督学习：已知输入与输出的数据集。机器学习通过算法学习去作出预测，对于分类的输出则是一个个标签或者类别（离散型），对于回归的输出的则是具体数值（连续型）。目标是找到关联输入和输出数据的方法。

常见的任务包括：分类、回归。应用：计算机视觉（目标检测、图像分类）、自然语言处理（机器翻译）

分类——例如k最近邻算法

1、model=Regreesion()建立一个模型（对象）

2、model.fit训练模型,让模型学习（拟合）数据

3、model.predict作出预测

决策边界崎岖不平——>太敏感，可能因为一个点而改变一整个区域

对单一数据点太敏感——如何对待离群值？更改算法，增大k值！

那么什么k最好？——这个k就是超参数

定量分析k——根据损失函数

其它的技巧选择超参数——验证集、交叉验证集

如果输入的并不是数值，而是etc.一封封邮件.用一组特征来代表每一封邮件，也叫做特征工程。

回归分析

也是利用了k最近邻

更多的k，取平均值，然而越大的k，虽然对数据并不敏感，但同时也失去了预测能力（过拟合）

虽然这并不是回归的最好方法。

无监督学习

数据中没有输入输出的说法（没有标签列），只是数据；或者说只有输入，没有输出数据。算法必须⾃⾏发现数据中的性质、特点、结构和模式。但仍然作出了预测，这预测并非一个标签或者数值。即，⽆监督学习的⽬标是探索数据并找到其中的隐藏模式或关系，⽽不是预测或分类数据。常见的任务包括：聚类、降维、异常检测、密度估计、生成模型。应用：潜在关联分析、词嵌入、相似语义的词聚类、大语言模型、市场细分、社交⽹络分析、图像压缩和基因表达分析等

目标：发现数据本身性质、特点

Etc.多少个数据聚类？某个点属于哪个聚类？

1、Model=Cluster()建立模型

2、model.fit\_predict()训练模型，在进行拟合的同时进行了预测。在预测的同时就可以使用它	

没有标准答案，这就是无监督学习。

降维——找到多余的信息

强化学习

模型/算法通过交互式的数据采集完成优化

采用策略采集反馈数据采集ó模型优化通过反馈改进策略

⾃监督学习

主要是利⽤辅助任务从⼤规模的⽆监督数据中挖掘⾃⾝的监督信息，通过这种构造的监督信息对⽹络进⾏训练，从⽽可以学习到对下游任务有价值的表征。主要⽅法：

•上下⽂对⽐

•时序对⽐

•不同编码对⽐

**模型的评价**

重要性

1. 衡量模型性能（预期性能和基线（baseline）/预期性能和当前性能/优化过程的性能）
1. 指导模型优化（定位模型的不足•指标驱动优化）
1. 适应不同业务场景的需求
1. 判断模型的训练情况（过拟合、欠拟合）

评价指标

1. 针对二分类，混淆矩阵（Confusion Matrix）、准确率（Accuracy）、精确率（Precision）、召回率（Recall）、特异度（Specificity）、PR曲线（

提高精确率：只在非常确定时才将样本预测为正类

提高召回率：模型倾向于将更多样本预测为正类）

F1分数用来衡量二者的平衡

$(\frac{2*Precision*\mathrm{Re}call}{Precision+\mathrm{Re}call})$
ROC(召回率vs1-特异度)

（较低阈值：更多样本被预测为正类

较高阈值：模型更谨慎预测正类）


 **P - R 曲线**

如果我们想「同时关心」查准率和查全率的数值大小。也就是说我们现在关心「2 个变量的值」。很自然的我们可以画一个直角坐标系：一个为横轴，一个为纵轴
![|700x586](https://pic2.zhimg.com/v2-aee783d9ddcca8a3dcd257efd21115b7_1440w.jpg)

PR曲线下的AUC呢？
ROC 曲线下的 AUC(AreaUnderCurve)：AUC 衡量模型的整体性能，AUC 越接近 1，模型越好

![|354x330](https://pica.zhimg.com/v2-f0970e59ae7f5db786c2cb28a8d49881_720w.jpg?source=d16d100b)
微平均、宏平均是什么？

1. 多分类评价指标

   将多分类任务拆分为多个二分类任务

   <table style="border-collapse: collapse; text-align: center; font-family: sans-serif;"> <tr> <td style="border: none;"></td> <td colspan="4" style="border: none; text-align: center; font-size: 18px; padding-bottom: 6px;">Predicted</td> </tr> <tr> <td style="border: none;"></td> <td style="border: 1px solid #333; background: #fff; width: 60px;"></td> <td style="border: 1px solid #333; background: #dbeafe; padding: 8px 16px;">Cat</td> <td style="border: 1px solid #333; background: #dbeafe; padding: 8px 16px;">Dog</td> <td style="border: 1px solid #333; background: #dbeafe; padding: 8px 16px;">Pig</td> </tr> <tr> <td rowspan="3" style="border: none; vertical-align: middle; padding-right: 6px;"> <div style="writing-mode: vertical-rl; transform: rotate(180deg); font-size: 16px;">Actual</div> </td> <td style="border: 1px solid #333; background: #dbeafe; padding: 8px 16px;">Cat</td> <td style="border: 1px solid #333; padding: 8px 16px;"></td> <td style="border: 1px solid #333; padding: 8px 16px;"></td> <td style="border: 1px solid #333; padding: 8px 16px;">FP</td> </tr> <tr> <td style="border: 1px solid #333; background: #dbeafe; padding: 8px 16px;">Dog</td> <td style="border: 1px solid #333; padding: 8px 16px;"></td> <td style="border: 1px solid #333; padding: 8px 16px;"></td> <td style="border: 1px solid #333; padding: 8px 16px;">FP</td> </tr> <tr> <td style="border: 1px solid #333; background: #dbeafe; padding: 8px 16px;">Pig</td> <td style="border: 1px solid #333; padding: 8px 16px;">FN</td> <td style="border: 1px solid #333; padding: 8px 16px;">FN</td> <td style="border: 1px solid #333; padding: 8px 16px;">TP</td> </tr> </table>

2. 回归指标

   在回归任务中，模型的目标是预测连续数值，而不是离散类别。因此，评价指标需要衡量预测值 与真实值之间的误差。这些指标有助于评估模型的精度、稳定性和偏差。


$\begin{aligned}&MSE=\frac{1}{n}\sum_{i=1}^{n}\left(y_{i}-y_{i}\right)^{2}\\&MAE=\frac{1}{n}\sum_{i=1}^{n}|y_{i}-\hat{y}_{i}|\end{aligned}$

多分类对数损失函数（LogLoss / 交叉熵损失）

公式

$$
\text{LogLoss} = -\frac{1}{n} \sum_{i=1}^{n} \sum_{j=1}^{C} y_{ij} \log(\hat{y}_{ij})
$$
 符号说明

| 符号 | 含义 |
|------|------|
| n | 样本总数 |
| C | 类别总数 |
| y_ij | 第 i 个样本真实标签的独热编码（真实类别为 j 时取 1，否则取 0） |
| ŷ_ij | 模型预测第 i 个样本属于第 j 个类别的概率 |
| Σ(i=1 to n) | 对所有样本求和 |
| Σ(j=1 to C) | 对所有类别求和 |
| -(1/n) | 取负号并求平均，使损失为正值 |

公式含义

- 内层求和 Σ(j=1 to C)：计算单个样本在所有类别上的交叉熵损失。
- 外层求和 Σ(i=1 to n)：将所有样本的损失累加。
- 除以 n：求整个数据集上的平均损失。
- 负号：因为 log(ŷ_ij) 为负数（概率在 0 到 1 之间），加负号后损失变为正值。

为什么 j 从 1 到 C

因为多分类模型对每个样本都会输出属于所有 C 个类别的概率分布。遍历 j 从 1 到 C，就是检查模型在所有类别上的预测情况。

由于 y_ij 是独热编码，只有真实类别对应的那一项非零，其余项乘以 0 后消失，因此最终只有真实类别的预测概率会影响损失值。

举例

假设 C = 3，类别为：猫、狗、猪。

模型对某样本的输出：

- 预测是猫的概率：$ŷ_i 1$ = 0.1
- 预测是狗的概率：$ŷ_i 2$ = 0.7
- 预测是猪的概率：$ŷ_i 3$ = 0.2

真实标签是狗，则独热编码：

- $y_i 1$ = 0（不是猫）
- $y_i 2$ = 1（是狗）
- $y_i 3$ = 0（不是猪）

内层求和展开：

$y_i 1 * log(ŷ_i 1) + y_i 2 * log(ŷ_i 2) + y_i 3 * log(ŷ_i 3)$

代入数值：

$0 * log(0.1) + 1 * log(0.7) + 0 * log(0.2)$

可以看到，除真实类别对应的那一项外，其他项都乘以 0 消失了。

总结

j 从 1 到 C，是为了遍历模型输出的所有类别概率，从而计算当前样本预测分布与真实分布之间的差距。

3. 指标选择准则
4. 无监督学习、回归、语义分割指标

**模型训练的两个典型问题**

![[机器学习2.png]]



1. 欠拟合

欠拟合是指模型不能在训练集上获得足够低的误差。模型复杂度低，模型在训练集上就表现很差，没法学习到数据背后的规律。

原因①模型复杂度过低②特征量过少

解决方法①模型复杂化②增加更多特征③调整参数④降低正则化约束

1. 过拟合

过拟合是指训练误差和测试误差之间的差距太大，没有理解数据背后的规律，泛化能力差。导致模型在训练集上表现很好，但在测试集上却表现很差。

原因①建模样本选取有误，如样本数量太少，选样方法错误，样本标签错误等②样本噪音干扰过大③参数太多，模型复杂度过高④对于神经网络模型：a)对样本数据可能存在分类决策面不唯一，随着学习的进行，BP算法使权值可能收敛过于复杂的决策面；b)权值学习迭代次数足够多(Overtraining)，拟合了训练数据中的噪声和训练样例中没有代表性的特征。

解决方法①增加样本数量②使用正则化约束③减少特征数④调整参数并降低模型复杂度⑤提前结束训练

对于过拟合：模型复杂度和权重数量有关，以回归模型为例，进行正则化（Ridge回归、Lasso回归、L1/L2）

`	`权重和过拟合的关系

1. 权重数量：更多的权重意味着模型拥有更多自由度，从而可以更灵活地拟合数据。权重数量增加通常会使模型更复杂，增加对细微模式的拟合能力。
1. 权重大小：当模型的权重值很大时，它对输入数据的变化非常敏感，这会使模型拟合数据中的细节和噪声。

   因此，我们需要一种方法在训练过程中去约束权重


![[机器学习1.png]]

正则化的作用

•防止过拟合：正则化通过对模型的复杂度进行限制，防止模型在训练数据上过度拟合。

•提高模型的泛化能力：通过控制模型的参数大小或数量，正则化可以使模型更加稳定，减少对训练数据的过度依赖，从而提高模型的泛化能力。

•减少模型的复杂度：正则化技术通过对模型的参数进行惩罚，促使模型更趋向于简单的解。例如，L1和L2正则化会约束模型的权重，使其趋向于稀疏或较小的值，从而减少模型的复杂度。

•控制模型的学习速度：正则化技术可以对模型的学习速度进行调节，防止模型在训练过程中权重变化过大，从而导致优化过程不稳定。这有助于加速模型的收敛，并提高模型在训练数据上的表现。

•提高模型的稳健性（Robustness）：正则化有助于使模型更加稳健，即对输入数据的微小变化不敏感。通过降低模型的复杂度，正则化可以减少模型对训练数据中噪声的敏感度，从而提高模型的稳健性。

常见的正则化方法

•L1正则化：也称为Lasso正则化，它通过在模型的损失函数中增加权重的L1范数（权重向量的绝对值之和）来实现正则化。L1正则化倾向于产生稀疏权重矩阵，即将一些权重推向零，从而实现特征选择的效果。

•L2正则化：也称为Ridge正则化，它通过在模型的损失函数中增加权重的L2范数（权重向量的平方和）来实现正则化。L2正则化会使权重值变得较小，但不会直接导致权重稀疏，因此不具有特征选择的作用，但可以有效地控制模型的复杂度。

•ElasticNet正则化：ElasticNet是L1和L2正则化的组合，它在损失函数中同时使用L1和L2范数，可以综合两者的优点。

•Dropout：Dropout是一种特殊的正则化技术，通过在训练过程中随机地丢弃（将其权重置为零）网络中的部分神经元，以及它们的连接，来减少神经网络的复杂度。这样可以防止神经元之间的共适应性，从而减少过拟合。

1. L1正则化

   直觉：让高次项的系数为0，就可以避免过拟合的情况。

   L0范数：向量中非零元素的数量。而L0范数具有非连续性和非凸性，直接优化很困难。

   在模型的损失函数中增加权重的L1范数（$\left\|W\right\|_1=\sum_{i=1}^n\left|w_i\right|$）作为惩罚项来控制模型复杂度的技术。一般形式：

   	


$L_{L1}={L_{data}}+{\lambda\sum_{i=1}^n\left|w_i\right|}$

$L_{data}$ 是模型的目标损失，$\lambda$ 是正则化参数，用于控制正则化项的强度。
假设目标损失函数为均方误差：

$L_{data}(w)=\frac{1}{2}\left\|y-Xw\right\|_{2}^{2}\quad{\longrightarrow}\quad L(w)=\frac{1}{2}\left\|y-Xw\right\|_{2}^{2}+\lambda\sum_{i=1}^{n}\left|w_{i}\right|$


则对于每次权重的梯度

$\left.\nabla L\left(w\right)=-X^{T}\left(y-Xw\right)+\lambda sign\left(w\right),sign\left(w\right)=\left\{\begin{array}{l}1,w>0\\0,w=0\\-1,w<0\end{array}\right.\right.$



在梯度下降的优化过程中，L1正则化会促使一些权重趋向于零，从而实现特征选择的效果，降低模型的复杂度，防止过拟合

1. L2正则化

   直觉：降低权重大小，降低对数据的敏感

   在模型的损失函数中增加权重的L2范数（$\left\|W\right\|_2^2=\sum_{i=1}^nw_i^2$）作为惩罚项来控制模型复杂度的技术

$L_{L2}={L_{data}}+{\lambda\sum_{i=1}^nw_i^2}$

假设目标损失函数为均方误差：
$L_{data}(w)=\frac{1}{2}\left\|y-Xw\right\|_2^2\quad{\longrightarrow}\quad L(w)=\frac{1}{2}\left\|y-Xw\right\|_2^2+{\lambda\sum_{i=1}^nw_i^2}$
则对于每次权重的梯度

$\nabla L(w)={-X^T(y-Xw)}+{\lambda sign(w)}$

在优化过程中会同时考虑数据损失和L2正则化项，从而在保持对训练数据的拟合能力的同时，尽可能减小模型参数的大小，降低模型的复杂度。

不同：L1正则化在优化过程中会使部分权重被压缩为零，从而达到特征选择（稀疏化）的效果。L2正则化不会使权重为零，而是趋向于减小权重的大小，从而平滑模型

1. Dropout

   Dropout是一种在神经网络中常用的正则化技术，用于减少过拟合。其原理是在网络的训练过程中，随机地将部分神经元的输出置为零（即失活），从而使得网络在每次迭代时都在不同的子网络上训练，以减少神经元之间的复杂依赖关系，从而增强模型的泛化能力。
# 监督学习
**分类**
### **逻辑回归**
### **决策树和随机森林**
Bagging算法
### **支持向量机**
### **K最近邻(KNN)**
### **贝叶斯分类器**
**回归**

### **线性回归**
#### <a name="_ref185677620"></a>**模型的定义**
模型是对系统理想化的代表；模型是的数据潜在模式的显性表示、是完成特征到真值映射的函数。
#### 单元线性回归
输出是输入的线性组合


$$y = w _ { 1 } x + w _ { 0 }$$


参数：$w_1, w_0$

目标：找到最优直线

损失函数：$\mathcal{L}_i = f(x_i) - y_i,$

量化目标：minimize $\mathcal{L}$

梯度下降法，根据函数在每一个点的导数来决定参数是增大还是减小：
考虑只有一个参数的情况

1. 确定当前模型参数，学习率 $η$

2. 求模型参数对损失函数的微分 $dL/dw$

3. 更新模型参数 $w^{t+1} = w^t - η * dL/dw$

4. 重复上述步骤直至收敛

（模型收敛定义：
1、损失函数变化小于设定阈值：$|L(w_{t+1}) - L(w_t)| < ε$
2、梯度范数接近于 0：$||∇_w L(w)|| < δ$
）
局部最小和全局最小问题：

当学习率过大时，损失函数的值可能在迭代过程中不断增加，而不是逐渐减小。这种情况表现为**震荡**，甚至可能完全**发散**，导致模型无法找到稳定的最优解；

学习率过小会使得模型在梯度接近零的地方停滞不前。此时，模型无法有效跳出局部最小值或平坦的区域，导致参数更新非常缓慢，甚至无法进一步优化。因此，模型可能会停留在局部最优解附近。

此时，图中的函数是损失函数 L(w)和 w 的函数
![[机器学习3.png]]


$w_{i+1}=w_{i}-\eta(LR)\frac{\partial}{\partial w_{i}}L(x,y,w_{1},w_{0})for \ i\ i n[1,0]$

向量化与批处理：对于m个输入（输入特征）和n个输出（1个输出特征）


$$
\begin{align*}
X &=
\begin{bmatrix}
1 & x_{1}^{(1)} & \dots & x_{m-1}^{(1)} & x_{m}^{(1)} \\
1 & x_{1}^{(2)} & \dots & x_{m-1}^{(2)} & x_{m}^{(2)} \\
\vdots & \ddots & \vdots & \vdots & \vdots \\
1 & x_{1}^{(n-1)} & \dots & x_{m-1}^{(n-1)} & x_{m}^{(n-1)} \\
1 & x_{1}^{(n)} & \dots & x_{m-1}^{(n)} & x_{m}^{(n)}
\end{bmatrix}
\\
W &=
\begin{bmatrix}
\omega_{0} \\
\omega \\
\vdots \\
\omega_{j, n-1} \\
\omega_{m}
\end{bmatrix}
\\
Y &=
\begin{bmatrix}
y^{(1)} \\
y^{(2)} \\
\vdots \\
y^{(n-1)} \\
y^{(n)}
\end{bmatrix}
\\
\frac{d\mathcal{L}}{dW}
&=
\begin{bmatrix}
\frac{1}{n}\sum\limits_{i=0}^{n}(f(x^{(i)}) - y^{(i)}) \\
\frac{x_{1}}{n}\sum\limits_{i=1}^{n}(f(x^{(i)}) - y^{(i)}) \\
\vdots \\
\frac{x_{n-1}}{n}\sum\limits_{i=0}^{n}(f(x^{(i)}) - y^{(i)}) \\
\frac{x_{n}}{n}\sum\limits_{i=0}^{n}(f(x^{(i)}) - y^{(i)})
\end{bmatrix}
=
\frac{1}{n}X^{\top}(XW - Y)
\end{align*}
$$




于是对于多变量梯度下降我们有：


$W^{(i+1)}=W^{(i)}-\eta\frac{1}{n}X^{T}\left(XW^{(i)}-Y\right)$


求平方损失的最小值是一个凸函数的最优化问题。要求参数的最优解可以使用最小二乘“参数估计”法

令梯度等于 0，
$$
\frac{1}{n}X^{T}(XW-Y)=0
$$
有
$$
W=(X^{T}X)^{-1}X^{T}Y
$$

当 $X^{\mathrm{T}}X$ 为满秩矩阵或正

定矩阵时，存在逆，有唯一解；否则，存在多组最优参数，由归纳偏好决定最优解；

于是对于多变量梯度下降我们有：

$$
W^{(i+1)}=W^{(i)}-\eta\frac{1}{n}X^{T}\left(XW^{(i)}-Y\right)
$$

求平方损失的最小值是一个凸函数的最优化问题。要求参数的最优解可以使用最小二乘“参数估计”法。

---

1. 平方损失函数

平方损失函数定义为：

$$
\mathcal{L}(W)=\frac{1}{2n}(XW-Y)^{\top}(XW-Y)
$$

或者等价地写成求和形式：

$$
\mathcal{L}(W)=\frac{1}{2n}\sum_{i=1}^{n}\left(f(x^{(i)})-y^{(i)}\right)^2
$$

---

 2. 对 $W$ 求梯度

展开损失函数：

$$
\mathcal{L}(W)=\frac{1}{2n}\left(W^{\top}X^{\top}XW-2W^{\top}X^{\top}Y+Y^{\top}Y\right)
$$

对 $W$ 求导：

$$
\frac{\partial \mathcal{L}}{\partial W}
=
\frac{1}{n}X^{\top}(XW-Y)
$$

令梯度为零：

$$
\frac{1}{n}X^{\top}(XW-Y)=0
$$

即：

$$
X^{\top}(XW-Y)=0
$$

---

 3. 正规方程

展开上式：

$$
X^{\top}XW-X^{\top}Y=0
$$

移项得到正规方程：

$$
X^{\top}XW=X^{\top}Y
$$

---

4. 最小二乘解

当 $X^{\top}X$ 为满秩矩阵或正定矩阵时，存在逆，有唯一解：

$$
W=(X^{\top}X)^{-1}X^{\top}Y
$$

否则，$X^{\top}X$ 不可逆，存在多组最优参数，由归纳偏好决定最优解。

此时也可以使用伪逆：

$$
W=(X^{\top}X)^{+}X^{\top}Y
$$

或加入正则化：

$$
W=(X^{\top}X+\lambda I)^{-1}X^{\top}Y
$$

---

 5. 与梯度下降的关系

梯度下降迭代为：

$$
W^{(i+1)}=W^{(i)}-\eta\frac{1}{n}X^{\top}\left(XW^{(i)}-Y\right)
$$

当迭代收敛到稳定点时，$W^{(i+1)}=W^{(i)}$，因此：

$$
\eta\frac{1}{n}X^{\top}\left(XW^{(i)}-Y\right)=0
$$

即：

$$
X^{\top}(XW-Y)=0
$$

这与直接令梯度为零得到的正规方程一致。因此，最小二乘闭式解

$$
W=(X^{\top}X)^{-1}X^{\top}Y
$$

正是梯度下降最终收敛到的解，前提是 $X^{\top}X$ 可逆且学习率合适。

---

### 6. 中间缺失内容总结

> 平方损失函数为  
> $$
> \mathcal{L}(W)=\frac{1}{2n}(XW-Y)^{\top}(XW-Y)
> $$
> 对其关于 $W$ 求导并令梯度为零：
> $$
> \frac{\partial \mathcal{L}}{\partial W}=\frac{1}{n}X^{\top}(XW-Y)=0
> $$
> 得到正规方程：
> $$
> X^{\top}XW=X^{\top}Y
> $$
> 当 $X^{\top}X$ 满秩或正定时，可逆，于是有唯一最小二乘解：
> $$
> W=(X^{\top}X)^{-1}X^{\top}Y
> $$
> 当 $X^{\top}X$ 不可逆时，存在多组最优参数，需要由归纳偏好、正则化或伪逆确定最终解。



最小二乘法和梯度下降的比较

1. 归纳偏好

指的是学习算法在从有限的观测数据中推断出一般规律时所依赖的假设或偏好。归纳偏好是必需的，因为学习算法通常面对的是无限的概念空间，而训练数据是有限的，因此算法必须做出某些假设，以便从有限的样本中推广到整个数据分布。
#### **损失函数的选取**
模型作出的预测有多准确，即告诉我们这个模型或参数选择所造成的损失/误差有多大

# 损失函数笔记

 1. 方差损失（L 2 损失）

$$L(y,\hat{y})=(y-\hat{y})^2$$

对于整个数据集，对应的 MSE 为：

$$L(\mathcal{D})=\frac{1}{n}\sum_{i=1}^{n}L(y_i,\hat{y}_i)$$

---

 2. 绝对误差（L 1 损失）及对应的 MAE

$$L(y,\hat{y})=|y-\hat{y}|$$

对于整个数据集：

$$L(\mathcal{D})=\frac{1}{n}\sum_{i=1}^{n}L(y_i,\hat{y}_i)$$

---

 3. `fit()` 是如何计算出最优参数的？

——梯度下降法

---

 4. L 2 损失比 L 1 损失对离群值更加敏感

---

5. L 1 损失是分段线性函数，这对于数值优化可能很慢或者不正确

![[MAE.png]]

![[MSE.png]]


所以如何找到一个函数，它既是平滑的，又对离群值不这么敏感？


$\mathrm{Huber~Loss}\left.L_{s}\left(y,\hat{y}\right)=\begin{cases}&\frac{1}{2}\left(y-\hat{y}\right)^{2}\left|y-\hat{y}\right|\leq\delta,\\\delta\left|y-\hat{y}\right|-\frac{1}{2}\delta^{2}otherwise,&\end{cases}\right\}$



![[Loss.png]]


当δ很小，接近L1 loss，当δ很大，接近L2 loss。

![[HuberLoss.png]]
![[HuberLossa=01.png]]

![[HuberLossa=1.png]]

![[HuberLossa20.png]]



#### **多元线性回归**
顾名思义，有多个参数乘以对应特征，再相加。此时，回归直线变成了回归平面。但是要避免过拟合。

![[机器学习10.png]]

（令人奇怪的是，人数（size）应该是离散的，但是线性模型是连续的）
#### 非数值类型
如日期，名字——独热编码。有这个特征为1，其余都为0；则结果为
$\text{x1x1+x2w2+x3w3}$


|         | Thur | Fri | Sat | Sun |
| :-----: | :--: | :-: | :-: | :-: |
| **193** |  1   |  0  |  0  |  0  |
| **90**  |  0   |  1  |  0  |  0  |
| **25**  |  0   |  0  |  1  |  0  |
| **26**  |  0   |  0  |  1  |  0  |
| **190** |  0   |  0  |  0  |  1  |
然而，也并非需要为每一种情况设置参数，而是分成四种模型。即

$x1*w1(ifThuelse0)+x2*w2(ifFrielse0)+x3*w3(ifSatelse0)$



1. 线性回归模型在分类任务的应用
### **逻辑回归**
逻辑回归也称作logistic回归分析，是一种广义的线性回归分析模型，属于机器学习中的监督学习。逻辑回归主要用来解决二分类问题（也具有解决多分类问题的能力）。逻辑回归本质是一种概率建模方法，通过学习输入特征与类别之间的关系，拟合类别的条件概率分布，从而用于分类任务。

因此我们需要一种方法能够将输入数据x（或者说是输出数据y）映射成0~1之间的数，然后分类（哪个标签对应的数（概率）最大）；
#### **函数的选取**
1. sigmoid函数

   
   $\sigma(x)=\frac{1}{1+e^{-x}}(Y=\sigma(X)=\frac{1}{1+e^{-X W}},fory\in Y\in[0,1]\sigma(Y)=\frac{1}{1+e^{-XW}})$
   优势：

   对于阶跃函数：函数是非连续且不可导的

2. 将输出限定在区间[0,1]
3. 函数平滑且连续，具有单调递增的特性，与分类目标一致
4. 与对数似然函数能够完美结合，使得参数优化简单高效
5. 提供了良好的概率解释，同时可以体现输入特征对类别的影响程度

其它逻辑回归模型（也叫做激活函数）：Tanh函数、ReLU函数（$(f(x)=\max\{0,x\}$ MACROBUTTONAMMPlaceRM\*MERGEFORMATSEQAMEqn\h\*MERGEFORMAT(11)）、ELU函数、LeakyReLU函数、ParametricReLU函数、Softmax函数（$f(x_{i})=\frac{e^{x_{i}}}{\sum_{j}e^{x_{i}}}$ MACROBUTTONAMMPlaceRM\*MERGEFORMATSEQAMEqn\h\*MERGEFORMAT(12)argmax函数（$x=arg\max\left(f(x)\right)$）的平滑版本）

激活函数是神经网络中的一个关键组件，使神经网络能够学习复杂的函数映射关系。它通常被用于神经网络的每个神经元中，对输入信号进行变换后再传递到下一层。同时，还能起到稳定输出的作用。
#### **似然性和极大似然估计**
1、**概率**：描述一个事件发生的可能性
**似然性**：已知一个事件发生，反推在什么参数条件下，这个事件发生的概率最大
- \(P(x|W)\)：参数 \(W\) 已知，某个事件 \(x\) 发生的条件概率
- \(L(W|x)\)：某件事 \(x\) 发生，未知参数 \(W\) 的似然函数


显然当 \(W = \hat{W}\) 时（即取得使得似然函数最大的参数值），\(L(W|x)\) 达到最大值。这代表当取得某个参数，似然函数的值到达了最大值时，反过来可以说明在这个参数下最有可能发生事件 \(x\)，即这个参数最合理。

1. 极大似然估计

思想：一个事件如果发生，那么发生这个事件的概率就是最大的，即让观测数据出现的可能性最大化

逻辑回归模型在分类问题的应用
### **SVM支持向量机**
# 无监督学习
**聚类**

聚类问题：按照某个特定标准把⼀个数据集分割成不同的类或簇，使得同⼀个簇内的数据对象的相似性尽可能⼤，同时不在同⼀个簇中的数据对象的差异性也尽可能地⼤。

这里只有数据，我们想到找到规律。

应⽤场景：

` `• 相似⽤户挖掘 

• 社区检测 

• 新闻聚类

推荐系统

分类：需要告诉⼀个分类器“这个东西被分为某类”。

聚类：⽬标只是把相似的东西聚到⼀起。⼀个聚类算法通常只需要知道如何计算相似度就可以进行。

相似度：连续特征（各种距离）、离散特征（SMC（简单匹配系数）、Jaccard系数）
### **K-Means**


```mermaid
flowchart TD
    A[开始K-Means] --> B[在数据集中随机选取k<br>个作为初始聚类质心<br>（坐标平均值）]
    B --> C{样本所属的簇未改变<br>样本簇未变动<br>聚类中心未变动}
    C -- N --> D[更新簇内质心]
    D --> B
    C -- Y --> E[结束K-Means]
```


终止条件：

•聚类中⼼未变动/变动幅度⼩于超参数

•样本簇未变动/变动幅度⼩于超参数

•迭代轮次⼤于超参数

•缺点1：中⼼点是所有同⼀类数据点的质⼼，所以聚类中⼼点可能不属于数据集的样本点。

•缺点2：计算距离时我们⽤的是L2距离的平⽅。对离群点很敏感，噪声（NoisyData）和离群点（Outlier）会把中⼼点拉偏，甚⾄改变分割线的位置。
### **聚合聚类**
### **层次聚类**
层次聚类（HierarchicalClustering）是⼀种常⽤的聚类分析⽅法，它不需要事先指定聚类的数量，⽽是通过构建⼀个由层次结构组成的聚类树（称为树状图或Dendrogram）来展⽰数据点之间的相似性。层次聚类主要有两种⽅法：凝聚型（Agglomerative）和分裂型（Divisive）。
### **EM聚类**

### **评价指标**
Distorson 如何让distorsion最小？

•有真实标签GroundTruthF1,Recall,Precision,NMI,ARI,...

•⽆真实标签

•紧密度：每个聚类簇中的样本点到聚类中⼼的平均距离；

•分割度：每个簇的簇⼼之间的平均距离；

•SSE：类中数据距离聚类中⼼的损失平⽅之和 $SSE=\sum_{x,k}(x_{i,k}-u_{k})^{2}$

•轮廓系数(SilhouetteCoefficient,SC)a：某个样本与其所在簇内其他样本的平均距离；b：某个样本与其他簇样本的平均距离；单个样本的轮廓系数 $\mathrm{s=\frac{b-a}{max(a,b)}:}\text{聚类总轮廓系数}\mathrm{SC=\frac{1}{n}\sum_{i=1}^{n}S_{i}}$ 
•CH指数(Calinski-HarabazIndex)

•DB指数(Davies-BouldinIndex)


**降维——特征选择的目的与方法**
### **PCA**
### **SVD**
### **ICA**

**神经网络**
### **感知机**
模拟人类神经元模型。与K-最近邻、逻辑回归、决策树一样，感知机也是一种分类模型。它是第一个在无人训练的情况下可以接收认知并分辨。他将学会记忆自己感知到的图片和信息。

神经元——到达阈值才会有输出信号；即，


感知机：


$f(x_{1},...,x_{d})=\begin{cases}1,if\sum_{i=1}^{d}w_{i}x_{i}+b>0\\0,otherwise&\end{cases}$

模型的优点在于，它的权重可以通过数据来学习。更新方式：

if $y = 1$, add $x$ to $w$ and add $1$ to $b$  
if $y = 0$, subtract $x$ from $w$ and subtract $1$ from $b$

更多的层和神经元，构成多层感知机（MLP）

` `• 又叫全连接层，常⽤作分类任务的最终输出分类器。对于⼀个新任务，也可
### **SVM支持向量机**
### **神经网络**
向前传播

梯度下降

反向传播

# 深度学习
**⼏ 个 经 典 的 深度学习 模 型/框架**
### **M L P 多层感知机**
### **C N N 卷积神经网络**
我们希望⼀个物体不管在画⾯左侧还是右侧，都会被识别为同⼀ 物体，这⼀特点就是平移不变性。为了实现平移不变性，卷积神 经⽹络（CNN）等深度学习模型在卷积层中使⽤了卷积操作，这 个操作可以捕捉到图像中的局部特征⽽不受其位置的影响。
#### **卷积操作**
卷积核通常是一个权重方阵。

卷积操作是指：将卷积核的中心放置在要计算的像素上，一次计算是将卷积核中每个元素和其覆盖的图像像素值的按位相乘并求和，得到的结果就是该位置的新像素值。

![[机器学习1.gif]]



![[机器学习2.gif]]

![[机器学习7.png]]

（卷积核）           			更抽象的特征


机器学习的定义，和人工智能、深度学习的区别？

深度学习<机器学习<人工智能

机器学习：从本质上来讲，机器学习就是让计算机发现数据中的规律。那么我们可以根据这个规律，来预测、作出决策……

深度学习：无人监督，主要利用神经网络学习数据。自己可以根据数据集自己更新参数。

（问题是，现在只知道神经网络那一套，正向传播-梯度下降-反向传播更新模型，还有其他更新参数的方式？）

最大的收获应该是实践了两个数据集，

1、CNN的手写识别体和MLP的房价预测。以及多个文件的合作。

2、第一篇纯英文的文献阅读。

接下来应该把机器学习这方面给补充完，比如说决策树、特征函数、PCA降维、SVM支持向量机和超平面等等。顺便把数学建模的方法一部分，比如模拟退火、蚁群算法、遗传算法、模糊数学等内容也得要加进来。

然后就是深度学习，学一下d2l。

希望能在大二暑假的时候进个实验室,

### **R N N  循环神经网络**
循环神经⽹络（Recurrent Neural Network, RNN），是⼀种⽤于处理序列数据的深度学习模型。它特别适⽤于 处理时间序列数据或者任何形式的序列，如⽂本、语⾳、视频等。RNN的核⼼特点是它能够捕捉数据中的时 间依赖性，即当前的输出不仅依赖于当前的输⼊，还依赖于之前的输⼊信息。
### **LSTM 长时短忆神经网络**

### **G N N图神经网络**
图神经⽹络（Graph Neural Networks, GNN）是⼀种基于图结构的深度学习⽅法，专门⽤于处理图数据。它通 过迭代地传递和聚合节点及其邻居的特征信息，从⽽学习节点和图的表⽰。GNN的核⼼思想是利⽤图结构数 据中的邻接关系，通过消息传递和节点更新的⽅式，让每个节点能够聚合来⾃其邻居节点的信息，以此来更 新⾃⾝的表征向量。这种模型能够捕捉到图的局部结构和全局拓扑特征，从⽽提取更丰富的特征表⽰，进⽽ 提升各种图分析任务的性能。GNN模型接收图作为输⼊，将信息加载到节点、边和全局上下⽂中，并逐步转 换这些嵌⼊，同时保持图的对称性（排列不变性）。图神经⽹络适⽤于包括社交⽹络分析、推荐系统、⽣物 信息学、知识图谱等多种应⽤场景。

**模型设计流程**

1. 数据准备（1、数据收集（公开基准数据集benchmark））2、数据清洗3、数据集切分（训练集、验证集、测试集）、4、数据预处理（将符号数值等转换成可计算的向量或矩阵，并归一化；标签转化成向量）5、数据打包（批次训练batch、Pytorch Dataset）

   我们重点来谈谈数据集的切分。

   我们首先将数据集划分为训练集和测试集，由于模型的构建过程中也需要检验模型的配置，以及训练程度是过拟合还是欠拟合，所以会将训练数据再划分为两个部分，一部分是用于训练的训练集，另一部分是进行检验的验证集

   •训练集：用于训练模型

   •验证集：验证模型的有效性，挑选获得最佳效果的模型

   •测试集：测试模型的最终效果，评估模型的准确率，以及误差等

   方法1留出法将数据集随机打乱后按比例分成训练集、验证集和测试集。

   方法 2交叉验证：将数据集划分成K个相等的部分，依次选择一部分作为测试集，剩下K-1个部分作为训练集，重复K次，最终综合各轮测试结果

   ![[机器学习5.png]]



1. 模型准备
2. 神经网络结构框架（函数定义，Sequential容器）
3. 选择合适的网络
4. 多层感知机——线性层nn.Linear
5. 卷积神经网络

   ResNet(残差网络),VGGNet,InceptionNet

   循环神经网络、LSTM、Transformer

   大规模预训练模型
![[机器学习6.png]]

1. 模型的训练、验证、测试

   训练状态

1. 正向传播加载数据塞入模型计算、预测
1. 计算误差（loss\_f(prediction,truth)）
1. 反向传播误差、调整更新模型权重参数

重复1、2、3直到模型收敛或者误差小到可接受或者到达预定轮数

影响因素：学习率、batchsize、epoch等超参数

`	`验证状态

`		`调试模型参数

`		`决定保存模型的节点

`	`测试状态

`		`评价指标计算

（训练集：用于调整模型参数，如权重、偏置；

验证集：调整超参数，它们是手动调整的，如学习率、正则化系数，是否过拟合，用来提高未见过数据的泛化能力；但是这些超参数其实通过训练集也可以调整，它们两个有什么不同？

测试集：用来评价模型，不会发生任何调整）

1. 模型的应用
# 强化学习
**GAN**

**自编码器**

**CNN**

**GNN**

**知识表征方法**
# 自监督学习



构造间隔理论分布：聚类分析和模式识别

- 人工神经网络
    
- 决策树
    
- 感知器
    
- 支持向量机
    
- 集成学习 AdaBoost
    
- 降维与度量学习
    
- 聚类
    
- 贝叶斯分类器
    

构造条件概率：回归分析和统计分类

- 高斯过程回归
    
- 线性判别分析
    
- 最近邻居法
    
- 径向基函数核
    

通过再生模型构造概率密度函数：

- 最大期望算法
    

**右侧内容：**

- 概率图模型：包括贝叶斯网和 Markov 随机场
    
- Generative Topographic Mapping
    
- 近似推断技术：
    
    - 马尔可夫链
        
    - 蒙特卡罗方法
        
    - 变分法
        
- 最优化：大多数以上方法，直接或者间接使用最优化算法。