同样,梯度下降的目标是最小化函数 。在我们的例子中,这是为了使我们的模型的成本最小化 。它通过找到函数的切线并朝那个方向移动来实现这一点 。算法“步长”的大小是由已知的学习速率来定义的 。这基本上控制着我们向下移动的距离 。使用此参数,我们必须注意两种情况:
- 学习速率太大,算法可能无法收敛(达到最小值)并在最小值附近反弹,但永远不会达到该值
- 学习率太小,算法将花费太长时间才能达到最小值,也可能会“卡”在一个次优点上 。
从视觉上看,该算法将执行以下操作:
由于此算法对机器学习非常重要,让我们回顾一下它的作用:
- 随机初始化权重 。这叫做随机初始化
- 然后,模型使用这些随机权重进行预测
- 模型的预测是通过成本函数来评估的
- 然后模型运行梯度下降,找到函数的切线,然后在切线的斜率上迈出一步
- 该过程将重复N次迭代,或者如果满足某个条件 。
- 很可能将成本函数降低到全局最小值(非常接近或=0)
- 最有效的优化算法之一
- 在大型数据集上可能比较慢,因为它使用整个数据集来计算函数切线的梯度
- 容易陷入次优点(或局部极小值)
- 用户必须手动选择学习速率和迭代次数,这可能很耗时
标准方程(Normal Equation)如果我们回到我们的例子中,而不是一步一步地往下走,我们将能够立即到达底部 。标准方程就是这样 。它利用线性代数来生成权重,可以在很短的时间内产生和梯度下降一样好的结果 。
标准方程的优缺点优点
- 无需选择学习速率或迭代次数
- 非常快
- 不能很好地扩展到大型数据集
- 倾向于产生好的权重,但不是最佳权重
- 它加快了算法的速度
- 有些算法对尺度敏感 。换言之,如果特征具有不同的尺度,则有可能将更高的权重赋予具有更高量级的特征 。这将影响机器学习算法的性能,显然,我们不希望我们的算法偏向于一个特征 。
- 缩放前AB距离=>
- 缩放前BC距离=>
- 缩放后AB距离=>
- 缩放后BC的距离=>
从头开始编写线性回归好吧,现在你一直在等待的时刻;实现!
注意:所有代码都可以从这个Github repo下载 。但是,我建议你在执行此操作之前先遵循教程,因为这样你将更好地理解你实际在编写什么代码:
https://github.com/Vagif12/ML-Algorithms-From-Scratch/blob/main/Linear Regression from Scratch.ipynb
首先,让我们做一些基本的导入:
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.datasets import load_boston是的,这就是所有需要导入的了!我们使用的是numpy作为数学实现,matplotlib用于绘制图形,以及scikitlearn的boston数据集 。# 加载和拆分数据data = https://www.shwenmu.com/wenda/load_boston()X,y = data['data'],data['target']
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 小编教你python安装Scrapy框架的操作方法 小编教你电脑c盘满了怎么清理
- 奥奇传说圣骑战队什么时候回归,《奥奇传说手游》7月2日开启限量测试
- 什么游戏龙神职业,龙神终于回归了
- 今日何云伟李菁几乎不再合作 何云伟李菁
- 弹弹堂回归礼包给什么用,为什么玩了5年的良心游戏
- 弹弹堂跑车怎么获得,假如老版弹弹堂回归
- 后期的武器怎么打,回归不知道怎么打流放者山脉
- 生死狙击最新回归大礼是什么,我在末世有套房最新章节
- 杨洋回归女主从胡冰卿变成了她 杨洋胡冰卿
- 老公背叛出轨想回归 突然知道老公十年前背叛
