超级简单的机器学习入门

news2025/7/3 3:31:36

超级简单的机器学习入门

文章目录

  • 超级简单的机器学习入门
    • 0.写在前面
    • 1.机器学习基本概念
    • 2.机器学习算法的类型
      • 2.1 监督学习
      • 2.2 无监督学习
      • 2.3 监督学习和无监督学习的对比
      • 2.4 强化学习
    • 3.机器学习的三个基本要素
      • 3.1 模型
      • 3.2 学习准则
        • 3.2.1 损失函数
        • 3.2.2 欠拟合和过拟合(包含正则化)
      • 3.3 优化方法
        • 3.3.1 梯度下降法(重要!)
        • 3.3.2 数据预处理
        • 3.3.3 提前停止
        • 3.3.4 超参数优化
    • 4.线性模型
      • 4.1 感知器
      • 4.2 Logistic回归
      • 4.3 Softmax回归
      • 4.4 支持向量机
        • 4.4.1 参数学习
        • 4.4.2 核函数
        • 4.4.3 软间隔
      • 4.5 损失函数对比
    • 5. 写在最后

0.写在前面

本文大多数内容来自《神经网络与深度学习》(邱锡鹏,神经网络与深度学习,机械工业出版社,https://nndl.github.io/, 2020.)周志华-机器学习也参考了很多其他笔记博客仅作为学习记录


1.机器学习基本概念

① 机器学习是什么?

机器学习就是让计算机从数据中进行自动学习,得到某种知识或规律。

② 样本和数据集

​我们可以将一个标记好特征以及标签看作一个样本。

​一组样本构成的集合称为数据集。一般将数据集分为两部分:训练集和测试集

​训练集中的样本是用来训练模型的,而测试集中的样本是用来检验模型好坏的。

③ 学习与训练

​ 我们通常用一个𝐷 维向量 𝒙 = [ 𝑥 1 , 𝑥 2 , ⋯ , 𝑥 𝐷 ] T 𝒙 = [𝑥_1 , 𝑥_2 , ⋯ , 𝑥_𝐷] ^T x=[x1,x2,,xD]T 表示所有特征构成的向量,称为特征向量,其中每一维表示一个特征。

​ 假设训练集 𝒟 由 𝑁 个样本组成,其中每个样本都是独立同分布的,计为: 𝒟 = ( 𝒙 ( 1 ) , 𝑦 ( 1 ) ) , ( 𝒙 ( 2 ) , 𝑦 ( 2 ) ) , ⋯ , ( 𝒙 ( 𝑁 ) , 𝑦 ( 𝑁 ) ) . 𝒟 = {(𝒙^{(1)}, 𝑦^{(1)}), (𝒙^{(2)}, 𝑦^{(2)}), ⋯ , (𝒙^{(𝑁)}, 𝑦^{(𝑁)})}. D=(x(1),y(1)),(x(2),y(2)),,(x(N),y(N)).

​ 我们希望让计算机从一个函数集合 F = 𝑓 1 ( 𝒙 ) , 𝑓 2 ( 𝒙 ) , ⋯ ℱ = {𝑓_1 (𝒙), 𝑓_2 (𝒙), ⋯} F=f1(x),f2(x), 中自动寻找一个“最优”的函数𝑓∗(𝒙) 来近似每个样本的特征向量 𝒙 和标签 𝑦 之间的真实映射关系,找到这个最优函数的过程就叫做学习训练

以下给出一个学习的基本流程:
在这里插入图片描述

通过训练集,不断识别特征,不断建模,最后形成有效的模型,这个过程就叫“机器学习”!


2.机器学习算法的类型

2.1 监督学习

​如果机器学习的目标是建模样本的特征 𝒙 和标签 𝑦 之间的关系,并且训练集中每个样本都有标签,那么这类机器学习称为监督学习。

​根据标签类型的不同,监督学习又可以分为回归问题分类问题结构化学习问题。

​ (1) 回归问题中的标签 𝑦 是连续值, 𝑓(𝒙; 𝜃)的输出也是连续值。比如未来几年预测房屋价格的走势,价格是一个连续的值。最后会按照顺序把输出值串接起来,构成一个曲线。

一元线性回归
一元线性回归是最简单,最基础的一种模型,是探究两个变量之间关系的一种统计分析方法。其模型为为:
y = a x + b y=ax+b y=ax+b其中 x x x为自变量, y y y为因变量, a a a b b b为回归系数
求解方法为最小二乘法
{ a = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 b = y ˉ − a x ˉ \left\{\begin{array}{l} a=\frac{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)}{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}} \\ b=\bar{y}-a \bar{x} \end{array}\right. {a=i=1n(xixˉ)2i=1n(xixˉ)(yiyˉ)b=yˉaxˉ

多元线性回归
探究一个因变量和多个自变量之间关系的一种统计分析方法​,其模型为:
y = a l x 1 + a 2 x 2 + … + a n x n + b y=a_{l} x_{1}+a_{2} x_{2}+\ldots+a_{n} x_{n}+b y=alx1+a2x2++anxn+b其中 y y y为因变量, x 1 , x 2 , … , x n 为自变量 {x_1,x_2,…,x_n为自变量} x1,x2,,xn为自变量 a 1 , a 2 , a 3 … , a n , b a_1,a_2,a_3…,a_n,b a1,a2,a3,an,b 为回归系数
求解方法类似一元线性回归,使用最小二乘法
利用线性代数的形式,对多元线性回归的误差公式求导为:
∂ R ( w ) ∂ w = 1 2 ∂ ∥ y − X ⊤ w ∥ 2 ∂ w = − X ( y − X ⊤ w ) \begin{aligned} \frac{\partial \mathcal{R}(\boldsymbol{w})}{\partial \boldsymbol{w}} &=\frac{1}{2} \frac{\partial\left\|\boldsymbol{y}-\boldsymbol{X}^{\top} \boldsymbol{w}\right\|^{2}}{\partial \boldsymbol{w}} \\ &=-\boldsymbol{X}\left(\boldsymbol{y}-\boldsymbol{X}^{\top} \boldsymbol{w}\right) \end{aligned} wR(w)=21w yXw 2=X(yXw) ∂ ∂ w R ( w ) = 0 \frac{\partial}{\partial \boldsymbol{w}} \mathcal{R}(\boldsymbol{w})=0 wR(w)=0 , 得到最优的参数 w ∗ \boldsymbol{w}^{*} w 为: w ∗ = ( X X ⊤ ) − 1 X y \boldsymbol{w}^{*}=\left(\boldsymbol{X} \boldsymbol{X}^{\top}\right)^{-1} \boldsymbol{X} \boldsymbol{y} w=(XX)1Xy

用最小二乘法来进行线性回归参数学习的图示
在这里插入图片描述
核心代码

from sklearn.linear_model import LinearRegression
#调用最小二乘法函数求回归系数
model=LinearRegression()
model.fit(x_train,y_train)
# 显示斜率
a = model.coef_[0]
# 显示截距
b = model.intercept_
# 预测结果
predict = model.predict(x_test)

(2)分类问题中的标签 𝑦 是离散的类别。在分类问题中,学习到的模型也称为分类器。分类问题根据其类别数量又可分为二分类多分类问题。上面提到的猫狗识别例子就是一个二分类的问题,因为它输出的结果不是猫就是狗。
其中分类问题中最常用的算法就是KNN(k近邻算法)

KNN
KNN的原理就是当预测一个新的值x的时候,选择它距离最近的k个点,这k个点中属于哪个类别的点最多,x就属于哪个类别

其中K的选择很重要!!!,如图所示,不同的K计算出的结果是不一样的!!

在这里插入图片描述

KNN核心代码

from sklearn import  preprocessing 
from sklearn import neighbors
#数据标准化
scaler = preprocessing.StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test) 
模型计算
# 调用KNN算法包训练模型
knn = neighbors.KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train,y_train)
# 检验模型
y_pred = knn.predict(X_test)

​ (3)结构化学习是一种特殊的分类问题。我们之前学习到的学习模型的输入与输出一直以来都是向量,但是在实际问题中,我们的输入输出可能是别的结构。比如,我们可能会需要输入输出是序列、列表或者树。它的输出空间比较大,通常用动态规划的方式解决。(在入门阶段简单了解概念就好)


2.2 无监督学习

​无监督学习是指从不包含目标标签的训练样本中自动学习到一些有价值的信息。

  • 典型的无监督学习问题有聚类密度估计特征学习降维等,其中聚类降维比较常用。

(1)聚类就是按照某个特定标准把一个数据集分割成不同的类或簇。最经典的就是k-means算法聚类,它的流程为:

  1. 随机地选择k个点,每个点代表一个簇的中心;
  2. 将其他所有对象根据其与各簇中心的距离,将它赋给最近的簇;
  3. 重新计算每个簇的平均值,更新为新的簇中心;
  4. 不断重复2、3,直到准则函数收敛。

    以下这个图很好地表示了k-means聚类的过程
    在这里插入图片描述
    k-means核心代码
from sklearn import  preprocessing 
from sklearn.cluster import KMeans
# 将属性缩放到一个指定范围,即(x-min)/(max-min)
scaler = preprocessing.MinMaxScaler().fit(X_train)
X_train = scaler.transform(X_train)
模型计算
# 调用k-means算法包训练模型
model_km = KMeans(n_clusters=3)#指定分类
model_km.fit(X_train)
label_pred = model_km.labels_ #获取聚类标签
centroids = model_km.cluster_centers_ #获取聚类中心

(2) 降维一种能在减少数据集中特征数量的同时,避免丢失太多信息并保持/改进模型性能的方法, 其中最常用的一种算法就是PCA, 也称主成分分析法.

PCA
PCA的主要思想是降维,把多指标转化为少数几个综合指标.
我们从几何角度来理解一下降维

以二维空间为例,有这样一些点分布在直角坐标系中,我们观察可以发现,无论是丢弃 x 1 x_1 x1选择 x 2 x_2 x2, 还是丢弃 x 2 x_2 x2选择 x 1 x_1 x1都不能很好地体现这些点的特征.在这里插入图片描述

