当前位置: 首页 > article >正文

机器学习之监督学习(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

机器学习之监督学习(一)

  • 1.监督学习定义
  • 2.监督学习分类
    • 2.1回归 regression
    • 2.2 分类 classification
  • 3.线性回归 linear regression
    • 3.1 单特征线性回归
      • 补充一:梯度下降
    • 3.2 多特征线性回归
      • 补充二:正规方程 normal equation

1.监督学习定义

监督学习(supervised learning)是一种机器学习方法,在这种方法中,算法通过训练集中的输入数据(特征)和相应的输出标签(目标)来学习映射关系,从而能够对未见过的数据进行预测或分类。


2.监督学习分类

2.1回归 regression

回归的目标是根据输入数据预测连续的数值输出,输出标签是连续的实数,例如预测房价。

2.2 分类 classification

分类的目标是根据输入数据将样本分配到不同类别中,输出标签是离散的如有限的类别。例如垃圾邮件过滤。


3.线性回归 linear regression

3.1 单特征线性回归

案例:根据房子尺寸预测房价

符号定义
x:输入向量
y:输出/目标向量
m:训练数据量
(x,y): 训练集中的一个数据
(x(i),y(i)):训练集中第i个数据

线性回归模型
y ^ = f w , b ( x ) = w x + b \hat{y}=f_{w,b}(x) =wx+b y^=fw,b(x)=wx+b

代价函数 cost function
平均平方误差函数 squared error function
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 J(w,b)=\frac{1}{2m}\sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2 J(w,b)=2m1i=1m(y^(i)y(i))2
说明:
1、额外乘 1 2 \frac{1}{2} 21是为了便于后续求导
2、代价函数J是关于线性系数w和b的函数

训练目标:最小化代价J

训练思路:梯度下降 gradient descent


补充一:梯度下降

何为梯度下降?
先看看单变量梯度下降
一元函数中可以认为梯度即是导数,从下图中可以看出,我们从任意点出发,当该点导数大于0时,往左移动靠近极小值点,当该点导数小于0时,往右移动靠近极小值点。因此给出一种收敛到极小值点的方法: w − w − α ∂ J ( w ) ∂ w w-w-\alpha\frac{\partial{J(w)}}{\partial{w}} wwαwJ(w),其中 α \alpha α是学习率,用来控制每一次移动步距。当学习率太小时,收敛缓慢,当学习率太大时,由于步距大,可能造成远离极值点而无法收敛,故应该选择合适的学习率进行训练。进行足够多次梯度下降后,w近似取到极小值点。
在这里插入图片描述
再来看多变量梯度下降,这里以方便可视化的二元函数梯度下降为例,学过高数的我们知道梯度的定义为:
∇ f = [ f x , f y ] T \nabla{f}=[f_x,f_y]^T f=[fx,fy]T
即由两个偏导构成的梯度向量,当方向导数和梯度方向一致时,方向导数最大,方向相反时,方向导数最小。因此想要最快下降到山谷位置,应沿着梯度反方向走,用数学表述为(假设两个变量是w和b)
[ w , b ] T = [ w , b ] T − α ∇ f [w,b]^T=[w,b]^T-\alpha\nabla{f} [w,b]T=[w,b]Tαf
w = w − α ∂ J ∂ w , b = b − α ∂ J ∂ w w=w-\alpha\frac{\partial{J}}{\partial{w}},b=b-\alpha\frac{\partial{J}}{\partial{w}} w=wαwJ,b=bαwJ
在这里插入图片描述
对于多元函数,梯度下降表达式即
[ x 1 , x 2 . . . , x n ] T = [ x 1 , x 2 . . . , x n ] T − α [ ∂ J ∂ x 1 , ∂ J ∂ x 2 , . . . , ∂ J ∂ x n ] T [x_1,x_2...,x_n]^T=[x_1,x_2...,x_n]^T-\alpha[\frac{\partial{J}}{\partial{x_1}},\frac{\partial{J}}{\partial{x_2}},...,\frac{\partial{J}}{\partial{x_n}}]^T [x1,x2...,xn]T=[x1,x2...,xn]Tα[x1J,x2J,...,xnJ]T
梯度下降算法的起始点随机确定,但收敛的极值点不一定是全局极值点,有可能陷入局部极值点,一种解决的思路是多次随机生成起点进行多次梯度下降,比较每次极值进行比较获取全局极值。


对于上面线性回归模型中提到的成本函数,其3D图像是凹函数,即只有一个极值点,因此不必考虑陷入局部极值的问题。

求偏导过程如下,注意求导和求和可以互换,即先导再求和:

∂ ∂ w J ( w , b ) = ∂ ∂ w 1 2 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w x ( i ) + b − y ( i ) ) x ( i ) = 1 m ∑ i = 1 m x ( i ) ( w x ( i ) + b − y ( i ) ) \frac{\partial}{\partial{w}}J(w,b)=\frac{\partial}{\partial{w}}\frac{1}{2m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(wx^{(i)}+b-y^{(i)})x^{(i)}=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}(wx^{(i)}+b-y^{(i)}) wJ(w,b)=w2m1i=1m(wx(i)+by(i))2=2m1i=1m2(wx(i)+by(i))x(i)=m1i=1mx(i)(wx(i)+by(i))
∂ ∂ b J ( w , b ) = ∂ ∂ b 1 2 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w x ( i ) + b − y ( i ) ) = 1 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) \frac{\partial}{\partial{b}}J(w,b)=\frac{\partial}{\partial{b}}\frac{1}{2m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(wx^{(i)}+b-y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)}) bJ(w,b)=b2m1i=1m(wx(i)+by(i))2=2m1i=1m2(wx(i)+by(i))=m1i=1m(wx(i)+by(i))

