赞
踩
文章来源:林骥
作者:林骥
机器学习系列文章
引言
我写人工智能系列文章,主要侧重于 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是对老表的最大支持。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。