但是,如果我们将 x 1 x_1 x1轴和 x 2 x_2 x2轴平移和旋转一下, 变成 F 1 F_1 F1轴和 F 2 F_2 F2
{ F 1 = x 1 cos ⁡ θ + x 2 sin ⁡ θ F 2 = − x 1 sin ⁡ θ + x 2 cos ⁡ θ \left\{\begin{array}{l} F_{1}=x_{1} \cos \theta+x_{2} \sin \theta \\ F_{2}=-x_{1} \sin \theta+x_{2} \cos \theta \end{array}\right. {F1=x1cosθ+x2sinθF2=x1sinθ+x2cosθ
在这里插入图片描述
观察可以发现, 旋转变换后n个样品点在 F 1 F_1 F1轴方向上的离散程度最大, 变量 F 1 F_1 F1代表了原始数据的绝大部分信息,在研究某些问题时,即使不考虑变量 F 2 F_2 F2也无损大局。

我们将其推广到更高的维度上, 有:
[ F 1 = u 11 X 1 + u 21 X 2 + ⋯ + u p 1 X p F 2 = u 12 X 1 + u 22 X 2 + ⋯ + u p 2 X p ⋯ ⋯ F p = u 1 p X 1 + u 2 p X 2 + ⋯ + u p p X p \left[\begin{array}{rl} F_{1}= & u_{11} X_{1}+u_{21} X_{2}+\cdots+u_{p 1} X_{p} \\ F_{2}= & u_{12} X_{1}+u_{22} X_{2}+\cdots+u_{p 2} X_{p} \\ & \cdots \cdots \\ F_{p}= & u_{1 p} X_{1}+u_{2 p} X_{2}+\cdots+u_{p p} X_{p} \end{array}\right. F1=F2=Fp=u11X1+u21X2++up1Xpu12X1+u22X2++up2Xp⋯⋯u1pX1+u2pX2++uppXp其中 F 1 F_1 F1被成为第一主成分, F 2 F_2 F2被称为第二主成分, 我们通常选择前k个主成分, 一般保留的信息大于85%.

PCA核心代码

from sklearn.preprocessing import MinMaxScaler
from sklearn.decomposition import PCA
#将属性缩放到一个指定范围,即(x-min)/(max-min)
scaler = MinMaxScaler()
scale_data = pd.DataFrame(scaler.fit_transform(datanew))
# PCA降维'
#选择保留85%以上的信息时,自动保留主成分
pca = PCA(0.85)
data_pca = pca.fit_transform(scale_data) #data_pca就是降维后的数据

2.3 监督学习和无监督学习的对比

举个监督学习的栗子:

​我们把一大堆的猫和狗的照片给机器,让机器识别出哪些是猫哪些是狗。当我们使用监督学习的时候,需要给这些照片打上标签

在这里插入图片描述
​ 我们给照片打的标签就是“正确答案”,机器通过大量学习,就可以学会在新照片中认出猫和狗。

举个无监督学习的栗子:

​我们还是一堆猫和狗的照片给机器,不给这些照片打任何标签,但是我们希望机器能够将这些照片分分类。
在这里插入图片描述
​通过学习,机器会把这些照片分为2类,一类都是猫的照片,一类都是狗的照片。虽然跟上面的监督学习看上去结果差不多,但是有着本质的差别:

非监督学习中,虽然照片分为了猫和狗,但是机器并不知道哪个是猫,哪个是狗。对于机器来说,相当于分成了 A、B 两类。

  1. 监督学习是一种目的明确的训练方式,你知道得到的是什么;而无监督学习则是没有明确目的的训练方式,你无法提前知道结果是什么
  2. 监督学习需要给数据打标签;而无监督学习不需要给数据打标签。一般而言, 监督学习通常需要大量的有标签数据集,这些数据集一般都需要由人工进行标 注,成本很高。
  3. 监督学习由于目标明确,所以可以衡量效果;而无监督学习几乎无法量化效果如何

2.4 强化学习

强化学习是一类通过交互来学习的。它有两个重要的特征:反复实验和延迟奖励

比如说:你想让小健同学好好学习算法。在这个过程中,要经历很多东西,比如看视频学习,刷题,打练习赛等等,要经过一段时间的ACM正式比赛才能知道小健同学的成果好不好。若正式比赛好成绩作为小健同学学习算法的奖励,这个不是一蹴而成的,需要正式比赛后才能给出反馈这个执行的过程对不对。因此,小健同学要根据比赛的结果多次摸索练习才能获得最优的学习方法。


3.机器学习的三个基本要素

机器学习方法可以粗略地分为三个基本要素:模型学习准则优化算法

3.1 模型

对于一个机器学习任务,首先要确定其输入空间𝒳输出空间𝒴.不同机器
学习任务的主要区别在于输出空间不同.在二分类问题中𝒴 = {+1, −1},在𝐶分类问题中𝒴 = {1, 2, ⋯ , 𝐶},而在回归问题中𝒴 = ℝ

我们假设有一个“最优”的函数𝑓∗(𝒙) 可以描述输入空间𝒳输出空间𝒴的真实映射关系,在一个我们假设的参数化的函数族ℱ = {𝑓(𝒙; 𝜃)|𝜃 ∈ ℝ𝐷}中取得。其中𝑓(𝒙; 𝜃)是参数为𝜃 的函数,也称为模型,𝐷 为参数的数量。

其中模型大致可以分为线性模型非线性模型


3.2 学习准则

一个好的模型 𝑓(𝒙, 𝜃∗) 应该在所有 (𝒙, 𝑦) 的可能取值上都与真实映射函数𝑦 = 𝑔(𝒙)一致,即|𝑓(𝒙, 𝜃∗ ) − 𝑦| < 𝜖, ∀(𝒙, 𝑦) ∈ 𝒳 × 𝒴,

这时候,我们还要引入一个很重要的概念:损失函数

3.2.1 损失函数

损失函数是一个非负实数函数,用来量化模型预测和真实标签之间的差异。下面介绍几种常用的损失函数。

0-1 损失函数

最直观的损失函数是表现模型在训练集上的错误率,即0-1 损失函数:
当预测值和真实值相等时,结果为0,否则为1
L ( y , f ( x ; θ ) ) = { 0  if  y = f ( x ; θ ) 1  if  y ≠ f ( x ; θ ) \begin{aligned} \mathcal{L}(y, f(\boldsymbol{x} ; \theta)) &=\left\{\begin{array}{cc} 0 & \text { if } y=f(\boldsymbol{x} ; \theta) \\ 1 & \text { if } y \neq f(\boldsymbol{x} ; \theta) \end{array}\right.\\ \end{aligned} L(y,f(x;θ))={01 if y=f(x;θ) if y=f(x;θ)
优点: 能够客观地评价模型的好坏
缺点: 不连续且导数为0,难以优化

平方损失函数

平方损失函数经常用在预测标签𝑦为实数值的任务中,定义为
L ( y , f ( x ; θ ) ) = 1 2 ( y − f ( x ; θ ) ) 2 \mathcal{L}(y, f(\boldsymbol{x} ; \theta))=\frac{1}{2}(y-f(\boldsymbol{x} ; \theta))^{2} L(y,f(x;θ))=21(yf(x;θ))2
平方损失函数一般不适用于分类问题.

交叉熵损失函数

对于两个概率分布,一般可以用交叉熵来衡量它们的差异.
𝒚和模型预测分布𝑓(𝒙; 𝜃)之间的交叉熵为
L ( y , f ( x ; θ ) ) = − y ⊤ log ⁡ f ( x ; θ ) = − ∑ c = 1 C y c log ⁡ f c ( x ; θ ) \begin{aligned} \mathcal{L}(\boldsymbol{y}, f(\boldsymbol{x} ; \theta)) &=-\boldsymbol{y}^{\top} \log f(\boldsymbol{x} ; \theta) \\ &=-\sum_{c=1}^{C} y_{c} \log f_{c}(\boldsymbol{x} ; \theta) \end{aligned} L(y,f(x;θ))=ylogf(x;θ)=c=1Cyclogfc(x;θ)
比如对于三分类问题,一个样本的标签向量为 𝒚 = [ 0 , 0 , 1 ] T 𝒚 = [0, 0, 1]^T y=[0,0,1]T
模型预测的标签分布为 f ( x ; θ ) = [ 0.3 , 0.3 , 0.4 ] ⊤ f(\boldsymbol{x} ; \theta)=[0.3,0.3,0.4]^{\top} f(x;θ)=[0.3,0.3,0.4]
则它们的交叉熵为 − ( 0 × l o g ( 0.3 ) + 0 × l o g ( 0.3 ) + 1 × l o g ( 0.4 ) ) = − l o g ( 0.4 ) −(0 × log(0.3) + 0 ×log(0.3) + 1 × log(0.4)) = − log(0.4) (0×log(0.3)+0×log(0.3)+1×log(0.4))=log(0.4)

Hinge 损失函数

对于二分类问题,假设 𝑦 的取值为 {−1, +1},𝑓(𝒙; 𝜃) ∈ ℝ.
Hinge损失函数
L ( y , f ( x ; θ ) ) = max ⁡ ( 0 , 1 − y f ( x ; θ ) ) \mathcal{L}(y, f(\boldsymbol{x} ; \theta))=\max (0,1-y f(\boldsymbol{x} ; \theta)) L(y,f(x;θ))=max(0,1yf(x;θ))

3.2.2 欠拟合和过拟合(包含正则化)

欠拟合:泛化能力差,训练样本集准确率低,测试样本集准确率低。
过拟合:泛化能力差,训练样本集准确率高,测试样本集准确率低。
合适的拟合程度:泛化能力强,训练样本集准确率高,测试样本集准确率高

在这里插入图片描述

欠拟合问题往往是由于模型复杂度过低,特征量过少造成的,可以采用提高样本数量和提高模型复杂度等方法解决。
过拟合问题往往是由于训练数据少和噪声以及模型能力强等原因造成的.为了解决过拟合问题,一般会引入参数的正则化

这时候我们又要引入一个很常见的概念了,什么是正则化?

我们引入一条公式来举例子
h w ( x ) = w 0 + w 1 x 1 + w 2 x 2 2 + w 3 x 3 3 + w 4 x 4 4 h_{w}(x)=w_{0}+w_{1} x_{1}+w_{2} x_{2}^{2}+w_{3} x_{3}^{3}+w_{4} x_{4}^{4} hw(x)=w0+w1x1+w2x22+w3x33+w4x44
我们可以看到,这条公式中的参数太多了,这就会导致如上图三出现的那种弯弯曲曲的情况
其实,像上图二,用公式 h w ( x ) = w 0 + w 1 x 1 + w 2 x 2 2 h_{w}(x)=w_{0}+w_{1} x_{1}+w_{2} x_{2}^{2} hw(x)=w0+w1x1+w2x22就能很好地拟合
当然也可以写成 h w ( x ) = w 0 + w 1 x 1 + w 2 x 2 2 + 0 x 3 3 + 0 x 4 4 h_{w}(x)=w_{0}+w_{1} x_{1}+w_{2} x_{2}^{2}+0x_{3}^{3}+0 x_{4}^{4} hw(x)=w0+w1x1+w2x22+0x33+0x44
这时候正则化就能派上用场了

假设我们的预测值 y p r e i = w i x i y_{pre_i}=w_{i} x_{i} yprei=wixi
再假设我们本来求误差的方式是这样的:
J ( x ) = ∑ i = 1 N ( w i x i − y i ) 2 . J(x)= \sum_{i=1}^{N}\left(w_{i} x_{i}-y_{i}\right)^{2}. J(x)=i=1N(wixiyi)2.
我们当然想要求得一个 m i n J ( x ) minJ(x) minJ(x)
下面我们就要利用正则化改进这个误差公式,对这些参数进行约束了,也就是一种对参数的惩罚
正则化又很多种,常见的有 l 1 l_1 l1正则和 l 2 l_2 l2正则

以下是 l 1 l_1 l1正则,以 l 1 l_1 l1范数为约束
{ min ⁡ ∑ i = 1 N ( w i x i − y i ) 2 ∣ w 1 ∣ + ∣ w 2 ∣ + … ∣ w N ∣ ⩽ m \left\{\begin{array}{l} \min \sum_{i=1}^{N}\left(w_{i} x_{i}-y_{i}\right)^{2} \\ \left|w_{1}\right|+\left|w_{2}\right|+… \left|w_{N}\right|\leqslant m \end{array}\right. {mini=1N(wixiyi)2w1+w2+wNm
假设我们现在只有 w 1 w_1 w1 w 2 w_2 w2两个系数,画成图是酱紫的在这里插入图片描述

以下是 l 2 l_2 l2正则,以 l 2 l_2 l2范数为约束
{ min ⁡ ∑ i = 1 N ( w i x i − y i ) 2 w 1 2 + w 2 2 + … w N 2 ⩽ m \left\{\begin{array}{l} \min \sum_{i=1}^{N}\left(w_{i} x_{i}-y_{i}\right)^{2} \\ w_{1}^2+w_{2}^2+…w_{N}^2\leqslant m \end{array}\right. {mini=1N(wixiyi)2w12+w22+wN2m
假设我们现在只有 w 1 w_1 w1 w 2 w_2 w2两个系数,画成图是酱紫的在这里插入图片描述

聪明的你应该能看出来 l 1 l_1 l1 l 2 l_2 l2正则的区别叭!!!
当然,它们的共同点,也是最重要的点,就是在第二个不等式把参数限制在了一定的范围内啦,这样就可以防止一些参数过多过大
在上图中的几何意义就是,在取一个点在左下角黑框图形的范围内(包括边界),使它和右上角图形的中心的距离最小,那么这个点一定在两个图形相切的地方取到!!!也就是彩色等值线与黑色图形首次相交的地方!!!

这时候我们引入一个系数 λ \lambda λ表示左下角黑框图形的大小,这个 λ \lambda λ的取值完全由我们来决定( λ ≥ 0 \lambda \ge 0 λ0)。
λ越小,L图形越大,参数可以取得的范围就越广;λ 越大,图形就越小,参数取得的范围就越小。

因此,在有约束条件的情况下:
l 1 l_1 l1正则化等价于求 ∑ i = 1 N ( w i x i − y i ) 2 + λ ( ( ∣ w 1 ∣ + ∣ w 2 ∣ + … ∣ w N ∣ ) − m ) \sum_{i=1}^{N}\left(w_{i} x_{i}-y_{i}\right)^{2}+\lambda((\left|w_{1}\right|+\left|w_{2}\right|+… \left|w_{N}\right|)-m) i=1N(wixiyi)2+λ((w1+w2+wN)m)导数为0的点
l 2 l_2 l2正则化等价于求 ∑ i = 1 N ( w i x i − y i ) 2 + λ ( ( w 1 2 + w 2 2 + … w N 2 ) − m ) \sum_{i=1}^{N}\left(w_{i} x_{i}-y_{i}\right)^{2}+\lambda((w_{1}^2+w_{2}^2+…w_{N}^2)-m) i=1N(wixiyi)2+λ((w12+w22+wN2)m)导数为0的点

为啥可以这么等价呢???
设式子的第一个部分为 f ( x ) f(x) f(x),式子的第二个部分为 λ g ( x ) \lambda g(x) λg(x),整个式子导数为0的点是 ∇ f ( x ) + λ ∇ g ( x ) = 0 \nabla f(x) + \lambda \nabla g(x) = 0 f(x)+λg(x)=0 的点,也就是两个式子导数互为相反数的点。在满足这个条件下,这个点就位于两个图形相切的地方。这是几何上的直观证明,数学公式证明我们后面再来和大家详细说说。

那么 l 1 l_1 l1正则化和 l 2 l_2 l2正则化有什么区别呢??

l 1 l_1 l1函数更利于稀疏化(更多的参数取得0值), l 2 l_2 l2函数处处可导,更易计算。

为什么 l 1 l_1 l1函数更利于稀疏化呢??比较直观一点理解,因为 l 1 l_1 l1函数有很多突出的角(二维情况下四个,多维情况下更多),误差函数与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上,会有很多权值等于0(比如图中的 w 1 w_1 w1等于0),这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。


下面再来看给大家看看不同范数的图示叭
在这里插入图片描述


3.3 优化方法

 如何找到最优的模型𝑓(𝒙, 𝜃∗) 就成了一个最优化问题.机器学习的训练过程其实就是最优化问题的求解过程

3.3.1 梯度下降法(重要!)

 在机器学习中,最简单、常用的优化算法就是梯度下降法,我们可以不断往负梯度的方向搜索(也就是导数或者偏导数的相反方向),直到达到最低点。
 梯度下降可以理解为你站在山的某处,想要下山,此时最快的下山方式就是你环顾四周,哪里最陡峭,朝哪里下山,一直执行这个策略,在第N个循环后,你就到达了山的最低处。
 可以看出梯度下降有时得到的是局部最优解,如果损失函数是凸函数,梯度下降法得到的解就是全局最优解
 凸函数只有一个最低点,也就是极值点就是最值点,任意两点的连线必然在函数的上方,而非凸函数有多个极值点。
在这里插入图片描述

在二维中表示梯度下降的流程是这样子的:
在这里插入图片描述
在三维中表示梯度下降的流程是这样子的:
在这里插入图片描述
比如下面这幅图非凸函数可能找到的就是局部最优解,而不是全局最优解。
在这里插入图片描述

在高维空间中,非凸优化的难点并不在于如何逃离局部最优点,而是如何逃离鞍点,鞍点的梯度是0,但是在一些维度上是最高点,在另一些维度上是最低点,如图所示:
在这里插入图片描述

解决这个的方法通常为通过在梯度方向上引入随机性

但幸好,我们上面提到的平方损失函数就是凸函数,可以找到全局最优解。
在这里插入图片描述
损失函数的迭代公式为
Θ 1 = Θ 0 − α ∇ J ( Θ ) \Theta^{1}=\Theta^{0}-\alpha \nabla J(\Theta) Θ1=Θ0αJ(Θ)
其中 Θ t \Theta^{t} Θt 为第 𝑡 次迭代时的参数值,𝛼为搜索步长.在机器学习中,𝛼一般称为学习率。

这个学习率的大小是很有讲究的,如果学习率太小,要很慢才能到达最低点;如果学习率太大,很容易错过最低点。

以下这幅图展现了不同学习率的情况。
在这里插入图片描述

所以,选择一个合适的学习率是很重要的!!!‘

通常,这个学习率是不断调整的,学习率在一开始要保持大些来保证收敛速度,在收敛到最优点附近时要小些以避免来回振荡。

常见的学习率衰减的方法有:分段常数衰减逆时衰减指数衰减自然指数衰减余弦衰减

① 分段常数衰减:通俗易懂地理解为阶梯衰减即每经过 𝑇 1 , 𝑇 2 , ⋯ , 𝑇 𝑚 𝑇_1, 𝑇_2, ⋯ , 𝑇_𝑚 T1,T2,,Tm 次迭代将学习率衰减为原来的 β 1 , β 2 , ⋯ , β 𝑚 \beta_1, \beta_2, ⋯ , \beta_𝑚 β1,β2,,βm,其中 𝑇 𝑚 𝑇_𝑚 Tm β 𝑚 < 1 \beta_𝑚 < 1 βm<1 为根据经验设置的超参数.

② 逆时衰减
α t = α 0 1 1 + β × t ,  \alpha_{t}=\alpha_{0} \frac{1}{1+\beta \times t} \text {, } αt=α01+β×t1其中𝛽为衰减率

③ 指数衰减:
α t = α 0 β t , \alpha_{t}=\alpha_{0} \beta^{t}, αt=α0βt,其中𝛽 < 1为衰减率.

④ 自然指数衰减:
α t = α 0 e ( − β × t ) \alpha_{t}=\alpha_{0} e^ {(-\beta \times t)} αt=α0e(β×t)其中𝛽 为衰减率.

⑤ 余弦衰减:
α t = 1 2 α 0 ( 1 + cos ⁡ ( t π T ) ) , \alpha_{t}=\frac{1}{2} \alpha_{0}\left(1+\cos \left(\frac{t \pi}{T}\right)\right), αt=21α0(1+cos(Ttπ)),其中𝑇为总的迭代次数

说了这么多学习率衰减的方法,是不是有点头晕呢?那我们来看看不同学习率衰减的图示叭!(假设学习率初始为1)
在这里插入图片描述

其实呢,学习率衰减只是调整学习率中比较常见简单的一种方法,其它调整学习率的方法还有:学习率预热周期性学习率调整自适应学习率,等,这里就不一一介绍辽,给大家看看一些常见的优化方法叭:
在这里插入图片描述

3.3.2 数据预处理

 下面,我们将介绍一种特别常见的数据预处理方法:归一化

归一化方法泛指把数据特征转换为相同尺度的方法,比如把数据特征映射到[0, 1]或[−1, 1]区间内,或者映射为服从均值为0、方差为1的标准正态分布.

通俗易懂一点理解,为什么要归一化呢?

比如说我们要衡量一个人,Ta有三个特征: 年龄(岁)、身高(厘米)、体重(千克)
小明 = [18, 185, 80]  小红 = [13, 156, 50]
很明显可以看出,每个数值的单位是不一样的,它们的数据范围也不一样,所以数值的大小没有可比性,所以要把某个特征(某一列)统一压缩映射到一个范围才有计算和比较的意义

下面介绍几种经常使用的归一化方法:最小最大值归一化 标准化

最小最大值归一化
 最小最大值归一化是一种非常简单的归一化方法,将训练集中某一列数值特征(假设是第 i 列)的值缩放到0和1之间,公式为:
x i − min ⁡ ( x i ) max ⁡ ( x i ) − min ⁡ ( x i ) \frac{x_{\mathrm{i}}-\min \left(\mathrm{x}_{\mathrm{i}}\right)}{\max \left(\mathrm{x}_{\mathrm{i}}\right)-\min \left(\mathrm{x}_{\mathrm{i}}\right)} max(xi)min(xi)ximin(xi)

标准化
 标准化也叫Z值归一化,来源于统计上的标准分数.将每一个维特征都调整为均值为0,方差为1
 对于每一维特征 x x x,它的均值为: μ = 1 N ∑ n = 1 N x ( n ) \mu=\frac{1}{N} \sum_{n=1}^{N} x^{(n)} μ=N1n=1Nx(n),它的方差为: σ 2 = 1 N ∑ n = 1 N ( x ( n ) − μ ) 2 \sigma^{2}=\frac{1}{N} \sum_{n=1}^{N}\left(x^{(n)}-\mu\right)^{2} σ2=N1n=1N(x(n)μ)2
 然后,将特征 x ( n ) x^{(n)} x(n) 减去均值,并除以标准差,得到新的特征值 x ^ ( n ) \hat{x}^{(n)} x^(n)
x ^ ( n ) = x ( n ) − μ σ \hat{x}^{(n)}=\frac{x^{(n)}-\mu}{\sigma} x^(n)=σx(n)μ 其中标准差 𝜎 不能为 0.如果标准差为 0,说明这一维特征没有任何区分性,可以直接删掉.

3.3.3 提前停止

为了防止过拟合问题。除了训练集和测试集之外,有时也会使用一个验证集来进行模型选择,测试模型在验证集上是否最优.在每次迭代时,把新得到的模型 𝑓(𝒙; 𝜃) 在验证集上进行测试,并计算错误率.如果在验证集上的错误率不再下降,就停止迭代。 这种策略叫提前停止
下图是提前停止的示例
在这里插入图片描述

3.3.4 超参数优化

在机器学习中,优化又可以分为参数优化超参数优化.模型𝑓(𝒙; 𝜃)中的𝜃 称为模型的参数,可以通过优化算法进行学习.除了可学习的参数𝜃 之外,还有一类参数是用来定义模型结构优化策略的,这类参数叫作超参数。

常见的超参数包括聚类算法中的类别个数梯度下降法中的步长正则化分布的参数项的系数神经网络的层数支持向量机中的核函数等.超参数的选取一般都是组合优化问题,很难通过优化算法来自动学习.因此,超参数优化根据人的经验不断试错得到.


4.线性模型

 线性模型是机器学习中应用最广泛的模型,指通过样本特征的线性组合来进行预测的模型.给定一个 𝐷 维样本 𝒙 = [ 𝑥 1 , ⋯ , 𝑥 𝐷 ] T 𝒙 = [𝑥_1, ⋯ , 𝑥_𝐷]^T x=[x1,,xD]T,其线性组合函数为
f ( x ; w ) = w 1 x 1 + w 2 x 2 + ⋯ + w D x D + b = w ⊤ x + b \begin{aligned} f(\boldsymbol{x} ; \boldsymbol{w}) &=w_{1} x_{1}+w_{2} x_{2}+\cdots+w_{D} x_{D}+b \\ &=\boldsymbol{w}^{\top} \boldsymbol{x}+b \end{aligned} f(x;w)=w1x1+w2x2++wDxD+b=wx+b

 其中 𝒘 = [ 𝑤 1 , ⋯ , 𝑤 𝐷 ] T 𝒘 = [𝑤_1, ⋯ , 𝑤_𝐷]^T w=[w1,,wD]T 为 𝐷 维的权重向量,𝑏 为偏置。

 在分类问题中,由于输出目标 𝑦 是一些离散的标签,而 𝑓(𝒙; 𝒘) 的值域为实数,因此无法直接用 𝑓(𝒙; 𝒘) 来进行预测,需要引入一个非线性的决策函数𝑔(⋅)来预测输出目标其中𝑓(𝒙; 𝒘)也称为判别函数
y = g ( f ( x ; w ) ) y=g(f(\boldsymbol{x} ; \boldsymbol{w})) y=g(f(x;w))

一个线性分类模型或线性分类器,是由一个(或多个)线性的判别函数 𝑓 ( 𝒙 ; 𝒘 ) = 𝒘 T 𝒙 + 𝑏 𝑓(𝒙; 𝒘) =𝒘^T𝒙 + 𝑏 f(x;w)=wTx+b 和非线性的决策函数 𝑔(⋅) 组成。

这时候,可能很多同学又有一个问题了,为什么引入了一个非线性的决策函数 𝑔(⋅) ,还要说它是线性模型呢?

其实,区分线性模型和非线性模型主要是看它的决策边界是否为线性的,所谓决策边界就是能够把样本正确分类的一条边界。如图所示:
在这里插入图片描述

 接下来我们继续讲分类问题,其中分类问题大致可以分为二分类多分类问题,二分类问题的类别标签 𝑦 只有两种取值,通常可以设为 {+1, −1} 或 {0, 1}.多分类问题是指分类的类别数 𝐶 大于 2.

 下面介绍四种不同线性分类模型:感知器Logistic回归Softmax回归支持向量机,这些模型的区别主要在于使用了不同的损失函数


4.1 感知器

 感知器是一种广泛使用的线性分类器,可谓是最简单的人工神经网络,只有一个神经元。
 它的分类准则是一个简单的符号函数:
g ( f ( x ; w ) ) = sgn ⁡ ( f ( x ; w ) ) ≜ { + 1  if  f ( x ; w ) > 0 − 1  if  f ( x ; w ) < 0 \begin{array}{l} g(f(\boldsymbol{x} ; \boldsymbol{w}))=\operatorname{sgn}(f(\boldsymbol{x} ; \boldsymbol{w}))\\ \triangleq\left\{\begin{array}{cl} +1 & \text { if } \quad f(\boldsymbol{x} ; \boldsymbol{w})>0 \\ -1 & \text { if } \quad f(\boldsymbol{x} ; \boldsymbol{w})<0 \end{array}\right. \end{array} g(f(x;w))=sgn(f(x;w)){+11 if f(x;w)>0 if f(x;w)<0
当𝑓(𝒙; 𝒘) = 0时不进行预测,它的结构图如下所示:
在这里插入图片描述

给定 N 个样本的训练集: { ( x ( n ) , y ( n ) ) } n = 1 N , \left\{\left(\boldsymbol{x}^{(n)}, y^{(n)}\right)\right\}_{n=1}^{N} , {(x(n),y(n))}n=1N, 其中 y ( n ) ∈ { + 1 , − 1 } y^{(n)} \in\{+1,-1\} y(n){+1,1}, 感知器学习算法试图找到一组参数 w ∗ \boldsymbol{w}^{*} w , 使得对于每个样本 ( x ( n ) , y ( n ) ) \left(\boldsymbol{x}^{(n)}, y^{(n)}\right) (x(n),y(n)) y ( n ) w ∗ ⊤ x ( n ) > 0 , ∀ n ∈ { 1 , ⋯   , N } y^{(n)} \boldsymbol{w}^{*^{\top}} \boldsymbol{x}^{(n)}>0, \quad \forall n \in\{1, \cdots, N\} y(n)wx(n)>0,n{1,,N}

因此感知器的损失函数为:
L ( w ; x , y ) = max ⁡ ( 0 , − y w ⊤ x ) \mathcal{L}(\boldsymbol{w} ; \boldsymbol{x}, y)=\max \left(0,-y \boldsymbol{w}^{\top} \boldsymbol{x}\right) L(w;x,y)=max(0,ywx)
采用梯度下降法进行更新,其每次更新的梯度为:
∂ L ( w ; x , y ) ∂ w = { 0  if  y w ⊤ x > 0 − y x  if  y w ⊤ x < 0 \frac{\partial \mathcal{L}(\boldsymbol{w} ; \boldsymbol{x}, y)}{\partial \boldsymbol{w}}=\left\{\begin{array}{ll} 0 & \text { if } \quad y \boldsymbol{w}^{\top} \boldsymbol{x}>0 \\ -y \boldsymbol{x} & \text { if } \quad y \boldsymbol{w}^{\top} \boldsymbol{x}<0 \end{array}\right. wL(w;x,y)={0yx if ywx>0 if ywx<0

下图给出了感知器参数学习的更新过程,其中被圈中的点为随机选取的要学习的点,红色实心点为正例,蓝色空心点为负例.黑色箭头表示当前的权重向量,红色虚线箭头表示权重的更新方向.

在这里插入图片描述


4.2 Logistic回归

 Logistic 回归是一种常用的处理二分类问题的线性模型。我们将采用𝑦 ∈ {0, 1}以符合Logistic回归的描述习惯.

为了把线性函数的值域从实数区间“挤压”到了(0, 1)之间,可以用来表示概率,我们将使用一个激活函数𝑔(⋅)
p ( y = t ∣ x ) = g ( f ( x ; w ) ) p(y=t \mid \boldsymbol{x})=g(f(\boldsymbol{x} ; \boldsymbol{w})) p(y=tx)=g(f(x;w))

在Logistic回归中,我们使用Logistic函数来作为激活函数

为什么要用Logistic函数呢?
在分类问题中,我们可以用最简单的单位阶跃函数来作为激活函数𝑔(⋅):
y = { 0 , z < 0 0.5 , z = 0 1 , z > 0 y=\left\{\begin{array}{cc} 0, & z<0 \\ 0.5, & z=0 \\ 1, & z>0 \end{array}\right. y= 0,0.5,1,z<0z=0z>0它长这个样子:

在这里插入图片描述
但是很可惜,它有一个很大的缺点:该函数在跳跃点上从0瞬间跳跃到1(不连续、不可微),所以我们想找到一个在一定程度上近似单位阶跃函数的“替代函数”,并希望它单调可微。

这时候,Logistic函数就登场了,其公式为:
σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1
它长酱紫, 它在 z = 0 z=0 z=0附近变化会很陡:

在这里插入图片描述

其导数为:
σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma^{\prime}(z)=\sigma(z)(1-\sigma(z)) σ(z)=σ(z)(1σ(z))

我们来对比一下单位阶跃函数Logistic函数

在这里插入图片描述
在这里插入图片描述
长相和效果还蛮像的对叭

标签𝑦 = 1(也就是正例)的后验概率为:
p ( y = 1 ∣ x ) = σ ( w ⊤ x + b ) ≜ 1 1 + e − ( w ⊤ x + b ) , \begin{aligned} p(y=1 \mid \boldsymbol{x}) &=\sigma\left(\boldsymbol{w}^{\top} \boldsymbol{x}+b\right) \triangleq \frac{1}{1+e^{- \left(\boldsymbol{w}^{\top} \boldsymbol{x}+b\right)}}, \end{aligned} p(y=1x)=σ(wx+b)1+e(wx+b)1,
标签𝑦 = 0(反例)的后验概率为
p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = e − ( w ⊤ x + b ) 1 + e − ( w ⊤ x + b ) \begin{aligned} p(y=0 \mid \boldsymbol{x}) &=1-p(y=1 \mid \boldsymbol{x})=\frac{e^{-\left(\boldsymbol{w}^{\top} \boldsymbol{x}+b\right)}}{1+e^{- \left(\boldsymbol{w}^{\top} \boldsymbol{x}+b\right)}} \end{aligned} p(y=0x)=1p(y=1x)=1+e(wx+b)e(wx+b)
然后给大家变个魔法,把上面的式子变形一下可以得到:
w ⊤ x = log ⁡ p ( y = 1 ∣ x ) 1 − p ( y = 1 ∣ x ) = log ⁡ p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) \boldsymbol{w}^{\top} \boldsymbol{x}=\log \frac{p(y=1 \mid \boldsymbol{x})}{1-p(y=1 \mid \boldsymbol{x})} =\log \frac{p(y=1 \mid x)}{p(y=0 \mid x)} wx=log1p(y=1x)p(y=1x)=logp(y=0x)p(y=1x)
我们仔细看看,其中 p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) \frac{p(y=1 \mid x)}{p(y=0 \mid x)} p(y=0x)p(y=1x) 为样本𝒙为正反例后验概率的比值,称为几率几率的对数称为对数几率,因此 Logistic 回归可以看作预测值为“标签的对数几率”的线性回归模型。


Logistic 回归采用交叉熵作为损失函数,并使用梯度下降法来对参数进行优化.

设一个样本标签为1的预测概率为:
y ^ ( n ) = σ ( w ⊤ x ( n ) + b ) , \hat{y}^{(n)}=\sigma\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right), y^(n)=σ(wx(n)+b),
设一个样本标签为1的真实概率为:
p r ( y ( n ) = 1 ∣ x ( n ) ) = y ( n ) p_{r}\left(y^{(n)}=1 \mid x^{(n)}\right)=y^{(n)} pr(y(n)=1x(n))=y(n)
使用交叉熵损失函数,假设有N个样本,公式为:
R ( 𝒘 ) = = − 1 N ∑ n = 1 N ( y ( n ) log ⁡ y ^ ( n ) + ( 1 − y ( n ) ) log ⁡ ( 1 − y ^ ( n ) ) ) . R(𝒘) = =-\frac{1}{N} \sum_{n=1}^{N}\left(y^{(n)} \log \hat{y}^{(n)}+\left(1-y^{(n)}\right) \log \left(1-\hat{y}^{(n)}\right)\right) . R(w)==N1n=1N(y(n)logy^(n)+(1y(n))log(1y^(n))).

ℛ(𝒘)关于参数𝒘的偏导数为:
∂ R ( w ) ∂ w = − 1 N ∑ n = 1 N ( y ( n ) y ^ ( n ) ( 1 − y ^ ( n ) ) y ^ ( n ) x ( n ) − ( 1 − y ( n ) ) y ^ ( n ) ( 1 − y ^ ( n ) ) 1 − y ^ ( n ) x ( n ) ) = − 1 N ∑ n = 1 N ( y ( n ) ( 1 − y ^ ( n ) ) x ( n ) − ( 1 − y ( n ) ) y ^ ( n ) x ( n ) ) = − 1 N ∑ n = 1 N x ( n ) ( y ( n ) − y ^ ( n ) ) . \begin{aligned} \frac{\partial \mathcal{R}(\boldsymbol{w})}{\partial \boldsymbol{w}} &=-\frac{1}{N} \sum_{n=1}^{N}\left(y^{(n)} \frac{\hat{y}^{(n)}\left(1-\hat{y}^{(n)}\right)}{\hat{y}^{(n)}} \boldsymbol{x}^{(n)}-\left(1-y^{(n)}\right) \frac{\hat{y}^{(n)}\left(1-\hat{y}^{(n)}\right)}{1-\hat{y}^{(n)}} \boldsymbol{x}^{(n)}\right) \\ &=-\frac{1}{N} \sum_{n=1}^{N}\left(y^{(n)}\left(1-\hat{y}^{(n)}\right) \boldsymbol{x}^{(n)}-\left(1-y^{(n)}\right) \hat{y}^{(n)} \boldsymbol{x}^{(n)}\right) \\ &=-\frac{1}{N} \sum_{n=1}^{N} \boldsymbol{x}^{(n)}\left(y^{(n)}-\hat{y}^{(n)}\right) . \end{aligned} wR(w)=N1n=1N(y(n)y^(n)y^(n)(1y^(n))x(n)(1y(n))1y^(n)y^(n)(1y^(n))x(n))=N1n=1N(y(n)(1y^(n))x(n)(1y(n))y^(n)x(n))=N1n=1Nx(n)(y(n)y^(n)).

𝑦̂ 为 Logistic 函 数,求导公式在上面。这时的 l o g log log 是以 e e e 为底的

然后我们就采取梯度下降法进行迭代更新了,初始化 𝒘0 ← 0,然后通过下式来迭代更新参数:
w t + 1 ← w t + α 1 N ∑ n = 1 N x ( n ) ( y ( n ) − y ^ w t ( n ) ) , \boldsymbol{w}_{t+1} \leftarrow \boldsymbol{w}_{t}+\alpha \frac{1}{N} \sum_{n=1}^{N} \boldsymbol{x}^{(n)}\left(y^{(n)}-\hat{y}_{w_{t}}^{(n)}\right), wt+1wt+αN1n=1Nx(n)(y(n)y^wt(n)),

4.3 Softmax回归

Softmax 回归,也称为多项或多类的Logistic回归,是Logistic回归在多分类问题上的推广.

对于多类问题,类别标签𝑦 ∈ {1, 2, ⋯ , 𝐶}可以有𝐶 个取值.给定一个样本𝒙,Softmax回归预测的属于类别𝑐的条件概率为
p ( y = c ∣ x ) = softmax ⁡ ( w c ⊤ x + b ) = e ( w c ⊤ x + b ) ∑ c ′ = 1 C e ( w c ′ ⊤ x + b ) , \begin{aligned} p(y=c \mid \boldsymbol{x}) &=\operatorname{softmax}\left(\boldsymbol{w}_{c}^{\top} \boldsymbol{x}+b\right) \\ &=\frac{e^{ \left(\boldsymbol{w}_{c}^{\top} \boldsymbol{x}+b\right)}}{\sum_{c^{\prime}=1}^{C}e^{ \left(\boldsymbol{w}_{c^{\prime}}^{\top} \boldsymbol{x}+b\right)}}, \end{aligned} p(y=cx)=softmax(wcx+b)=c=1Ce(wcx+b)e(wcx+b),
Softmax回归的决策函数可以表示为:
y ^ = arg ⁡ max ⁡ C c = 1 p ( y = c ∣ x ) = arg ⁡ max ⁡ C c = 1 ( w c ⊤ x + b ) . \begin{array}{l} \hat{y}=\underset{c=1}{\overset{C}{\arg \max }} p(y=c \mid \boldsymbol{x})\\ =\underset{c=1}{\overset{C}{\arg \max }}\left( \boldsymbol{w}_{c}^{\top} \boldsymbol{x}+b\right) . \end{array} y^=c=1argmaxCp(y=cx)=c=1argmaxC(wcx+b).

这时候你可能又要问了,这个argmax到底是个什么东西呀?

根据定义,argmax()是一种函数,是对函数求参数(集合)的函数,也就是求自变量最大的函数

举个例子:
f ( x = 1 ) = 20 f(x=1)=20 f(x=1)=20 f ( x = 2 ) = 25 f(x=2)=25 f(x=2)=25 f ( x = 3 ) = 22 f(x=3)=22 f(x=3)=22
可以得出:
y = max ⁡ ( f ( x ) ) = 25 y=\max (f(x))=25 y=max(f(x))=25
y = argmax ⁡ ( f ( x ) ) = 2 y=\operatorname{argmax}(f(x))=2 y=argmax(f(x))=2

回归到问题本身,我们为什么用argmax而不用max呢
因为我们要得到的答案是这个样本是哪一类的,而不是它属于这一类的概率是多少,所以我们要用argmax来得到概率最大值的自变量。

采用交叉熵损失函数,Softmax回归模型的风险函数为:
R ( W ) = − 1 N ∑ n = 1 N ( y ( n ) ) ⊤ log ⁡ y ^ ( n ) \begin{aligned} \mathcal{R}(\boldsymbol{W}) &= -\frac{1}{N} \sum_{n=1}^{N}\left(\boldsymbol{y}^{(n)}\right)^{\boldsymbol{\top}} \log \hat{\boldsymbol{y}}^{(n)} \end{aligned} R(W)=N1n=1N(y(n))logy^(n)风险函数ℛ(𝑾 )关于𝑾 的梯度为
∂ R ( W ) ∂ W = − 1 N ∑ n = 1 N x ( n ) ( y ( n ) − y ^ ( n ) ) ⊤ \frac{\partial \mathcal{R}(\boldsymbol{W})}{\partial \boldsymbol{W}}=-\frac{1}{N} \sum_{n=1}^{N} \boldsymbol{x}^{(n)}\left(\boldsymbol{y}^{(n)}-\hat{\boldsymbol{y}}^{(n)}\right)^{\top} WR(W)=N1n=1Nx(n)(y(n)y^(n))
采用梯度下降法,Softmax回归的训练过程为:初始化 𝑾 0 ← 0 𝑾_0 ← 0 W00,然后通过下式进行迭代更新:
W t + 1 ← W t + α ( 1 N ∑ n = 1 N x ( n ) ( y ( n ) − y ^ W t ( n ) ) ⊤ ) \boldsymbol{W}_{t+1} \leftarrow \boldsymbol{W}_{t}+\alpha\left(\frac{1}{N} \sum_{n=1}^{N} \boldsymbol{x}^{(n)}\left(\boldsymbol{y}^{(n)}-\hat{\boldsymbol{y}}_{W_{t}}^{(n)}\right)^{\top}\right) Wt+1Wt+α(N1n=1Nx(n)(y(n)y^Wt(n)))

4.4 支持向量机

支持向量机(SVM)是一个经典的二分类算法,其找到的分割超平面具有更好的鲁棒性。

给定一个二分类器数据集 D = { ( x ( n ) , y ( n ) ) } n = 1 N \mathcal{D}=\left\{\left(\boldsymbol{x}^{(n)}, y^{(n)}\right)\right\}_{n=1}^{N} D={(x(n),y(n))}n=1N,其中 y n ∈ { + 1 , − 1 } y_{n} \in\{+1,-1\}{\scriptsize } yn{+1,1},如果两类样本是线性可分的,即存在一个超平面
w ⊤ x + b = 0 \boldsymbol{w}^{\top} \boldsymbol{x}+b=0 wx+b=0将两类样本分开,那么对于每个样本都有 y ( n ) ( w ⊤ x ( n ) + b ) > 0 y^{(n)}\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right)>0 y(n)(wx(n)+b)>0,数据集𝒟 中每个样本 𝒙 ( 𝑛 ) 𝒙^{(𝑛)} x(n)到分割超平面的距离为:
γ ( n ) = ∣ w ⊤ x ( n ) + b ∣ ∥ w ∥ = y ( n ) ( w ⊤ x ( n ) + b ) ∥ w ∥ . \gamma^{(n)}=\frac{\left|\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right|}{\|\boldsymbol{w}\|}=\frac{y^{(n)}\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right)}{\|\boldsymbol{w}\|} . γ(n)=w wx(n)+b =wy(n)(wx(n)+b).
我们定义间隔 𝛾 为整个数据集 𝐷 中所有样本到分割超平面的最短距离: γ = min ⁡ n γ ( n ) \gamma=\min _{n} \gamma^{(n)} γ=nminγ(n)如下图所示,我们可以找到很多点来分隔,但能将训练样本分开的划分超平面可能有很多,我们要找到哪一个呢?
在这里插入图片描述

显然,我们要找到一个最稳定的平面。如果间隔𝛾越大,其分割超平面对两个数据集的划分越稳定,不容易受噪声等因素影响.支持向量机的目标是寻找一个超平面(𝒘∗, 𝑏∗)使得𝛾最大,即
max ⁡ w , b γ  s.t.  y ( n ) ( w ⊤ x ( n ) + b ) ∥ w ∥ ≥ γ , ∀ n ∈ { 1 , ⋯   , N } . \begin{aligned} \max _{\boldsymbol{w}, b} & \gamma \\ \text { s.t. } & \frac{y^{(n)}\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right)}{\|\boldsymbol{w}\|} \geq \gamma, \forall n \in\{1, \cdots, N\} . \end{aligned} w,bmax s.t. γwy(n)(wx(n)+b)γ,n{1,,N}.由于同时缩放𝒘 → 𝑘𝒘和𝑏 → 𝑘𝑏不会改变样本 𝒙 ( 𝑛 ) 𝒙^{(𝑛)} x(n) 到分割超平面的距离,我们可以限制‖𝒘‖ ⋅ 𝛾 = 1,则上述公式等价于
max ⁡ w , b 1 ∥ w ∥ 2  s.t.  y ( n ) ( w ⊤ x ( n ) + b ) ≥ 1 , ∀ n ∈ { 1 , ⋯   , N } . \begin{aligned} \max _{\boldsymbol{w}, b} & \frac{1}{\|\boldsymbol{w}\|^{2}} \\ \text { s.t. } & y^{(n)}\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right) \geq 1, \forall n \in\{1, \cdots, N\} . \end{aligned} w,bmax s.t. w21y(n)(wx(n)+b)1,n{1,,N}.数据集中所有满足 y ( n ) ( w ⊤ x ( n ) + b ) = 1 y^{(n)}\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right)=1 y(n)(wx(n)+b)=1 的样本点,都称为支持向量

如图支持向量机的最大间隔分割超平面的示例,其中轮廓线加粗的样本点为支持向量.
在这里插入图片描述

4.4.1 参数学习

为了找到最大间隔分割超平面,将目标函数写为凸优化问题
min ⁡ w , b 1 2 ∥ w ∥ 2  s.t.  1 − y ( n ) ( w ⊤ x ( n ) + b ) ≤ 0 , ∀ n ∈ { 1 , ⋯   , N } . \begin{aligned} \min _{\boldsymbol{w}, b} & \frac{1}{2}\|\boldsymbol{w}\|^{2} \\ \text { s.t. } & 1-y^{(n)}\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right) \leq 0, \quad \forall n \in\{1, \cdots, N\} . \end{aligned} w,bmin s.t. 21w21y(n)(wx(n)+b)0,n{1,,N}.

这时候可能又有疑问了,什么是凸优化问题呢?

先记住凸优化问题一个重要的特点:局部最优是全局最优

凸优化问题是想要找到一个酱紫的解:
m i n f 0 ( x )  subject to  f i ( x ) ≤ 0 , i = 1 , ⋯   , m h i ( x ) = 0 , i = 1 , ⋯   , p \begin{array}{ll} min & f_0(x)\\ \text { subject to } & f_{i}(x) \leq 0, \quad i=1, \cdots, m \\ & h_{i}(x)=0, \quad i=1, \cdots, p \end{array} min subject to f0(x)fi(x)0,i=1,,mhi(x)=0,i=1,,p
下面两个式子分别表示不等式约束和等式约束 下面两个式子分别表示不等式约束和等式约束 下面两个式子分别表示不等式约束和等式约束
其中  f 0  为凸函数,  f i  为凸函数,  h i  为仿射函数,  x  为优化变量。  \text {其中 } f_0 \text { 为凸函数, } f_{i} \text { 为凸函数, } h_{i} \text { 为仿射函数, } x \text { 为优化变量。 } 其中 f0 为凸函数, fi 为凸函数, hi 为仿射函数, x 为优化变量。 
注意上面的 m i n 以及约束条件的符号均要符合规定!!! 注意上面的 min 以及约束条件的符号均要符合规定!!! 注意上面的min以及约束条件的符号均要符合规定!!!

仿射函数: : a T x + b : a^{T} x+b :aTx+b,它同时满足凸函数和凹函数

在上面学习正则化的时候,我们讲了拉格朗日乘数法的几何意义,下面我们来数学证明一下。

根据上面的在约束条件求最值的条件下,我们化成拉格朗日函数
L ( x , λ , v ) = f 0 ( x ) + ∑ λ i f i ( x ) + ∑ v i h i ( x ) L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v})=f_{0}(\boldsymbol{x})+\sum \lambda_{i} f_{i}(\boldsymbol{x})+\sum v_{i} h_{i}(\boldsymbol{x}) L(x,λ,v)=f0(x)+λifi(x)+vihi(x)
然后我们化成原问题(即先将 λ \lambda λ v v v看成变量, x x x看成常量求最大值,再把 x x x看成变量求最小值):
min ⁡ x max ⁡ λ , v L ( x , λ , v )  s.t.  λ ≥ 0 \begin{array}{l} \min _{\boldsymbol{x}} \max _{\lambda, v} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v}) \\ \text { s.t. } \lambda \geq 0 \end{array} minxmaxλ,vL(x,λ,v) s.t. λ0
然后我们证明一下为什么可以化成这样:
{ x  不在可行域内:  max ⁡ λ , v L ( x , λ , v ) = f 0 ( x ) + ∞ + ∞ = ∞ x  在可行域内  : max ⁡ λ , v L ( x , λ , v ) = f 0 ( x ) + 0 + 0 = f 0 ( x ) \left\{\begin{array}{l} \boldsymbol{x} \text { 不在可行域内: } \max _{\lambda, v} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v})=f_{0}(\boldsymbol{x})+\infty+\infty=\infty \\ \boldsymbol{x} \text { 在可行域内 }: \max _{\lambda, v} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v})=f_{0}(\boldsymbol{x})+0+0=f_{0}(\boldsymbol{x}) \end{array}\right. {x 不在可行域内maxλ,vL(x,λ,v)=f0(x)++=x 在可行域内 :maxλ,vL(x,λ,v)=f0(x)+0+0=f0(x) min ⁡ x max ⁡ λ , v L ( x , λ , v ) = min ⁡ x { f 0 ( x ) , ∞ } = min ⁡ f 0 ( x ) \min _{\boldsymbol{x}} \max _{\lambda, \boldsymbol{v}} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v})=\min _{\boldsymbol{x}}\left\{f_{0}(\boldsymbol{x}), \infty\right\}= \min f_0(x) xminλ,vmaxL(x,λ,v)=xmin{f0(x),}=minf0(x)

下面再来介绍一下对偶函数对偶问题

对偶函数
g ( λ , v ) = min ⁡ x L ( x , λ , v ) g(\boldsymbol{\lambda}, \boldsymbol{v})=\min _{\boldsymbol{x}} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v}) g(λ,v)=xminL(x,λ,v)
对偶问题(即先将 x x x看成变量,把 λ \lambda λ v v v看成常量求最小值,再把 λ \lambda λ v v v看成变量求最大值:
max ⁡ λ , v g ( λ , v ) = max ⁡ λ , v min ⁡ x L ( x , λ , v )  s.t.  λ ≥ 0 \begin{array}{l} \max _{\lambda, v} g(\boldsymbol{\lambda}, \boldsymbol{v})=\max _{\lambda, v} \min _{x} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v}) \\ \text { s.t. } \lambda \geq \mathbf{0} \end{array} maxλ,vg(λ,v)=maxλ,vminxL(x,λ,v) s.t. λ0上式等价于:
max ⁡ λ , v g ( λ , v )  s.t. ∇ x L ( x , λ , v ) = 0 λ ≥ 0 \begin{array}{ll} \max _{\boldsymbol{\lambda}, \boldsymbol{v}} g(\boldsymbol{\lambda}, \boldsymbol{v}) \\ \text { s.t.} &\nabla_{\boldsymbol{x}} L(\boldsymbol{x}, \boldsymbol{\lambda}, \boldsymbol{v})=\mathbf{0} \\ &\boldsymbol{\lambda} \geq \mathbf{0} \end{array} maxλ,vg(λ,v) s.t.xL(x,λ,v)=0λ0
看完后是不是觉得像上面的原问题反过来换种方法求解嘞?
对偶问题有一个重要的特性:无论原问题是什么,对偶问题都是一个凸问题!!(注意,原问题化成对偶问题的方向是单向的!)

我超!!这也太神奇了吧,为什么无论什么问题的对偶问题都是凸问题呢??
我们先来看一下这个对偶函数,我们假设 x ∗ x^* x是找到的拉格朗日函数的最小值:
g ( λ , v ) = f 0 ( x ⋆ ) + ∑ λ i f i ( x ⋆ ) + ∑ v i h i ( x ⋆ ) g(\boldsymbol{\lambda}, \boldsymbol{v})=f_{0}\left(x^{\star}\right)+\sum \lambda_{i} f_{i}\left(x^{\star}\right)+\sum v_{i} h_{i}\left(x^{\star}\right) g(λ,v)=f0(x)+λifi(x)+vihi(x)这时候只有 λ \lambda λ v v v是变量,这时候 g ( λ , v ) g(\boldsymbol{\lambda}, \boldsymbol{v}) g(λ,v)就是一阶线性关系的,它可以看成是一条直线,这时候它既是凹函数又是凸函数,求它的最大值就是凸优化问题。

我们很容易得到,原问题的解是大于等于对偶问题的解的(弱对偶定理),即:
min ⁡ x max ⁡ λ , v L ( x , λ , v ) ≥ max ⁡ λ , v min ⁡ x L ( x , λ , v ) \min _{x} \max _{\lambda, v} L(x, \lambda, v) \geq \max _{\lambda, v} \min _{x} L(x, \lambda, v) xminλ,vmaxL(x,λ,v)λ,vmaxxminL(x,λ,v)
当然,我们肯定想要原问题的解是等于对偶问题的解的(强对偶定理),这时候我们就要用KKT条件进行约束了:

KKT条件:
f i ( x ) ≤ 0 h i ( x ) = 0 } 原问题可行条件 \left.\begin{array}{l}f_{i}(\boldsymbol{x}) \leq 0 \\ h_{i}(\boldsymbol{x})=0\end{array}\right\} 原问题可行条件 fi(x)0hi(x)=0}原问题可行条件 ∇ x L ( x , λ , v ) = 0 λ ≥ 0 } 对偶可行条件 \left.\begin{array}{l}\nabla_{x} L(x, \lambda, v)=0 \\ \lambda \geq 0\end{array}\right\} 对偶可行条件 xL(x,λ,v)=0λ0}对偶可行条件 λ i f i ( x ) = 0 互补松弛条件  \lambda_{i} f_{i}(\boldsymbol{x})=0 \quad \text {互补松弛条件 } λifi(x)=0互补松弛条件 