关于学习率的选择

如果学习率太小,梯度下降速率太慢
如果学习率太大,可能无法收敛(发散)/无法抵达极小值点
可以绘制学习曲线cost-iteration,发现曲线下降太慢/没达到收敛时,说明学习率太小,适当增加学习率;当曲线上升(不收敛)时,说明学习率太大,适当减小学习率
推荐的学习率尝试是…0.003、0.01、0.03、0.1…,即以3倍的公比调整
在这里插入图片描述

代码实现:
一元线性回归梯度下降代码实现

3.2 多特征线性回归

案例:
根据房子尺寸、房间数量、楼层数、年龄预测房价
在这里插入图片描述

符号定义
x j 表示第 j 个特征, x ⃗ ( i ) 表示第 i 个数据, n 表示特征数量, m 表示数据量 , , x ⃗ j ( i ) 表示第 i 个数据第 j 个特征 x_j表示第j个特征,\vec{x}^{(i)}表示第i个数据,n表示特征数量,m表示数据量,,\vec{x}^{(i)}_j表示第i个数据第j个特征 xj表示第j个特征,x (i)表示第i个数据,n表示特征数量,m表示数据量,x j(i)表示第i个数据第j个特征

多元线性回归模型
w = [ w 1 , w 2 , . . . , w n ]     y ^ ( i ) = f w ⃗ , b ( x ⃗ ) = w ⃗ ⋅ x ⃗ + b w=[w_1,w_2,...,w_n]~~~\\ \hat{y}^{(i)}=f_{\vec{w},b}(\vec{x})=\vec{w}\cdot\vec{x}+b w=[w1,w2,...,wn]   y^(i)=fw ,b(x )=w x +b

代价函数 cost function
平均平方误差函数 squared error function
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 J(w,b)=\frac{1}{2m}\sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2 J(w,b)=2m1i=1m(y^(i)y(i))2

训练目标:最小化代价J

训练思路:梯度下降 gradient descent

n个特征,即参数包含n个w和1个b,共n+1个参数

先计算偏导:

∂ ∂ w j J ( w ⃗ , b ) = ∂ ∂ w j 1 2 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) x j ( i ) = 1 m ∑ i = 1 m x j ( i ) ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) \frac{\partial}{\partial{w_j}}J(\vec{w},b)=\frac{\partial}{\partial{w_j}}\frac{1}{2m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})x_j^{(i)}=\frac{1}{m}\sum_{i=1}^{m}x_j^{(i)}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)}) wjJ(w ,b)=wj2m1i=1m(w x (i)+by(i))2=2m1i=1m2(w x (i)+by(i))xj(i)=m1i=1mxj(i)(w x (i)+by(i))
∂ ∂ b J ( w ⃗ , b ) = ∂ ∂ b 1 2 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) = 1 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) \frac{\partial}{\partial{b}}J(\vec{w},b)=\frac{\partial}{\partial{b}}\frac{1}{2m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)}) bJ(w ,b)=b2m1i=1m(w x (i)+by(i))2=2m1i=1m2(w x (i)+by(i))=m1i=1m(w x (i)+by(i))

更新参数:
w j = w j − α ∂ ∂ w j J ( w ⃗ , b ) ( j = 1 、 2... 、 n ) b = b − α ∂ ∂ b J ( w ⃗ , b ) w_j=w_j-\alpha\frac{\partial}{\partial{w_j}}J(\vec{w},b)(j=1、2...、n)\\b=b-\alpha\frac{\partial}{\partial{b}}J(\vec{w},b) wj=wjαwjJ(w ,b)(j=12...n)b=bαbJ(w ,b)

代码实现:
多元线性回归梯度下降代码实现

补充二:正规方程 normal equation

优化损失函数,除了梯度下降这种不断迭代直至收敛的算法外,从数学角度上还有一种暴力解法叫正规方程。

正规方程(Normal Equation)是用于求解线性回归模型参数的一种解析方法。它通过最小化误差平方和来找到最佳参数,不需要使用迭代优化方法如梯度下降。正规方程尤其适用于小规模数据集,因为它在大规模数据集上计算成本可能较高。

