梯度下降原理及Python实现

梯度下降算法是一个很基本的算法,在机器学习和优化中有着非常重要的作用,本文首先介绍了梯度下降的基本概念,然后使用Python实现了一个基本的梯度下降算法。梯度下降有很多的变种,本文只介绍最基础的梯度下降,也就是批梯度下降。

实际应用例子就不详细说了,网上关于梯度下降的应用例子很多,最多的就是NG课上的预测房价例子:

假设有一个房屋销售的数据如下:

面积(m^2) 销售价钱(万元)

面积(m^2)

销售价钱(万元)

123

250

150

320

87

180

根据上面的房价我们可以做这样一个图:

于是我们的目标就是去拟合这个图,使得新的样本数据进来以后我们可以方便进行预测:

对于最基本的线性回归问题,公式如下:

x是自变量,比如说房子面积。θ是权重参数,也就是我们需要去梯度下降求解的具体值。

在这儿,我们需要引入损失函数(Loss function 或者叫 cost function),目的是为了在梯度下降时用来衡量我们更新后的参数是否是向着正确的方向前进,如图损失函数(m表示训练集样本数量):

下图直观显示了我们梯度下降的方向,就是希望从最高处一直下降到最低出:

梯度下降更新权重参数的过程中我们需要对损失函数求偏导数:

求完偏导数以后就可以进行参数更新了:

伪代码如图所示:

好了,下面到了代码实现环节,我们用Python来实现一个梯度下降算法,求解:

y=2x1+x2+3

,也就是求解:

y=ax1+bx2+c

中的a,b,c三个参数 。

下面是代码:

x_train是训练集x,y_train是训练集y, x_test是测试集x,运行后得到如下的图,图片显示了算法对于测试集y的预测在每一轮迭代中是如何变化的:

放大局部后如图:

我们可以看到,线段是在逐渐逼近的,训练数据越多,迭代次数越多就越逼近真实值。

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2016-11-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏null的专栏

简单易学的机器学习算法——集成方法(Ensemble Method)

一、集成学习方法的思想 前面介绍了一系列的算法,每个算法有不同的适用范围,例如有处理线性可分问题的,有处理线性不可分问题。在现实世界的生活中,常常会因为“集体...

2863
来自专栏SIGAI学习与实践平台

理解AdaBoost算法

与随机森林一样,Boosting算法也是一种集成学习算法,随机森林和集成学习在SIGAI之前的公众号文章“随机森林概述”中已经介绍。Boosting的分类器由多...

934
来自专栏一直在跳坑然后爬坑

深入理解向量进行矩阵变换的本质

向量的理解 上图表述的是平面上一点,在以i和j为基的坐标系里的几何表示,这个点可以看作(x,y)也可以看作是向量ox与向量oy的和。

3164
来自专栏数据科学与人工智能

【知识】新手必看的十种机器学习算法

机器学习领域有一条“没有免费的午餐”定理。简单解释下的话,它是说没有任何一种算法能够适用于所有问题,特别是在监督学习中。 例如,你不能说神经网络就一定比决策树好...

2166
来自专栏AI深度学习求索

科普:CNN论文介绍的开篇」神经网络与卷积神经网络

最开始接触这个名词的时候,很长一段时间都将它看做一个高深莫测的神奇工具。竟然和大脑神经都有关系的算法,肯定很厉害!

1313
来自专栏新智元

训练神经网络的五大算法:技术原理、内存与速度分析

【新智元导读】 训练神经网络的算法有成千上万个,最常用的有哪些,哪一个又最好?作者在本文中介绍了常见的五个算法,并从内存和速度上对它们进行对比。最后,他最推荐莱...

4799
来自专栏计算机视觉与深度学习基础

目标检测算法:RCNN、YOLO vs DPM

以下内容节选自我的研究报告。 1. 背景 目标检测(object detection)简单说就是框选出目标,并预测出类别的一个任务。它是一种基于目标几何和统计...

4856
来自专栏计算机视觉战队

每日一学——神经网络(下)

神经网络结构 灵活地组织层 将神经网络算法以神经元的形式图形化。神经网络被建模成神经元的集合,神经元之间以无环图的形式进行连接。也就是说,一些神经元的输出是另一...

3477
来自专栏计算机视觉战队

CVPR 2018文章解读——腾讯AI Lab

该主要提出了一种全新的自动图像标注的生成式模型,名为多样性和独特性图像标注(D2IA)。受到人类标注集成的启发,D2IA将产生语义相关,独特且多样性的标签。

752
来自专栏算法channel

北大陈浩然笔记:特征缩放和泛化能力(亮点)

表示第 i 个数据的第 j 个属性,它是一个实数,yi 是第 i 个数据的标签值,也是实数。f是我们学习到的模型,

1130

扫码关注云+社区

领取腾讯云代金券