使用拉格朗日乘数法,将公式化为拉格朗日函数
Λ ( w , b , λ ) = 1 2 ∥ w ∥ 2 + ∑ n = 1 N λ n ( 1 − y ( n ) ( w ⊤ x ( n ) + b ) ) \Lambda(\boldsymbol{w}, b, \lambda)=\frac{1}{2}\|\boldsymbol{w}\|^{2}+\sum_{n=1}^{N} \lambda_{n}\left(1-y^{(n)}\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right)\right) Λ(w,b,λ)=21w2+n=1Nλn(1y(n)(wx(n)+b))
其中 λ 1 ≥ 0 , ⋯ , λ 𝑁 ≥ 0 \lambda_1 ≥ 0, ⋯ , \lambda_𝑁 ≥ 0 λ10,,λN0拉格朗日乘数.计算Λ(𝒘, 𝑏, 𝜆)关于𝒘和𝑏的导数,并令其等于0,得到
w = ∑ n = 1 N λ n y ( n ) x ( n ) , 0 = ∑ n = 1 N λ n y ( n ) \begin{aligned} \boldsymbol{w} &=\sum_{n=1}^{N} \lambda_{n} y^{(n)} \boldsymbol{x}^{(n)}, \\ 0 &=\sum_{n=1}^{N} \lambda_{n} y^{(n)} \end{aligned} w0=n=1Nλny(n)x(n),=n=1Nλny(n)

