本系列博客基于温州大学黄海广博士的机器学习课程的笔记,小伙伴们想更详细学习黄博士课程请移步到黄博士的Github、或者机器学习初学者公众号,现在在中国慕课也是可以学习的,内容包括机器学习、深度学习及Python编程,matplotlib、numpy、pandas、sklearn等,资料很详细,要系统学习请移步哦!笔者的博客只是笔记,内容不会十分详细,甚至会有些少错误!



1.几个基本概念

# 回归概念:
# 监督学习分为:回归(Regression)、分类(Classification)# 1.回归(Regression、Prediction)--标签是连续的;
# a.预测上海浦东的房价;
# b.预测未来股票市场走向;# 2.分类(Classification)--标签是离散的;
# a.身高170cm,体重60kg的男人穿什么尺码的牛仔裤;
# b.根据肿瘤的体积、患者的年龄来判断肿瘤是良性还是恶性;# 线性回归(Linear Regression):通过属性的线性组合进行预测的线性模型;
# 目的:找到一条直线或一个平面或更高维的超平面,使得预测值与真实值之间的误差最小化;

2.线性回归

2.1 一些相关符号约定

  • mmm:训练集中样本的数量;
  • nnn:特征的数量;
  • xxx:特征/输入变量;
  • yyy:目标变量/输出变量;
  • (x,y)(x,y)(x,y):训练集中的样本;
  • (x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i)):第i个观测样本;
  • hhh:学习算法的解决方案或函数,称为假设(hypothesis);
  • y^=h(x)\hat{y}=h(x)y^​=h(x):预测的值;
  • x(i)x^{(i)}x(i):特征矩阵中的第iii行,一个向量;
  • xj(i)x_j^{(i)}xj(i)​:特征矩阵中的第iii行的第jjj个特征;

2. 2 三个函数

  • 损失函数(Loss Function):度量单样本预测的错误程度,损失函数值越小,模型越好;常用的损失函数:0-1损失函数、平方损失函数、绝对损失函数、对数损失函数等;
  • 代价函数(Cost Function):度量全部样本集的平均误差;常用的代价函数:均方误差、均方根误差、平均绝对误差等;
  • 目标函数(Object Function):代价函数和正则化函数,最终要优化的函数;

