机器学习

线性回归

误差项

拟合的线性函数如下,

\[h_{\theta}(x)=\sum_{i=0}^{n} \theta_{i} x_{i}=\theta^{T} x \]

对于每个样本,真实值和预测值之间的偏差,如下,

\[y^{(i)}=\theta^{T} x^{(i)}+\varepsilon^{(i)} \]

独立同分布

误差项是独立同分布的,并且服从均值为0方差为

\[\theta^2 \]

的正态分布。

极大似然估计

计算偏差

\[y^{(i)}=\theta^{T} x^{(i)}+\varepsilon^{(i)} \]

偏差服从正态分布

\[p\left(\epsilon^{(i)}\right)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(\epsilon^{(i)}\right)^{2}}{2 \sigma^{2}}\right) \]

偏差代入正态分布得到

\[p\left(y^{(i)} \mid x^{(i)} ; \theta\right)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}}{2 \sigma^{2}}\right) \]

求出似然函数如下

\[L(\theta)=\prod_{i=1}^{m} p\left(y^{(i)} \mid x^{(i)} ; \theta\right)=\prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}}{2 \sigma^{2}}\right) \]

获得对数似然函数

\[\log L(\theta)=\log \prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}}{2 \sigma^{2}}\right) \]

对似然函数求导

\[\begin{array}{l}\sum_{i=1}^{m} \log \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2}}{2 \sigma^{2}}\right) \\ =m \log \frac{1}{\sqrt{2 \pi} \sigma}-\frac{1}{\sigma^{2}} \cdot \frac{1}{2} \sum_{i=1}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2} .\end{array} \]

得到极大似然估计

\[J(\theta)=\frac{1}{2} \sum_{i=1}^{m}\left(y^{(i)}-\theta^{T} x^{(i)}\right)^{2} \]

这样就得到了误差函数,但是只有误差函数,我们没办法逼近优化,使用梯度下降算法就可以优化参数了。

梯度下降算法

目标函数如下

\[J(\theta)=\frac{1}{2 m} \sum_{i=1}^{m}\left(y^{i}-h_{\theta}\left(x^{i}\right)\right)^{2} \]

梯度下降沿着梯度的方向移动

批量梯度下降算法

\[\frac{\partial J(\theta)}{\partial \theta_{j}}=-\frac{1}{m} \sum_{i=1}^{m}\left(y^{i}-h_{\theta}\left(x^{i}\right)\right) x_{j}^{i} \quad \theta_{j}^{\prime}=\theta_{j}+\frac{1}{m} \sum_{i=1}^{m}\left(y^{i}-h_{\theta}\left(x^{i}\right)\right) x_{j}^{i} \]

沿着m个样本的求出的每个梯度的均值的负方向移动。

优点,容易得到最优解;缺点,每次要考虑所有的样本,速度慢。

随机梯度下降算法

\[\theta_{j}^{\prime}=\theta_{j}+\left(y^{i}-h_{\theta}\left(x^{i}\right)\right) x_{j}^{i} \]

每次找一个样本,求出梯度,沿着负方向移动。

优点,迭代速度快;缺点,不一定每次都朝着收敛的方向。

小批量梯度下降算法

\[\theta_{j}=\theta_{j}-\alpha \frac{1}{10} \sum_{k=i}^{i+9}\left(h_{\theta}\left(x^{(k)}\right)-y^{(k)}\right) x_{j}^{(k)} \]

采用小部分数据计算,比较实用,既有随机梯度下降的速度,也容易得到最优解。

评估指标

正类 负类
被检测到 TP FP
未被检测到 TN FN

true真的,false假的

positives正类,negatives负类

TP为正类检测为正类,FP为负类检测为正类

FN为正类检测为 d负类,TN为负类检测为负类

召回率(查全率)

\[recall =\frac{T P}{T P+F N} \]

精度(查准率)

\[precision =\frac{T P}{T P+F P} \]

F1 score

\[F_{1}=\frac{2}{\frac{1}{\text { precision }}+\frac{1}{\text { recall }}}=2 \times \frac{\text { precision } \times \text { recall }}{\text { precision }+ \text { recall }}=\frac{T P}{T P+\frac{F N+F P}{2}} \]

ROC曲线

\[TPR =\frac{T P}{T P+F N} \]

\[FPR =\frac{F P}{F P+T N} \]

横坐标是FPR,纵坐标是TPR,取不同阈值下的FPR和TPR绘制曲线。

如果曲线接近对角线或者在对角线以下,那么基本上就是瞎猜了。好的模型应该更加向着左上角凸出,因为,左上角表示预测正确。