公式代换,得到拉格朗日对偶函数
Γ ( λ ) = − 1 2 ∑ n = 1 N ∑ m = 1 N λ m λ n y ( m ) y ( n ) ( x ( m ) ) ⊤ x ( n ) + ∑ n = 1 N λ n . \Gamma(\lambda)=-\frac{1}{2} \sum_{n=1}^{N} \sum_{m=1}^{N} \lambda_{m} \lambda_{n} y^{(m)} y^{(n)}\left(\boldsymbol{x}^{(m)}\right)^{\top} \boldsymbol{x}^{(n)}+\sum_{n=1}^{N} \lambda_{n} . Γ(λ)=21n=1Nm=1Nλmλny(m)y(n)(x(m))x(n)+n=1Nλn.

根据KKT条件中的互补松弛条件,最优解满足 λ n ∗ ( 1 − y ( n ) ( w ∗ ⊤ x ( n ) + b ∗ ) ) = 0 \lambda_{n}^{*}\left(1-y^{(n)}\left(\boldsymbol{w}^{* \top} \boldsymbol{x}^{(n)}+b^{*}\right)\right)=0 λn(1y(n)(wx(n)+b))=0

在计算出 𝜆∗ 后,根据公式 w = ∑ n = 1 N λ n y ( n ) x ( n ) \boldsymbol{w} =\sum_{n=1}^{N} \lambda_{n} y^{(n)} \boldsymbol{x}^{(n)} w=n=1Nλny(n)x(n) 计算出最优权重 𝒘∗,最优偏置 𝑏∗ 可以通过任选一个支持向量(𝒙,̃𝑦)̃计算得到
b ∗ = y ~ − w ∗ ⊤ x ~ . b^{*}=\tilde{y}-\boldsymbol{w}^{*^{\top}} \tilde{\boldsymbol{x}} . b=y~wx~.
最优参数的支持向量机的决策函数为
f ( x ) = sgn ⁡ ( w ∗ ⊤ x + b ∗ ) = sgn ⁡ ( ∑ n = 1 N λ n ∗ y ( n ) ( x ( n ) ) ⊤ x + b ∗ ) \begin{aligned} f(\boldsymbol{x}) &=\operatorname{sgn}\left(\boldsymbol{w}^{*^{\top}} \boldsymbol{x}+b^{*}\right) \\ &=\operatorname{sgn}\left(\sum_{n=1}^{N} \lambda_{n}^{*} y^{(n)}\left(\boldsymbol{x}^{(n)}\right)^{\top} \boldsymbol{x}+b^{*}\right) \end{aligned} f(x)=sgn(wx+b)=sgn(n=1Nλny(n)(x(n))x+b)