2.3 回归算法流程(最小二乘法)

  1. x、y关系x、y关系x、y关系:h(x)=ω0+ω1x1+ω2x2+⋯+ωnxnh(x)=\omega_0+\omega_1x_1+\omega_2x_2+\dots+\omega_nx_nh(x)=ω0​+ω1​x1​+ω2​x2​+⋯+ωn​xn​

  2. 设x0=1x_0=1x0​=1,则有h(x)=ω0x0+ω1x1+ω2x2+⋯+ωnxn=ωTXh(x)=\omega_0x_0+\omega_1x_1+\omega_2x_2+\dots+\omega_nx_n=\omega^TXh(x)=ω0​x0​+ω1​x1​+ω2​x2​+⋯+ωn​xn​=ωTX

  3. 损失函数采用平方和损失:l(x(i))=12(h(x(i))−y(i))2l(x^{(i)})=\frac{1}{2}(h(x^{(i)})-y^{(i)})^2l(x(i))=21​(h(x(i))−y(i))2

  4. 找到一组ω(ω0,ω1,ω2,…,ωn)\omega(\omega_0,\omega_1,\omega_2,\dots,\omega_n)ω(ω0​,ω1​,ω2​,…,ωn​)使得J(ω)=12∑i=1m(h(x(i))−y(i))2最小J(\omega)=\frac{1}{2}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2 最小J(ω)=21​i=1∑m​(h(x(i))−y(i))2最小

  5. 要找到一组ω(ω0,ω1,ω2,…,ωn)\omega(\omega_0,\omega_1,\omega_2,\dots,\omega_n)ω(ω0​,ω1​,ω2​,…,ωn​)使得J(ω)=12∑i=1m(h(x(i))−y(i))2最小J(\omega)=\frac{1}{2}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2最小J(ω)=21​i=1∑m​(h(x(i))−y(i))2最小即最小化:∂J(ω)∂ω\frac{\partial{J{(\omega)}}}{\partial{\omega}}∂ω∂J(ω)​

  6. 将向量表达式转换为矩阵表达式,有:J(ω)=12(Xω−Y)2J(\omega)=\frac{1}{2}(X\omega-Y)^2J(ω)=21​(Xω−Y)2
    其中:X:m行n+1列的矩阵(m为样本个数,n为特征个数);ω:n+1行1列的矩阵(包含ω0);Y:m行1列矩阵;其中:\\X:m行n+1列的矩阵(m为样本个数,n为特征个数);\\\omega:n+1行1列的矩阵(包含\omega_0);\\Y:m行1列矩阵;其中:X:m行n+1列的矩阵(m为样本个数,n为特征个数);ω:n+1行1列的矩阵(包含ω0​);Y:m行1列矩阵;

  7. 由上可得:J(ω)=12(Xω−Y)2=12(Xω−Y)T(Xω−Y)J(\omega)=\frac{1}{2}(X\omega-Y)^2=\frac{1}{2}(X\omega-Y)^T(X\omega-Y)J(ω)=21​(Xω−Y)2=21​(Xω−Y)T(Xω−Y)
    其中:
    X=[1x1(1)x2(1)…xn(1)1x1(2)x2(2)…xn(2)⋮⋮⋮⋮⋮1x1(m)x2(m)…xn(m)],Y=[y(1)y(2)⋮y(m)]\\X=\begin{bmatrix} 1 & x_1^{(1)} & x_2^{(1)} & \dots & x_n^{(1)} \\ 1 & x_1^{(2)} & x_2^{(2)} & \dots & x_n^{(2)} \\ \vdots & \vdots & \vdots & \vdots & \vdots\\ 1 & x_1^{(m)} & x_2^{(m)} & \dots & x_n^{(m)}\end{bmatrix},Y=\begin{bmatrix}y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(m)}\end{bmatrix}X=⎣⎢⎢⎢⎢⎡​11⋮1​x1(1)​x1(2)​⋮x1(m)​​x2(1)​x2(2)​⋮x2(m)​​……⋮…​xn(1)​xn(2)​⋮xn(m)​​⎦⎥⎥⎥⎥⎤​,Y=⎣⎢⎢⎢⎡​y(1)y(2)⋮y(m)​⎦⎥⎥⎥⎤​

  8. 对J(ω)J(\omega)J(ω)求偏导:
    ∂J(ω)∂ω=12∂∂ω(Xω−Y)T(Xω−Y)=12∂∂ω(ωTXTXω−YTXω−ωTXTY+YTY)=12∂∂ω(ωTXTXω−2ωTXTY+YTY)=12(2XTXω−2XTY+0)=XTXω−XTY\begin{aligned} \frac{\partial{J(\omega)}}{\partial{\omega}} & = \frac{1}{2}\frac{\partial}{\partial\omega}(X\omega-Y)^T(X\omega-Y)\\ & = \frac{1}{2}\frac{\partial}{\partial\omega}(\omega^TX^TX\omega-Y^TX\omega-\omega^TX^TY+Y^TY) \\ & = \frac{1}{2}\frac{\partial}{\partial\omega}(\omega^TX^TX\omega-2\omega^TX^TY+Y^TY)\\ & = \frac{1}{2}(2X^TX\omega-2X^TY+0) \\ & = X^TX\omega-X^TY \end{aligned} ∂ω∂J(ω)​​=21​∂ω∂​(Xω−Y)T(Xω−Y)=21​∂ω∂​(ωTXTXω−YTXω−ωTXTY+YTY)=21​∂ω∂​(ωTXTXω−2ωTXTY+YTY)=21​(2XTXω−2XTY+0)=XTXω−XTY​

  9. 令∂J(ω)∂ω=0\frac{\partial{J(\omega)}}{\partial\omega}=0∂ω∂J(ω)​=0则有:ω=(XTX)−1XTY\omega=(X^TX)^{-1}X^TYω=(XTX)−1XTY

