随机梯度下降_梯度下降法有什么用?

76f5e7d246a561af519d65b9b075d9cc.png 1dac7f6bfcf295548eff3e901194f709.png

7d811736e9ba085e580f3a1b0b7daca8.png

文章来源:林骥

作者:林骥

机器学习系列文章

1、如何用人工智能算出美不美?

2、如何用人工智能预测双 11 的交易额?

3、如何评价算法的好坏?

4、模型越复杂越好吗?

引言

我写人工智能系列文章,主要侧重于 3 个方面:

(1)说明算法的适用范围,介绍在什么情况下,可以使用什么算法,解决什么问题;

(2)多用数据案例进行演示,与日常工作和生活相关联,以便提高学习的兴趣,加深对算法的理解;

(3)包含算法的实现过程,也就是有即拿即用的代码,并且用比较详细的注释,让任何人都可以拿来进行实践练习。

为了让文章内容更加通俗易懂,我尽量避免使用那些枯燥乏味的数学公式推导。

我最近在学习「梯度下降法」的时候,脑海中浮现出一个问题:在人工智能领域,梯度下降法有什么用?

1. 梯度下降法简介

梯度下降法,是一种基于搜索的最优化方法,它其实不是一个机器学习算法,但是在机器学习领域,许多算法都是以梯度下降法为基础的,它的主要作用是寻找目标函数的最优解。

常用的梯度下降法有 3 种不同的形式:

(1)批量梯度下降法,简称 BGD,使用所有样本,比较耗时;

(2)随机梯度下降法,简称 SGD,随机选择一个样本,简单高效;

(3)小批量梯度下降法,简称 MBGD,使用少量的样本,这是一个折中的办法。

下面用一个实例数据,演示其中「随机梯度下降法」的应用过程。

2. 数据预处理

首先,我们加载波斯顿房价数据集,排除其中的异常数据,并拆分为训练数据集和测试数据集:

from sklearn import datasets
from sklearn.model_selection import train_test_split

# 加载波斯顿房价数据集
boston = datasets.load_boston()
X = boston.data
y= boston.target

# 排除异常数据
X = X[y < 50.0]
y = y[y < 50.0]

# 拆分训练数据集和测试数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

3. 数据归一化

其次,用对数据进行归一化,注意是统一使用训练数据集进行拟合,然后分别在训练数据集和测试数据集上面进行转换:

from sklearn.preprocessing import StandardScaler

# 数据归一化
standardScaler = StandardScaler()
standardScaler.fit(X_train)
X_train_standard = standardScaler.transform(X_train)
X_test_standard = standardScaler.transform(X_test)

4. 随机梯度下降法

接下来,我们开始调用 sklearn 中的随机梯度下降法,

# 调用 sklearn 中的随机梯度下降法
from sklearn.linear_model import SGDRegressor

# 实例化 SGDRegressor
sgd_reg = SGDRegressor(max_iter=1000, tol=1e-5)

# 对训练数据集进行拟合
sgd_reg.fit(X_train_standard, y_train)

# 对测试数据集进行评分
print('模型评分:', sgd_reg.score(X_test_standard, y_test))

返回结果:

模型评分:0.761538531249327

5. 结果解读

因为随机梯度下降法是一个随机的算法,所以返回的模型评分结果也是一个随机数,每次运行的结果可能都会不一样。但是,实践经验告诉我们,通过随机梯度下降法,不仅求解速度得到提升,而且依然能够接近最优解。

随机梯度下降法有两个优点,一个优点是更容易跳出局部最优解,另一个优点是具有更快的运行速度。这也提醒我们,做事的时候,不要钻进死胡同,不要一条道走到黑,有时候跳出来看一看,外面可能还有更广阔的世界。

在机器学习领域,有些算法本身就具有随机的特点,比如随机森林算法等。而在现实世界中,很多问题本身也是随机的,有可能根本就不存在一个固定的最优解。所以,「随机」是存在现实意义的。

小结

本文使用波斯顿房价数据集,演示了随机梯度下降法的应用过程。 根据随机梯度下降法的思维,当你很难找到最优的方向,不妨随机选择一个方向,先行动起来,勇于试错,总比陷入焦虑情绪中要强,而且还有机会实现自己的目标,甚至可以得到更好的结果。 我想起一个热点问题:很想拼命努力一把,但是努力不起来怎么办? 我觉得当你感到迷茫的时候,不妨试着跳出「舒适区」,这好像与「随机梯度下降法」的思维有那么一点相似。

以上,希望能够对你有所启发。

近期推荐阅读:

【1】整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了【2】【终篇】Pandas中文官方文档:基础用法6(含1-5)

如果你觉得文章不错的话,分享、收藏、在看、留言666是对老表的最大支持。

e7ebb69eb320a9fe678f389e0a6eb7ae.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值