4.4.2 核函数

支持向量机还有一个重要的优点是可以使用核函数隐式地将样本从原始特征空间映射到更高维的空间,并解决原始特征空间中的线性不可分问题。面例如图中左边的"异或“问题就不是线性可分的,但将其映射到如图右的高维空间是可以变成线性可分的。
在这里插入图片描述
再比如这样:
在这里插入图片描述

比如在一个变换后的特征空间𝜙中,支持向量机的决策函数为:
f ( x ) = sgn ⁡ ( w ∗ ⊤ ϕ ( x ) + b ∗ ) = sgn ⁡ ( ∑ n = 1 N λ n ∗ y ( n ) k ( x ( n ) , x ) + b ∗ ) \begin{aligned} f(\boldsymbol{x}) &=\operatorname{sgn}\left(\boldsymbol{w}^{* \top} \phi(\boldsymbol{x})+b^{*}\right) \\ &=\operatorname{sgn}\left(\sum_{n=1}^{N} \lambda_{n}^{*} y^{(n)} k\left(\boldsymbol{x}^{(n)}, \boldsymbol{x}\right)+b^{*}\right) \end{aligned} f(x)=sgn(wϕ(x)+b)=sgn(n=1Nλny(n)k(x(n),x)+b)
其中 𝑘 ( 𝒙 , 𝒛 ) = ϕ ( 𝒙 ) T ϕ ( 𝒛 ) 𝑘(𝒙, 𝒛) = \phi(𝒙)^T\phi(𝒛) k(x,z)=ϕ(x)Tϕ(z) 为核函数.