3.梯度下降

梯度下降的三种形式:

  • 批量梯度下降(Batch Gradient Descent,BGD):梯度下降的每一步中,都用到所有的训练样本;
  • 随机梯度下降(Stochastic Gradient Descent,SGD):梯度下降的每一步中,用到一个样本,在每一次计算后,便更新参数,不需要首先将所有的训练集求和;
  • 小批量梯度下降(Mini-Batch Gradient Descent,MBGD):梯度下降的每一步中,用到一定批量的训练样本;

3.1 批量梯度下降(Batch Gradient Descent)

  • 参数更新:
    ωj:=ωj−α1m∑i=1m((h(x(i))−y(i))⋅xj(i)),同步更新ωj,(j=0,1,…,n)\omega_j:=\omega_j-\alpha\frac{1}{m}\sum_{i=1}^m((h(x^{(i)})-y^{(i)})·{x_j^{(i)}}),同步更新\omega_j,(j=0,1,\dots,n) ωj​:=ωj​−αm1​i=1∑m​((h(x(i))−y(i))⋅xj(i)​),同步更新ωj​,(j=0,1,…,n)

3.2 随机梯度下降(Stochastic Gradient Descent)

  • 推导过程:
    ω=ω−α⋅∂J(ω)∂ωh(x)=ωTX=ω0x0+ω1x1+ω2x2+⋯+ωnxnJ(ω)=12(h(x(i))−y(i))2∂∂ωjJ(ω)=∂∂ωj12(h(x(i))−y(i))2=2⋅12(h(x(i))−y(i))⋅∂∂ωj(h(x(i))−y(i))=(h(x(i))−y(i))⋅∂∂ωj(∑i=0n(ωixi(i)−y(i)))=(h(x(i))−y(i))xj(i)\begin{aligned} \omega =& \omega-\alpha·\frac{\partial{J(\omega)}}{\partial\omega} \\ h(x) &= \omega^TX=\omega_0x_0+\omega_1x_1+\omega_2x_2+\dots+\omega_nx_n \\ J(\omega) =& \frac{1}{2}(h(x^{(i)})-y^{(i)})^2 \\ \frac{\partial}{\partial\omega_j}J(\omega) =& \frac{\partial}{\partial\omega_j}\frac{1}{2}(h(x^{(i)})-y^{(i)})^2 \\ =& 2·\frac{1}{2}(h(x^{(i)})-y^{(i)})·\frac{\partial}{\partial\omega_j}(h(x^{(i)})-y^{(i)}) \\ =& (h(x^{(i)})-y^{(i)})·\frac{\partial}{\partial\omega_j}(\sum_{i=0}^n(\omega_ix_i^{(i)}-y^{(i)}))\\ =& (h(x^{(i)})-y^{(i)})x_j^{(i)} \end{aligned} ω=h(x)J(ω)=∂ωj​∂​J(ω)====​ω−α⋅∂ω∂J(ω)​=ωTX=ω0​x0​+ω1​x1​+ω2​x2​+⋯+ωn​xn​21​(h(x(i))−y(i))2∂ωj​∂​21​(h(x(i))−y(i))22⋅21​(h(x(i))−y(i))⋅∂ωj​∂​(h(x(i))−y(i))(h(x(i))−y(i))⋅∂ωj​∂​(i=0∑n​(ωi​xi(i)​−y(i)))(h(x(i))−y(i))xj(i)​​
  • 参数更新:
    ωj:=ωj−α(h(x(i))−y(i))xj(i),同步更新ωj(j=0,1,…,n)\omega_j:=\omega_j-\alpha(h(x^{(i)})-y^{(i)})x_j^{(i)},同步更新\omega_j(j=0,1,\dots,n) ωj​:=ωj​−α(h(x(i))−y(i))xj(i)​,同步更新ωj​(j=0,1,…,n)

