吴恩达机器学习 第一课 week1 一元回归模型的成本函数

目录

01 学习目标

02 实现工具

03 问题陈述

04 构建成本函数

05 成本函数优化(参数优化)

06 总结


01 学习目标

       学习建立一元线性回归模型的成本函数

02 实现工具

    (1)代码运行环境

              Python语言,Jupyter notebook平台

    (2)所需模块

             NumPy,Matplotlib,lab_utils_uni

            (lab_utils_uni是课程中用于绘制复杂图形的安装包)

03 问题陈述

       问题需求为:根据二手房交易平台已成交的既有数据,建立准确的回归模型。

       我们的任务:建立成本函数,并依此确定回归模型的参数。

04 构建成本函数

      (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')

      (deeplearning.mplstyle为课程中使用的样式文件,见前1篇文章;%matplotlib widget为导入matplotlib的交互式绘图功能,需要jupyter支持最新版本的ipympl模块,可通过“pip install --upgrade ipympl”更新

     (2)读取“数据集”,并绘于图中

# x_train为输入变量,其变量值为房子面积,单位:平方米
# y_train为目标变量,其变量值为房子成交价,单位:万
x_train = np.array([100, 170, 200, 250, 300, 320])
y_train = np.array([250, 300, 480,  430,   630, 730])

# 采用散点图绘出数据
plt.scatter(x_train, y_train, marker='x', c='r')
# 设置标题
plt.title("Housing Prices")
# y-axis label
plt.ylabel('Price (w)')
# x-axis label
plt.xlabel('Size (m^2)')
plt.show()

          运行以上代码,结果为:

(3)建立回归模型的成本函数

         首先写出一元线性回归线性模型。这次,参数w和b不再赋值:

f_{w,b}(x^{i})=wx^{i}+b

        然后根据定义构建成本函数:

J(w,b)=\frac{1}{2m}\sum_{i=0}^{m-1}(f_{w,b}(x^{i})-y^{i})^{2}

       J(w,b)即为成本值,表示为模型预测值与真实值之差平方的平均值,J受参数w和b影响。

       接着,在jupyter中用定义函数的形式定义成本函数,以便适于大量数据计算:

def compute_cost(x, y, w, b): 
    """
    Computes the cost function for linear regression.
    
    Args:
      x (ndarray (m,)): Data, m examples 
      y (ndarray (m,)): target values
      w,b (scalar)    : model parameters  
    
    Returns
        total_cost (float): The cost of using w,b as the parameters for linear regression
               to fit the data points in x and 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

        这里,为理解成本函数的几何意义,给出下图:

       上图中左侧的蓝色竖线即为“损失”(loss),所有“损失”的平方的平均值即为“成本”(cost)。右侧曲线即为成本函数J(w)的图形,我们构建成本函数的目的即在于找出J(w)图的最小值,此时可得到最优的回归模型。J(w,b)同理,不过J(w)图为二维曲线,J(w,b)图为三维曲面。

05 成本函数优化(参数优化)

       绘出线性回归模型和成本函数图形:

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)

       运行以上代码,结果为:

        图中,上左图为回归模型的预测效果,上右图为交互图(用于鼠标点选w和b后观察上左图的预测效果),下图为成本函数的三维曲面图(图中显示由(w,b)确定的点)。

     (本文为述清概念简化为通过点选(优化)确定参数w和b,科学的确定方法后文涉及。)

       通过使成本函数不断变小对模型优化最终确定参数w=2.1、b=2.42,得到线性回归模型如下:

f(x^{i})=2.1x^{i}+2.42

       上图中成本函数仅显示局部,实际的成本函数如下:

06 总结

    (1)建立成本函数的目的为衡量回归模型的预测效果(即“成本”大小),确定最佳的模型参数

    (2)“成本”(cost)是针对全部“训练数据集”而言,对应函数为成本函数;“损失”(loss)是针对单个数据而言,对应函数为损失函数

  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值