"核函数选择"成为支持向量机的最大变数.若核函数选择不合适,则意味着将样本映射到了一个不合适的特征空间,很可能导致性能不佳。

以下是一些常用的核函数

名称表达式参数
线性核 κ ( x i , x j ) = x i T x j \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} κ(xi,xj)=xiTxj
多项式核 κ ( x i , x j ) = ( x i T x j ) d \kappa\left(x_{i}, x_{j}\right)=\left(x_{i}^{\mathrm{T}} x_{j}\right)^{d} κ(xi,xj)=(xiTxj)d d ≥ 1 d\ge1 d1为多项式的次数
高斯核 κ ( x i , x j ) = exp ⁡ ( − ∣ x i − x j ∣ 2 2 σ 2 ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\exp \left(-\frac{\left|\boldsymbol{x}_{i}-\boldsymbol{x}_{j}\right|^{2}}{2 \sigma^{2}}\right) κ(xi,xj)=exp(2σ2xixj2) σ > 0 σ>0 σ>0 为高斯核的带宽(width)
拉普拉斯核 κ ( x i , x j ) = exp ⁡ ( − ∣ x i − x j ∣ σ ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\exp \left(-\frac{\left|\boldsymbol{x}_{i}-\boldsymbol{x}_{j}\right|}{\sigma}\right) κ(xi,xj)=exp(σxixj) σ > 0 σ>0 σ>0
Sigmoid核 κ ( x i , x j ) = tanh ⁡ ( β x i T x j + θ ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\tanh \left(\beta \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j}+\theta\right) κ(xi,xj)=tanh(βxiTxj+θ)tanh 为双曲正切函数, β > 0 , θ < 0 \beta>0, \theta<0 β>0,θ<0

4.4.3 软间隔

在支持向量机的优化问题中,约束条件比较严格.如果训练集中的样本在特征空间中不是线性可分的,就无法找到最优解.为了能够容忍部分不满足约束的样本,我们可以引入松弛变量 𝜉,将优化问题变为
min ⁡ w , b 1 2 ∥ w ∥ 2 + C ∑ n = 1 N ξ n s . t . 1 − y ( n ) ( w ⊤ x ( n ) + b ) − ξ n ≤ 0 , ∀ n ∈ { 1 , ⋯   , N } ξ n ≥ 0 , ∀ n ∈ { 1 , ⋯   , N } \min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{n=1}^{N} \xi_{n}\\ s.t. \quad1-y^{(n)}\left(\boldsymbol{w}^{\top} \boldsymbol{x}^{(n)}+b\right)-\xi_{n} \leq 0,\quad \forall n \in\{1, \cdots, N\} \\ \xi_{n} \geq 0, \quad \forall n \in\{1, \cdots, N\} w,bmin21w2+Cn=1Nξns.t.1y(n)(wx(n)+b)ξn0,n{1,,N}ξn0,n{1,,N}

如图所示:红色圈出了一些不满足约束的样本.
在这里插入图片描述

4.5 损失函数对比

 损失函数的不同,会让模型它们在实际任务上的表现存在一定的差异。
下图给出了不同损失函数的对比.对于二分类来说,当𝑦𝑓(𝒙; 𝒘) > 0时,分类器预测正确,并且𝑦𝑓(𝒙; 𝒘)越大,模型的预测越正确;当𝑦𝑓(𝒙; 𝒘) < 0时,分类器预测错误,并且𝑦𝑓(𝒙; 𝒘)越小,模型的预测越错误.因此,一个好的损失函数应该随着𝑦𝑓(𝒙; 𝒘)的增大而减少.
 从下图中看出,除了平方损失,其他损失函数都比较适合于二分类问题.
在这里插入图片描述

5. 写在最后

好了,今天的机器学习的内容就分享到这里了
哈哈,是不是看到这一堆公式就头昏脑胀的。但我告诉你,这只是开始。
继续加油叭!!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库 || 增删改查操作详解

目录 前言&#xff1a; 插入数据 查询数据 全列查询 指定列查询 带表达式查询 去重查询 查询结果排序 条件查询 比较运算符 逻辑运算符 示例 模糊查询 示例 空值比较 分页查询 修改数据 删除数据 注意&#xff1a; 前言&#xff1a; &#x1f388;增删改查…

Flutter——常用布局

Flutter—常用布局效果图widget 树形图左布局Text评分条提示内容右布局应用Stack布局效果图释示例效果图释电影封面电影信息电影演员电影简介应用效果图 widget 树形图 整个界面由一行组成&#xff0c;分为两列&#xff1b;左列包括电影介绍&#xff0c;由上到下垂直排列&…

java计算机毕业设计ssm+jsp线上授课系统

项目介绍 通篇文章的撰写基础是实际的应用需要&#xff0c;然后在架构系统之前全面复习线上授课的相关知识以及网络提供的技术应用教程&#xff0c;以线上授课的实际应用需要出发&#xff0c;架构系统来改善现线上授课工作流程繁琐等问题。不仅如此以操作者的角度来说&#xf…

【JavaSE】关于数组

文章目录数组的创建与初始化数组的初始化静态初始化动态初始化数组的存储null打印数组的三种方式循环遍历打印foreach打印Arrays.toString()打印数组的练习冒泡排序常用的API数组拷贝Arrays.copyOf()数组排序Arrays.sort()数组的快速初始化Arrays.fill()二维数组数组的创建与初…

mysql之MHA的高可用

一、MHA概述 1.什么是 MHA&#xff1a; MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点故障的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作…

1分钟完成在线测试部署便捷收集班级同学文件的web管理系统

最近CSDN推出了一个新功能【云IDE】&#xff0c;个人对这个新功能(比赛奖金 )挺感兴趣的&#x1f92d;&#xff0c;于是瞬速地拿之前自己搞的一个便捷收集班级同学文件的web管理系统&#xff08;下面简称该项目为cfile&#xff09;体验了一下&#xff0c;发现功能还是挺好用的&…

Node.js 实战 第1章 欢迎进入Node.js 的世界 1.5 三种主流的Node 程序 1.6 总结

Node.js 实战 文章目录Node.js 实战第1章 欢迎进入Node.js 的世界1.5 三种主流的Node 程序1.5.1 Web 应用程序1.5.2 命令行工具和后台程序1.5.3 桌面程序1.5.4 使用Node 的应用程序1.6 总结第1章 欢迎进入Node.js 的世界 1.5 三种主流的Node 程序 Node 程序主要可以分成三种类…

某网站视频播放花屏解密

某网站视频播放花屏解密样例网址&#xff1a;aHR0cHM6Ly90di5jY3R2LmNvbS8yMDIyLzA5LzMwL1ZJREVnZ0ZRYmZ6NmlMeXZjN0F4d0NlZjIyMDkzMC5zaHRtbA 站内之前也曾经发过相关的问题 1.CCTV视频m3u8视频下载&#xff0c;下载下来时长正确&#xff0c;有声音&#xff0c;但是画面是马…

聚沙成塔【45天玩转uni-app】初探uni-app

文章目录写在前面DCloud当下跨平台开发存在的问题为什么选择uni-app写在最后写在前面 聚沙成塔——每天进步一点点&#xff0c;大家好我是几何心凉&#xff0c;不难发现越来越多的前端招聘JD中都加入了uni-app 这一项&#xff0c;它也已经成为前端开发者不可或缺的一项技能了&…

ROS1可视化利器---Webviz

0. 简介 对于ROS1而言&#xff0c;rqt和plotjuggler是我们最常用的工具&#xff0c;这两个工具&#xff1a;rqt中嵌入了很多有用的小工具&#xff0c;但是它需要播放离线包&#xff0c;没有办法对离线包进行实时的分析。而plotjuggler支持对离线bag包进行分析&#xff0c;但是…

[C语言、C++]数据结构作业:用递归实现走迷宫(打印正确通路即可)

如果是非递归情况 如果当前点&#xff08;方格&#xff09;为出口&#xff0c;则成功退出 &#xff08;否则&#xff09; 如果可继续走(向相邻点试探)&#xff0c;存在某个可前进 的相邻点(分支)则&#xff1a; 1、将当前点保存&#xff0c;以便回退 2、将相邻点作为当前点…

【数据结构】排序3——交换排序(冒泡排序、快速排序)

文章目录交换排序冒泡排序冒泡排序算法算法分析快速排序改进后的快速排序算法算法分析交换排序 【基本思想】 两两比较&#xff0c;如果发生逆序则交换&#xff0c;直到所有记录都排好序为止。 常见的交换排序方法&#xff1a; 冒泡排序T(n)O(n2) 快速排序T(n)O( nlog2n) 冒…

SpringSecurity Oauth2实战 - 06 获取用户登录信息并存储到本地线程

文章目录1. 获取用户登录信息1. 用户信息共享的ThreadLocal类 UserInfoShareHolder2. 写一个拦截器 UserInfoInterceptor3. 配置拦截器 CommonWebMvcAutoConfiguration2. 源码分析1. 认证用户通过access_token访问受限资源2. 进入过滤器 OAuth2AuthenticationProcessingFilter#…

源码分析:Transport 开发

有关 transport 相关队列的调用过程: 【T ransportService 】 TransportService.java 的所有接口由 DefaultTransportService.java 实现,里面包含四种接口: (1)发送到 ruleEngine 发送 TbProtoQueueMsg<ToRuleEngineMsg> 消息。 由 DefaultTbRuleEngineConsumerServic…

【攻破css系列——附加篇】vscode自动格式化

文章目录1. 快速格式化1.1 格式化的定义1.2 vscode的格式化组合键2. 自动格式化2.1 定义2.2 设置自动格式化的步骤1. 快速格式化 1.1 格式化的定义 格式化会让我们的代码正确缩进&#xff0c;同级标签的缩进空格一致&#xff0c;最后使我们代码更好看且易懂。 没有格式化我们…

Nginx学习

Nginx学习 nginx的基本概念 nginx是什么&#xff1f;做什么事情&#xff1f; Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器&#xff0c;特点是占用内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力确实在同类型的网页服务器中表现较好。nginx专为…

gcc编程4步编译、调试c程序实操详解(Linux系统编程)

gcc编译可以执行程序4步骤:预处理、编译、汇编、链接 一、知识储备&#xff08;想看实战往下翻&#xff09; 在linux程序种&#xff0c;c程序需要用gcc进行编译&#xff0c;链接用ld程序&#xff0c;ggc编译完成后可自动调用ld程序完成链接。 调用gcc程序的语法格式&#xff…

Android Studio APP开发入门之对话框Dialog的讲解及使用(附源码 包括提醒对话框,日期对话框,时间对话框)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、提醒对话框 AlertDialog名为提醒对话框&#xff0c;它是Android中最常用的对话框&#xff0c;可以完成常见的交互操作&#xff0c;例如提示&#xff0c;确认&#xff0c;选择等功能&#xff0c;由于AlertDialog没有公开…

CLRNet: Cross Layer Refinement Network for Lane Detection——论文简述

一、简介 CLRNet充分利用了低层次特征和高层次特征&#xff0c;因为两者是互补的&#xff0c;先基于高层次特征侦测道路&#xff0c;再基于底层次特征进行调优&#xff1b;由于遮挡的存在&#xff0c;使用ROIGather进行全局信息的收集&#xff0c;在ROI道路特征和全局特征图之…

SaaS 架构基础理论(一)

SaaS架构基础理论1、背景2、SaaS商业模式2.1、什么是SaaS2.2、SaaS软件的优势&#xff1a;2.3、SaaS劣势&#xff1a;3.SaaS应用架构3.1、SaaS成熟度模型3.2、SaaS成熟模型分级3.2.1、Level1 定制开发3.2.2、Level2 可配置3.2.3、Level3 高性能的多租户架构3.2.4、Level4 可伸缩…