3.3 小批量梯度下降(Mini-Batch Gradient Descent)

  • 参数更新:
    ωj:=ωj−α1b∑k=ii+b−1(h(x(k))−y(k))xj(k),同步更新ωj(j=0,1,2,…,n)\omega_j:=\omega_j-\alpha\frac{1}{b}\sum_{k=i}^{i+b-1}(h(x^{(k)})-y^{(k)})x_j^{(k)},同步更新\omega_j(j=0,1,2,\dots,n) ωj​:=ωj​−αb1​k=i∑i+b−1​(h(x(k))−y(k))xj(k)​,同步更新ωj​(j=0,1,2,…,n)
  • bbb的取值:
    b=1:随机梯度下降,SGD;b=m:批量梯度下降,BGD;b=batch_size:小批量梯度下降,MBGD,一般是2的倍数,常见:32,64,128等;\begin{aligned} b =& 1:随机梯度下降,SGD;\\ b =& m:批量梯度下降,BGD;\\ b =& batch\_size:小批量梯度下降,MBGD,一般是2的倍数,常见:32,64,128等; \end{aligned} b=b=b=​1:随机梯度下降,SGD;m:批量梯度下降,BGD;batch_size:小批量梯度下降,MBGD,一般是2的倍数,常见:32,64,128等;​

3.4 梯度下降与最小二乘法比较

  • 梯度下降:需要选择学习率α\alphaα,需要多次迭代,当特征数量n大时能较好适用,适用于各种类型的模型;
  • 最小二乘法:不需要选择学习率α\alphaα,一次计算得出,需要计算(XTX)−1(X^TX)^{-1}(XTX)−1,如果特征数量n较大,则运算代价大,只适用于线性模型,不适合逻辑回归等其他模型;

3.5 数据归一化/标准化

  • 数据归一化可以提升模型精度:不同维度间的特征在数值上有一定比较性,可以提高分类器的准确性;
  • 数据归一化可以加速模型收敛:最优解的寻优过程明显变得平缓,更容易正确的收敛到最优解;
3.5. 1 归一化(最大-最小规范化)
  • 数据归一化:使得各特征对目标变量影响一致,会将特征数据进行伸缩变化,数据归一化会改变特征数据分布;
    x∗=x−xminxmax−xmin,将数据映射到[0,1]区间;x^* = \frac{x-x_{min}}{x_{max}-x_{min}},将数据映射到[0,1]区间; x∗=xmax​−xmin​x−xmin​​,将数据映射到[0,1]区间;

  • Z-Score标准化:使得不同特征间具备可比性,经过标准化变换后特征数据分布没有发生改变;
    x∗=x−μσ,处理后数据均值为0,方差为1;x^* = \frac{x-\mu}{\sigma},处理后数据均值为0,方差为1; x∗=σx−μ​,处理后数据均值为0,方差为1;

3.5. 2 归一化/标准化的模型
  • 需要做数据归一化/标准化的模型:

  • a.线性模型:KNN(K近邻)、K-means聚类、感知机、SVM;

  • 不需要做数据归一化/标准化的模型:

  • a.决策树、基于决策树的Boosting和Bagging等集成学习模型;

  • b.随机森林、XGBoost、LightGBM等树模型;

  • c.朴素贝叶斯;