根据ROC曲线,求出曲线和FPR轴围成的面积为AUC值,完美是1,随机分类器是0.5。

正则化

L1正则化(Lasso正则化)

在损失函数中添加模型参数的绝对值之和,以惩罚参数的绝对值。这倾向于产生稀疏的模型,即许多参数会变成零,从而可以自动进行特征选择。

L2正则化(Ridge正则化)

在损失函数中添加模型参数的平方和,以惩罚参数的平方。这倾向于使参数值趋于较小的值,但不会将它们彻底变为零,因此不会实现稀疏性,但可以降低模型的复杂度

弹性网络(Elastic Net)

是L1正则化和L2正则化的组合,结合了两者的优点,可以克服各自的缺点。

Dropout正则化

是一种在训练过程中随机丢弃网络中的一些单元(节点),以减少单个单元对整个网络的依赖性,从而减少过拟合的可能性。

逻辑回归(分类算法)

阶跃函数Sigmoid

\[g(z)=\frac{1}{1+e^{-z}} \]

线性函数进行sigmoid操作

\[h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}} \]

极大似然估计

对于分类任务

\[\begin{array}{l}P(y=1 \mid x ; \theta)=h_{\theta}(x) \\ P(y=0 \mid x ; \theta)=1-h_{\theta}(x)\end{array} \]

整合以上式子得出

\[P(y \mid x ; \theta)=\left(h_{\theta}(x)\right)^{\mathrm{y}}\left(1-h_{\theta}(x)\right)^{1-y} \]

得出似然函数

\[L(\theta)=\prod_{i=1}^{m} P\left(y_{i} \mid x_{i} ; \theta\right)=\prod_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)\right)^{y_{i}}\left(1-h_{\theta}\left(x_{i}\right)\right)^{1-y_{i}} \]

得出对数似然函数

\[l(\theta)=\log L(\theta)=\sum_{i=1}^{m}\left(y_{i} \log h_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right)\right) \]

以上极大似然,当然是越大越好,这样就需要梯度上升,转化为梯度下降如下

\[J(\theta)=-\frac{1}{m} l(\theta) \]

对似然函数求导

\[\begin{array}{l}l(\theta)=\log L(\theta)=\sum_{i=1}^{m}\left(y_{i} \log h_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right)\right) \\ \frac{\delta}{\delta_{\theta_{j}}} J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left(y_{i} \frac{1}{h_{\theta}\left(x_{i}\right)} \frac{\delta}{\delta_{\theta_{j}}} h_{\theta}\left(x_{i}\right)-\left(1-\mathrm{y}_{\mathrm{i}}\right) \frac{1}{1-h_{\theta}\left(x_{i}\right)} \frac{\delta}{\delta_{\theta_{j}}} h_{\theta}\left(x_{i}\right)\right) \\ =-\frac{1}{m} \sum_{i=1}^{m}\left(y_{i} \frac{1}{g\left(\theta^{\mathrm{T}} x_{i}\right)}-\left(1-\mathrm{y}_{\mathrm{i}}\right) \frac{1}{1-g\left(\theta^{\mathrm{T}} x_{i}\right)}\right) \frac{\delta}{\delta_{\theta}} g\left(\theta^{\mathrm{T}} x_{i}\right) \\ =-\frac{1}{m} \sum_{i=1}^{m}\left(y_{i} \frac{1}{g\left(\theta^{\mathrm{T}} x_{i}\right)}-\left(1-\mathrm{y}_{\mathrm{i}}\right) \frac{1}{1-g\left(\theta^{\mathrm{T}} x_{i}\right)}\right) g\left(\theta^{\mathrm{T}} x_{i}\right)\left(1-g\left(\theta^{\mathrm{T}} x_{i}\right)\right) \frac{\delta}{\delta_{\theta}} \theta^{\mathrm{T}} x_{i} \\ =-\frac{1}{m} \sum_{i=1}^{m}\left(y_{i}\left(1-g\left(\theta^{\mathrm{T}} x_{i}\right)\right)-\left(1-\mathrm{y}_{\mathrm{i}}\right) g\left(\theta^{\mathrm{T}} x_{i}\right)\right) x_{i}^{j} \\ =-\frac{1}{m} \sum_{i=1}^{m}\left(y_{i}-g\left(\theta^{\mathrm{T}} x_{i}\right)\right) x_{i}^{j}\end{array} \]

参数更新

\[\theta_{j}:=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)-y_{i}\right) x_{i}^{j} \]

多分类任务

多分类softmax

