机器学习_2、cost function 成本函数

本文介绍了线性回归模型中的成本函数,用于衡量模型预测与实际数据的差距。通过计算预测值与目标值的平方差并求和,然后除以2乘以样本数量得到总成本。在给定的数据点上,通过调整模型参数w和b,寻找使成本最小化的值。当数据点不在同一直线上时,无法得到成本为零的解。文章还探讨了成本函数的凸性质,以及如何通过梯度下降找到全局最小值。
摘要由CSDN通过智能技术生成

cost function 成本函数

cost function-成本函数

imageimageimage

1、目标

:实现和探索具有一个变量的线性回归的成本函数。

import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
from lab_utils_uni import plt_intuition, plt_stationary, plt_update_onclick, soup_bowl
plt.style.use('./deeplearning.mplstyle')

我们使用与上一个实验室之前相同的两个数据点;
1000平方英尺的房子以300000美元的价格出售
2000平方英尺的房屋以500000美元的价格出售。

x_train = np.array([1.0, 2.0])           #(size in 1000 square feet)
y_train = np.array([300.0, 500.0])           #(price in 1000s of dollars)

2、计算成本:

变量的成本方程(1)image
下面是以我们的预测为例𝑖,使用参数𝑤,𝑏(2)image
下面是目标值和预测值之间的平方差。(3)image

这些差异在所有𝑚示例,并除以2m以产生成本,𝐽(𝑤,𝑏)。
注意求和范围通常从 1 到 m,而代码将从 0 到 m-1。

下面的代码通过循环每个示例来计算成本。在每个循环中:
f_wb,计算预测
计算目标和预测之间的差异并平方。
这被添加到总成本中。

def compute_cost(x, y, w, b): 
    """
    Computes the cost function for linear regression.
    Args:
      x (ndarray (m,)): 数据,m个示例
      y (ndarray (m,)): 数据,m个示例
      w,b (标量)     : 模型参数
    Returns
        total_cost (float): 使用w,b作为线性回归参数的成本以拟合x和y中的数据点
    """
    # number of training examples
    m = x.shape[0]
    cost_sum = 0
    for i in range(m):
        f_wb = w * x[i] + b
        cost = (f_wb - y[i]) ** 2
        cost_sum = cost_sum + cost
    total_cost = (1 / (2 * m)) * cost_sum
    return total_cost

你的目标是找到一个模型𝑓𝑤,𝑏(𝑥)=𝑤𝑥+𝑏, 带参数𝑤,𝑏 , 它将在给定输入的情况下准确预测房屋价值𝑥。
成本是衡量模型在训练数据上的准确性的指标。
上面的成本方程(1)表明,如果𝑤 和𝑏 可以这样选择,使得预测𝑓𝑤,𝑏(𝑥) 匹配目标数据𝑦, (𝑓𝑤,𝑏(𝑥(𝑖))−𝑦(𝑖))2 将为零并且成本最小化。
在这个简单的两点示例中,在之前的实验中,确定𝑏=100提供了最佳解决方案,所以让我们设置𝑏 到100,并专注于𝑤。
下面,使用滑块控件选择的值𝑤 从而使成本最小化。

plt_intuition(x_train,y_train)
interactive(children=(IntSlider(value=150, description='w', max=400, step=10), Output()), _dom_classes=('widge…

该图包含一些值得注意的点。当𝑤=200,与之前实验室的结果相匹配。
由于目标和修脚之间的差异在成本方程中是平方的。
因此当𝑤要么太大,要么太小。
使用通过最小化成本选择的w和b会生成一条与数据完美匹配的线。

3、成本函数可视化-3D

提供了绘图例程,例程位于本地目录的lab_utils_uni.py中。

4、更大的数据集

它使用指导性来查看具有更多数据点的方案。此数据集包括不在同一行上的数据点。这对成本方程式意味着什么?我们能找到吗 𝑤和 𝑏那会给我们0的成本?

x_train = np.array([1.0, 1.7, 2.0, 2.5, 3.0, 3.2])
y_train = np.array([250, 300, 480,  430,   630, 730,])
plt.close('all') 
fig, ax, dyn_items = plt_stationary(x_train, y_train)
updater = plt_update_onclick(fig, ax, x_train, y_train, dyn_items)
Figure

请注意左图中的虚线。这些表示训练集中每个示例贡献的成本部分。在这种情况下,值大约 w=209和 b=2.4提供低成本。请注意,由于我们的训练示例不在一条线上,因此最小成本不为零。

5、凸成本曲面

本函数对损失进行平方的事实确保了“误差面”像汤碗一样凸起。它将始终具有一个最小值,可以通过遵循所有维度的梯度来达到该最小值。在上一个剧情中,因为 𝑤和 𝑏 尺寸缩放不同,这不容易识别。下图,其中 𝑤 和 𝑏是对称的。

soup_bowl()
Figure
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知源书院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值