机器学习入门2--回归之线性回归及梯度下降相关推荐

  1. 机器学习第4天:线性回归及梯度下降

    文章目录 一.简单线性回归(即一元线性回归) 二.代价函数 数学表达式: 代码实现: 实例说明 三.梯度下降 数学表达式: 具体方法 代码实现: 代价随迭代次数的变化 一.简单线性回归(即一元线性回归 ...

  2. 机器学习01-定义、线性回归、梯度下降

    目录 一.定义 What is Machine Learning 二.建模 Model Representation 三.一元线性回归 Linear Regression with One Varia ...

  3. 【机器学习基础】线性回归和梯度下降的初学者教程

    作者 | Lily Chen 编译 | VK 来源 | Towards Data Science 假设我们有一个虚拟的数据集,一对变量,一个母亲和她女儿的身高: 考虑到另一位母亲的身高为63,我们如何 ...

  4. 为什么回归直线过平均值点_线性回归和梯度下降的初学者教程

    假设有一个虚拟的数据集包含多对变量,即每位母亲和她女儿的身高: 通过这个数据集,我们如何预测另一位身高为63的母亲的女儿的身高? 方法是用线性回归. 首先找到最佳拟合线,然后用这条直线做预测. 线性回 ...

  5. 用懊悔法学习吴恩达机器学习【2】-----线性回归的梯度下降

    以下英文文档皆出自课程配套笔记 课9 代价函数二 这一课时考虑使用两个参数来描述代价函数.此时等价函数是一个碗形,碗底点为最小值,将碗形用等高线表示,等高线中心就是代价函数的最小值.所以距离等高线中心 ...

  6. 吴恩达机器学习(六)线性回归的梯度下降

    文章目录 1.先导知识 2.线性回归的梯度下降 1.先导知识 之前学习的内容: 2.线性回归的梯度下降 我们要做的是将梯度下降法应用到最小化平方差代价函数, 我们解决过的梯度下降问题之一就是它容易陷入 ...

  7. 梯度下降的线性回归用python_一元线性回归和梯度下降的python代码实现

    一元线性回归和梯度下降的python代码实现 2020-08-05 23:49 阅读数 9 import numpy as np import matplotlib.pyplot as plt imp ...

  8. 吴恩达机器学习MATLAB代码笔记(1)梯度下降

    吴恩达机器学习MATLAB代码笔记(1)梯度下降 单变量线性回归 1.标记数据点(Plotting the Date) fprintf('Plotting Data') data = load('D: ...

  9. 线性回归(梯度下降)2021-04-16

    线性回归(+gradient desent) 线性回归 基本思想 1,线性回归 1.1线性回归概念 1.2 回归参数的求解方法 1.21 最小二乘法(least square method 2.211 ...

最新文章

  1. 请收下这份NLP热门词汇解读
  2. php html 变量,PHP与HTML混编,使用PHP变量代替数据--20190221
  3. MapReduce实现倒排索引(类似协同过滤)
  4. 关于IDEA 的一些常用设置
  5. Caffe-SSD(single-shot-multibox)在Windows平台下的配置(CPU和GPU)与训练记录
  6. 计算机新入学教案,计算机应用 新教案(1-6周).doc
  7. JHChart 1.1.0 iOS图表工具库中文ReadMe
  8. PTA-基础编程题目集-函数题 ……
  9. idea 使用时的一些问题
  10. python中pd.read_Windows下Python的pd.read_excel()报错
  11. linux的文件系统简单介绍
  12. Android之NDK开发(转)
  13. linux系统怎么修改数据库密码,Linux系统修改数据库密码相关
  14. TeamViewer安装——好用的远程办公软件
  15. Low-Light Image Enhancement via Edge-Enhanced Multi-Exposure Fusion Network阅读札记
  16. 漂亮女人美丽秘诀------猕猴桃(奇异果)
  17. 微信小程序开发(4)--发布评论
  18. 轻松学会WiFi模块(ESP8266)—基于STM32,学到就是赚到!
  19. 【计算机网络】 IP地址划分
  20. Java软件工程师[初级测试题]

热门文章

  1. 封闭开发可以上外网吗_建立在封闭平台上? 小心踩
  2. 京东末位淘汰 10% 高管 ;聊天宝惊现大 Bug:用户可提现百万;斗鱼回应“人去楼空” | 极客头条...
  3. v-model和v-bind的区别
  4. Hadoop编写MapReduce之入门案例WordCount(自带+编写java)
  5. kafka 创建消费者报错 consumer zookeeper is not a recognized option
  6. 软件工程-第一章(郑逢斌版)
  7. Android系统启动系列1 进程基础
  8. 美洲杯-阿圭罗进球 国米前锋破门 阿根廷2-0出线
  9. c语言坐标正算实验报告,C语言程序设计实验报告范文
  10. B - Hotpot Gym - 103117B