Python语言描述随机梯度下降法
1.梯度下降
1)什么是梯度下降?
因为梯度下降是一种思想,没有严格的定义,所以用一个比喻来解释什么是梯度下降。
简单来说,梯度下降就是从山顶找一条最短的路走到山脚最低的地方。但是因为选择方向的原因,我们找到的的最低点可能不是真正的最低点。如图所示,黑线标注的路线所指的方向并不是真正的地方。
既然是选择一个方向下山,那么这个方向怎么选?每次该怎么走?
先说选方向,在算法中是以随机方式给出的,这也是造成有时候走不到真正最低点的原因。
如果选定了方向,以后每走一步,都是选择最陡的方向,直到最低点。
总结起来就一句话:随机选择一个方向,然后每次迈步都选择最陡的方向,直到这个方向上能达到的最低点。
2)梯度下降是用来做什么的?
在机器学习算法中,有时候需要对原始的模型构建损失函数,然后通过优化算法对损失函数进行优化,以便寻找到最优的参数,使得损失函数的值最小。而在求解机器学习参数的优化算法中,使用较多的就是基于梯度下降的优化算法(GradientDescent,GD)。
3)优缺点
优点:效率。在梯度下降法的求解过程中,只需求解损失函数的一阶导数,计算的代价比较小,可以在很多大规模数据集上应用
缺点:求解的是局部最优值,即由于方向选择的问题,得到的结果不一定是全局最优
步长选择,过小使得函数收敛速度慢,过大又容易找不到最优解。
2.梯度下降的变形形式
根据处理的训练数据的不同,主要有以下三种形式:
1)批量梯度下降法BGD(BatchGradientDescent):
针对的是整个数据集,通过对所有的样本的计算来求解梯度的方向。
优点:全局最优解;易于并行实现;
缺点:当样本数据很多时,计算量开销大,计算速度慢
2)小批量梯度下降法MBGD(mini-batchGradientDescent)
把数据分为若干个批,按批来更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性
优点:减少了计算的开销量,降低了随机性
3)随机梯度下降法SGD(stochasticgradientdescent)
每个数据都计算算一下损失函数,然后求梯度更新参数。
优点:计算速度快
缺点:收敛性能不好
总结:SGD可以看作是MBGD的一个特例,及batch_size=1的情况。在深度学习及机器学习中,基本上都是使用的MBGD算法。
3.随机梯度下降
随机梯度下降(SGD)是一种简单但非常有效的方法,多用用于支持向量机、逻辑回归等凸损失函数下的线性分类器的学习。并且SGD已成功应用于文本分类和自然语言处理中经常遇到的大规模和稀疏机器学习问题。
SGD既可以用于分类计算,也可以用于回归计算。
1)分类
a)核心函数
sklearn.linear_model.SGDClassifier
b)主要参数(详细参数)
loss:指定损失函数。可选值:‘hinge'(默认),‘log',‘modified_huber',‘squared_hinge',‘perceptron',
"hinge":线性SVM
"log":逻辑回归
"modified_huber":平滑损失,基于异常值容忍和概率估计
"squared_hinge":带有二次惩罚的线性SVM
"perceptron":带有线性损失的感知器
alpha:惩罚系数
c)示例代码及详细解释
d)结果图
2)回归
SGDRegressor非常适合回归问题具有大量训练样本(>10000),对于其他的问题,建议使用的Ridge,Lasso或ElasticNet。
a)核心函数
sklearn.linear_model.SGDRegressor
b)主要参数(详细参数)
loss:指定损失函数。可选值‘squared_loss'(默认),‘huber',‘epsilon_insensitive',‘squared_epsilon_insensitive'
说明:此参数的翻译不是特别准确,请参考官方文档。
"squared_loss":采用普通最小二乘法
"huber":使用改进的普通最小二乘法,修正异常值
"epsilon_insensitive":忽略小于epsilon的错误
"squared_epsilon_insensitive":
alpha:惩罚系数
c)示例代码
因为使用方式与其他线性回归方式类似,所以这里只举个简单的例子:
总结
以上就是本文关于Python语言描述随机梯度下降法的全部内容,希望对大家有所帮助。
数据分析咨询请扫描二维码
数据分析师的工作内容涉及多个方面,主要包括数据的收集、整理、分析和可视化,以支持商业决策和问题解决。以下是数据分析师的一 ...
2024-11-21数据分析师必须掌握的技能可以从多个方面进行归纳和总结。以下是数据分析师需要具备的主要技能: 统计学基础:数据分析师需要 ...
2024-11-21数据分析入门的难易程度因人而异,总体来看,入门并不算特别困难,但需要一定的学习和实践积累。 入门难度:数据分析入门相对 ...
2024-11-21数据分析是一项通过收集、整理和解释数据来发现有用信息的过程,它在现代社会中具有广泛的应用和重要性。数据分析能够帮助人们更 ...
2024-11-21数据分析行业正在迅速发展,随着技术的不断进步和数据量的爆炸式增长,企业对数据分析人才的需求也与日俱增。本文将探讨数据分析 ...
2024-11-21数据分析的常用方法包括多种技术,每种方法都有其特定的应用场景和优势。以下是几种常见的数据分析方法: 对比分析法:通过比 ...
2024-11-21企业数字化转型是指企业利用数字技术对其业务进行改造和升级,以实现提高效率、降低成本、创新业务模式等目标的过程。这一过程不 ...
2024-11-21数据分析作为一个备受追捧的职业领域,吸引着越来越多的女性加入其中。对于女生而言,在选择成为一名数据分析师时,行业选择至关 ...
2024-11-21大数据技术专业主要学习计算机科学、数学、统计学和信息技术等领域的基础理论和技能,旨在培养具备大数据处理、分析和应用能力的 ...
2024-11-21《Python数据分析极简入门》 第2节 3 Pandas数据查看 这里我们创建一个DataFrame命名为df: importnumpyasnpi ...
2024-11-21越老越吃香的行业主要集中在需要长时间经验积累和专业知识的领域。这些行业通常知识更新换代较慢,因此随着年龄的增长,从业者能 ...
2024-11-20数据导入 使用pandas库的read_csv()函数读取CSV文件或使用read_excel()函数读取Excel文件。 支持处理不同格式数据,可指定分隔 ...
2024-11-20大数据与会计专业是一门结合了大数据分析技术和会计财务理论知识的新型复合型学科,旨在培养能够适应现代会计业务新特征的高层次 ...
2024-11-20要成为一名数据分析师,需要掌握一系列硬技能和软技能。以下是成为数据分析师所需的关键技能: 统计学基础 理解基本的统计概念 ...
2024-11-20是的,Python可以用于数据分析。Python在数据分析领域非常流行,因为它拥有丰富的库和工具,能够高效地处理从数据清洗到可视化的 ...
2024-11-20在这个数据驱动的时代,数据分析师的角色变得愈发不可或缺。他们承担着帮助企业从数据中提取有价值信息的责任,而这些信息可以大 ...
2024-11-20数据分析作为现代信息时代的支柱之一,已经成为各行业不可或缺的工具。无论是在商业、科研还是日常决策中,数据分析都扮演着至关 ...
2024-11-20数字化转型已成为当今商业世界的热点话题。它不仅代表着技术的提升,还涉及企业业务流程、组织结构和文化的深层次变革。理解数字 ...
2024-11-20在现代社会的快速变迁中,选择一个具有长期增长潜力的行业显得至关重要。了解未来发展前景好的行业不仅能帮助我们进行职业选择, ...
2024-11-20统计学专业的就业方向和前景非常广泛且充满机遇。随着大数据、人工智能等技术的快速发展,统计学的重要性进一步凸显,相关人才的 ...
2024-11-20