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不再赋值:
然后根据定义构建成本函数:
即为成本值,表示为模型预测值与真实值之差平方的平均值,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)。右侧曲线即为成本函数的图形,我们构建成本函数的目的即在于找出图的最小值,此时可得到最优的回归模型。同理,不过图为二维曲线,图为三维曲面。
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,科学的确定方法后文涉及。)
上图中成本函数仅显示局部,实际的成本函数如下:
06 总结
(1)建立成本函数的目的为衡量回归模型的预测效果(即“成本”大小),确定最优的模型参数
(2)“成本”(cost)是针对全部“训练数据集”而言,对应函数为成本函数;“损失”(loss)是针对单个数据而言,对应函数为损失函数
标签:一元,吴恩达,plt,函数,train,cost,week1,模型,成本 From: https://blog.csdn.net/weixin_43490087/article/details/139179085