首先列出需要用到的线代知识:
①y是一维向量,则
y T y = ∣ ∣ y ∣ ∣ 2 = y ⋅ y y^Ty=||y||^2=y\cdot{y} yTy=∣∣y2=yy
②转置相关公式:
( A + B ) T = A T + B T ( A B ) T = B T A T (A+B)^T=A^T+B^T\\(AB)^T=B^TA^T (A+B)T=AT+BT(AB)T=BTAT
③p,q是一维列向量,则
p ⋅ q = p T q = q T p p\cdot{q}=p^Tq=q^Tp pq=pTq=qTp
④矩阵求导公式:
∂ ( A X ) ∂ X = A T \frac{\partial (AX)}{\partial X} = A^T X(AX)=AT
∂ ( X T A X ) ∂ X = ( A + A T ) X    [ A 对称时 = 2 A X ] \frac{\partial (X^T A X)}{\partial X} = (A + A^T) X~~[A对称时=2AX] X(XTAX)=(A+AT)X  [A对称时=2AX]

假设我们有一个线性回归模型:

y = X β + ϵ y = X\beta + \epsilon y=+ϵ

其中:
y 是目标变量向量( M × 1 M \times 1 M×1
X 是特征矩阵( M × ( N + 1 ) M \times (N+1) M×(N+1)),第一列通常为1,对应于截距项
β 是待估参数向量( ( N + 1 ) × 1 (N+1) \times 1 (N+1)×1
ϵ 是误差项向量( M × 1 M \times 1 M×1

则代价函数表示为
J ( β ) = ∣ ∣ y − X β ∣ ∣ 2 = ( y − X β ) T ( y − X β ) = ( y T − β T X T ) ( y − X β ) = y T y − y T X β − β T X T y + β T X T X β = y T y − 2 y T X β + β T X T X β J(\beta)=||y-X\beta||^2=(y-X\beta)^T(y-X\beta)=(y^T-\beta^TX^T)(y-X\beta)\\=y^Ty-y^TX\beta-\beta^TX^Ty+\beta^TX^TX\beta=y^Ty-2y^TX\beta+\beta^TX^TX\beta J(β)=∣∣y2=(y)T(y)=(yTβTXT)(y)=yTyyTβTXTy+βTXT=yTy2yT+βTXT
求导,令导数为0
∂ J ( β ) ∂ β = − 2 X T y + 2 X T X β = 0 → β = ( X T X ) − 1 X T y \frac{∂J(β)}{∂\beta}=-2X^Ty+2X^TX\beta=0\rightarrow\beta=(X^TX)^{-1}X^Ty βJ(β)=2XTy+2XT=0β=(XTX)1XTy

从最优参数向量的表达式可以看出,但矩阵规模较大时,计算成本很大,因此我们通常会在面对大规模数据集时选择梯度下降算法进行训练。

除此之外,我们还可以顺便证明一下平均平方损失函数是凸函数,如何判定凸函数,一般采用黑塞矩阵,是由目标函数在点X处的二阶偏导数组成的对称矩阵是否是半正定的,对J求二阶导:
J ′ ′ ( β ) = 2 X T X J^{''}(\beta)=2X^TX J′′(β)=2XTX
由于XTX为半正定矩阵,因此代价函数J的确是凸函数,计算出的极值即全局最值。

除此之外,正规方程法一个缺点是只适用于线性回归问题,而梯度下降在后续的逻辑回归、神经网络中都是我们优化算法的核心。


http://www.kler.cn/a/281211.html

相关文章:

  • Nuclei:开源漏洞扫描器
  • HTML静态网页成品作业(HTML+CSS)——宠物狗店网页(1个页面)
  • 相机产品展示步入3D可视化新纪元
  • ‌蜘蛛的工作原理及蜘蛛池的搭建与优化
  • 【JVM】执行引擎、JIT、逃逸分析(一)
  • 基于tkinter实现学生管理系统(三)
  • 计算机毕业设计hadoop+spark+hive物流预测系统 物流大数据分析平台 物流信息爬虫 物流大数据 机器学习 深度学习
  • 【深度学习】openai gpt调用的格式,参数讲解,tools是什么
  • 自建电商网站整合Refersion教程
  • 除猫毛宠物空气净化器是不是智商税?宠物空气净化器测评分享
  • django学习入门系列之第十点《django的获取请求与响应》
  • 10、Flink 动态表之动态表 连续查询(Continuous Query)详解
  • MySQL——子查询(5)带比较运算符的子查询
  • Leetcode Java学习记录——动态规划基础_2
  • Python | Leetcode Python题解之第378题有序矩阵中第K小的元素
  • EmguCV学习笔记 VB.Net 6.4 霍夫变换
  • eclipse下载安装与配置代码补全与中文版
  • 微软推出全新多语言高质量Phi-3.5语言模型
  • Vue组件的好处和理解、基本使用、注意事项、组件嵌套、VueComponent理解和原型链
  • Sweet Home 3D:Mac 与 Win 平台的强大 3D 室内装潢设计软件