\[h_{\theta}\left(x^{(i)}\right)=\left[\begin{array}{c}p\left(y^{(i)}=1 \mid x^{(i)} ; \theta\right) \\ p\left(y^{(i)}=2 \mid x^{(i)} ; \theta\right) \\ \vdots \\ p\left(y^{(i)}=k \mid x^{(i)} ; \theta\right)\end{array}\right]=\frac{1}{\sum_{j=1}^{k} e^{\theta_{j}^{T} x^{(i)}}}\left[\begin{array}{c}e^{\theta_{1}^{T} x^{(i)}} \\ e^{\theta_{2}^{T} x^{(i)}} \\ \vdots \\ e^{\theta_{k}^{T} x^{(i)}}\end{array}\right] \]

\[\hat{p}_{k}=\sigma(\mathbf{s}(\mathbf{x}))_{k}=\frac{\exp \left(s_{k}(\mathbf{x})\right)}{\sum_{j=1}^{K} \exp \left(s_{j}(\mathbf{x})\right)} \]

损失函数交叉熵

\[J(\Theta)=-\frac{1}{m} \sum_{i=1}^{m} \sum_{k=1}^{K} y_{k}^{(i)} \log \left(\hat{p}_{k}^{(i)}\right) \]

聚类算法

这个算法是无监督算法,没有标签。

K-MEANS算法

基本概念

  1. 要得到蔟的个数,需要指定K值
  2. 质心:均值,向量各维度取平均值
  3. 距离的度量:常用欧几里得距离和余弦相似度(先标准化)
  4. 优化目标如下,

\[\min \sum_{i=1}^{K} \sum_{x \in C_{i}} \operatorname{dist}\left(c_{i}, x\right)^{2} \]

算法流程

对a图中如果是要分成两个蔟,随机选择两个点如图b,以每个点选择距离自己最近为标准进行聚类得到c,计算两个蔟的质心为图d,继续以上操作得到图e、f,一直迭代,直到质心不再变化。

优缺点

优势,简单、快速、适合常规数据集

劣势,K值难确定、复杂度与样本呈线性关系、很难发现任意形状的簇,初始值对结果影响非常大,建议随机做多次取平均。

DBSCAN聚类算法

基本概念(Density-Based Spatial Clustering of Applications with Noise)

  1. 核心对象:若某个点的密度达到算法设定的阈值则其为核心点。(即r邻域内点的数量不小于minPts)
  2. 邻域内的距离阈值:设定的半径r
  3. 直接密度可达:若某点p在点q的r邻域内,且q是核心点则p-q直接密度可达。
  4. 密度可达:若有一个点的序列\(q_{0}\)\(q_{1}\)、...\(q_{k}\),对任意\(q_{i}-q_{i-1}\)是直接密度可达的,则称从\(q_{0}\)\(q_{k}\)密度可达,这实际上是直接密度可达的“传播“。
  5. 密度相连:若从某核心点p出发,点q和点k都是密度可达的,则称点q和点k是密度相连的。
  6. 边界点:属于某一个类的非核心点,不能发展下线了。
  7. 噪声点:不属于任何一个类蔟的点,从任何一个核心点出发都是密度可达的。

A为核心对象;B、C为边界点;N为离群点。

其实还可以通过找离群点,做异常检测任务。

算法流程

以下参数D:输入数据集;参数r:指定半径;MinPts:密度阈值。

标记所有对象为unvisited;
Do
随机选择一个unvisited对象p;
标记p为visited;
If p的r领域内至少有MinPts个对象
  创建一个新簇C,并把p添加到C;
  令N为p的r领域中的对象集合
  For N中每个点p
    If p是unvisited;
      标记p为visited;
      If p的r领域至少有MinPts个对象,把这些对象添加到N;
      If p还不是任何簇的成员,把p添加到C;
  End For;
  输出C;
Else 标记p为噪声;
Until没有标记为unvisited的对象;

参数选择

半径r:可以根据K距离来设定,找突变点K距离,给定数据集P={p(i);i=0,1,...n},计算点p(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k-距离。

MinPts:k-距离中k的值,一般取的小一些,多次尝试。

优缺点

优点:不需要指定簇的个数、可以发现任意形状的簇、擅长找到离群点(检测任务)、两个参数就够了,没有额外的参数。

缺点:高维数据有些困难(可以做降维)、参数难以选择(参数对结果的影响非常大)、SKLearn库上的效率很慢(数据削减策略)

posted @ 2024-02-28 10:42  CallMeRoot  阅读(6)  评论(0编辑  收藏  举报