加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python呆板进修中七种丧失函数的科学指南

发布时间:2019-11-13 16:35:33 所属栏目:建站 来源:CDA数据分析师
导读:丧失函数现实上是我们常常行使的这些技能的焦点,本文先容了多种丧失函数,他们的事变位置以及如安在Python中举办编码 媒介 起首想象一下一个场景你已经在给定的数据集上实习了一个呆板进修模子,而且已经筹备将其放在客户眼前。可是,这个时辰你应该怎样
副问题[/!--empirenews.page--]

丧失函数现实上是我们常常行使的这些技能的焦点,本文先容了多种丧失函数,他们的事变位置以及如安在Python中举办编码

Python呆板进修中七种丧失函数的科学指南

媒介

起首想象一下一个场景–你已经在给定的数据集上实习了一个呆板进修模子,而且已经筹备将其放在客户眼前。可是,这个时辰你应该怎样确定该模子会给出很好的功效呢?是否有一种怀抱尺度或技能可以辅佐你快速评估数据齐集的模子?

虽然有了—简朴的说,这就是丧失函数在呆板进修中施展浸染的处所。

丧失函数是我们喜好行使的呆板进修算法的焦点。可是可以看到大大都初学者和喜爱者对怎样行使丧失函数们以及在那边行使丧失函数感想很是狐疑。

丧失函数并不是那么的难以领略,而且假如把握了它将无穷地加强你对呆板进修算法的领略。那么,丧失函数是什么,我们应该怎样掌握丧失函数的意义呢?

在本文中,我们将接头呆板进修中行使的7种常见的丧失函数,并声名每个函数中在什么处所行使。 我们将在本文中先允许多内容,以是让我们此刻开始吧!

什么是丧失函数?

假设你此刻在山顶上,这个时辰必要往下走。你应该怎么抉择你往哪个偏向走?

若是是我的话,我会这么做:

  • 起首环视附近,看看全部有也许的阶梯
  • 然后拒绝那些向上的路。这是由于这些路径现实上会耗损我更多的精神,并使我的使命越发坚苦
  • 最后,选择我以为最轻易下坡的那条路

我方才只是依附我的直接来判定我的抉择的么?虽然不是,这些抉择正是丧失函数所提供的。

丧失函数将决定映射到相干的本钱上。

决定以为上坡会挥霍我们的精神和时刻。抉择以为向下对我们来说更有利。因此,它具有负本钱。

在有监视的呆板进修算法中,我们但愿在进修进程中将每个实习样本的偏差最小化。这可以通过一些优化计策(譬喻梯度降落)来完成。这个偏差就来自丧失函数。

丧失函数和本钱函数有什么区别?

起首必要在这里夸大一下,尽量本钱函数和丧失函数是同义词,可以交流行使,可是它们是差异的。

丧失函数仅用于单个实习样本。偶然也称为错误函数。另一方面,本钱函数是整个实习数据集的均匀丧失。优化计策的方针是最小化本钱函数。

回归丧失函数

此时,你应该很是认识线性回归了。它涉及对因变量 Y和几个自变量 X_i 之间的线性相关建模。因此,我们现实上在这些变量上在空间上拟合了一条空间线。

我们将行使给定的数据点来找到系数a0,a1,...,an。

Python呆板进修中七种丧失函数的科学指南

我们将行使闻名的波士顿住房数据集来领略这一观念。为了简朴起见,我们将只行使一个特性- 每个住宅的均匀房间数(X),来猜测因变量,以1000美元为单元的衡宇的中位数代价(Y)。

Python呆板进修中七种丧失函数的科学指南

我们将行使“ 梯度降落”作为一个优化计策来找到回归线。我不会具体先容有关“梯度降落”的伟大细节,可是这里有一个关于权重更新法则的提醒”:

在这里,theta_j是要更新的权重,alpha是进修率,J是本钱函数。本钱函数由theta参数化。我们的方针是找到发生最小总本钱的theta值。

我已经界说了以下每个丧失函数要遵循的步调:

  1. 为我们的猜测函数f(X)编写表达式,并确定我们必要查找的参数
  2. 确定每个实习样本要行使的丧失函数
  3. 查找本钱函数的表达式–全部样本的均匀丧失
  4. 查找本钱函数相对付每个未知参数的梯度
  5. 确定进修率并对牢靠次数的迭代运行权重更新法则

1.平方偏差丧失

每个实习样本的平方偏差丧失(也称为L2丧失)是现实值与猜测值之差的平方:

响应的本钱函数是这些平方偏差(MSE)的均值

我认为在你参考下面的这些代码之前,先本身实行找到梯度降落的梯度。

def update_weights_MSE(m, b, X, Y, learning_rate): m_deriv = 0 b_deriv = 0 N = len(X) for i in range(N): # Calculate partial derivatives # -2x(y - (mx + b)) m_deriv += -2*X[i] * (Y[i] - (m*X[i] + b)) # -2(y - (mx + b)) b_deriv += -2*(Y[i] - (m*X[i] + b)) # We subtract because the derivatives point in direction of steepest ascent m -= (m_deriv / float(N)) * learning_rate b -= (b_deriv / float(N)) * learning_rate return m, b

我在波士顿数据上行使了这段代码,以获取500次迭代中差异的进修率值:

Python呆板进修中七种丧失函数的科学指南

接下来你可以实行以0.1的进修率再次运行该代码500次迭代。

让我们再多谈一下MSE丧失函数。它是一个二次函数

个中a> 0),还记得它的是什么样子么?

Python呆板进修中七种丧失函数的科学指南

二次函数仅具有全局最小值。因为没有局部最小值,因此我们永久不会陷入局部最小值的逆境。因此,它始终可以确保“梯度降落”收敛(假如它完全收敛)到全局最小值。

MSE丧失函数通过对错误举办平方来处罚模子,以免发生大的错误。平方大会使它更大,对吗?可是在这里有一个告诫。此属性使MSE本钱函数对非常值的鲁棒性(Robust)低落。因此,假如我们的数据轻易呈现非常值,则不该行使此要领。

2.绝对偏差丧失

每个实习样本的绝对偏差是猜测值与现实值之间的间隔,而与标记无关。绝对偏差也称为L1丧失:

正如我之条件到的,价钱是这些绝对偏差(MAE)的均值。

与MSE对比,MAE本钱对付非常值更为妥当。可是,在处理赏罚数学方程中的绝对或模运算并不轻易。我信托你们中的许多人城市赞成这一点!我们可以以为这是MAE的一个弱点。

这是带有MAE本钱的update_weight函数的代码:

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读