• cost function 成本函数


    cost function 成本函数

    cost function-成本函数

    image
    image
    image

    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

    __EOF__

  • 本文作者: Element
  • 本文链接: https://www.cnblogs.com/fyuan0206/p/17239991.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    Mysql的存储引擎
    Kylin (六) --------- 查询性能优化
    面试题-多线程篇-Java语言创建线程有几种不同的方式
    java 中汉字转拼音
    【Vue渲染】 条件渲染 | v-if | v-show | 列表渲染 | v-for
    Linux Shell字符串截取#与%使用
    Facebook的数字社交使命:连接世界的下一步
    微前端实际应用
    从裸机启动开始运行一个C++程序(七)
    【无标题】
  • 原文地址:https://www.cnblogs.com/fyuan0206/p/17239991.html