当前位置:   article > 正文

梯度下降法有什么用?

梯度下降的作用



文章来源:林骥

作者:林骥

机器学习系列文章

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

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

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

4、模型越复杂越好吗?

引言

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

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

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

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

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

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

1. 梯度下降法简介

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

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

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

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

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

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

2. 数据预处理

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

  1. from sklearn import datasets
  2. from sklearn.model_selection import train_test_split
  3. # 加载波斯顿房价数据集
  4. boston = datasets.load_boston()
  5. X = boston.data
  6. y= boston.target
  7. # 排除异常数据
  8. X = X[y < 50.0]
  9. y = y[y < 50.0]
  10. # 拆分训练数据集和测试数据集
  11. X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

3. 数据归一化

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

  1. from sklearn.preprocessing import StandardScaler
  2. # 数据归一化
  3. standardScaler = StandardScaler()
  4. standardScaler.fit(X_train)
  5. X_train_standard = standardScaler.transform(X_train)
  6. X_test_standard = standardScaler.transform(X_test)

4. 随机梯度下降法

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

  1. # 调用 sklearn 中的随机梯度下降法
  2. from sklearn.linear_model import SGDRegressor
  3. # 实例化 SGDRegressor
  4. sgd_reg = SGDRegressor(max_iter=1000, tol=1e-5)
  5. # 对训练数据集进行拟合
  6. sgd_reg.fit(X_train_standard, y_train)
  7. # 对测试数据集进行评分
  8. print('模型评分:', sgd_reg.score(X_test_standard, y_test))

返回结果:

模型评分:0.761538531249327

5. 结果解读

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

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

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

小结

本文使用波斯顿房价数据集,演示了随机梯度下降法的应用过程。

根据随机梯度下降法的思维,当你很难找到最优的方向,不妨随机选择一个方向,先行动起来,勇于试错,总比陷入焦虑情绪中要强,而且还有机会实现自己的目标,甚至可以得到更好的结果。

我想起一个热点问题:很想拼命努力一把,但是努力不起来怎么办?

我觉得当你感到迷茫的时候,不妨试着跳出「舒适区」,这好像与「随机梯度下降法」的思维有那么一点相似。

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

  1. 近期推荐阅读:
  2. 1】整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了【2】【终篇】Pandas中文官方文档:基础用法6(含1-5)
  3. 如果你觉得文章不错的话,分享、收藏、在看、留言666是对老表的最大支持。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/135719
推荐阅读
相关标签
  

闽ICP备14008679号