目录

符号

一、线性回归模型(Linear regression model)

(1)什么是线性回归模型

(2)线性回归模型的数学形式

        理论

        实践

 二、成本函数(Cost function)

(1)什么是成本函数

(2)成本函数的数学形式

        理论

        实践


符号

以下是本文所需要用到的符号

符号                                                             描述                                               python(如果适用)


x                                                                 特征值                                            x_train

y                                                                 目标值                                            y_train

x_{}^{(i)},y_{}^{(i)}                                                     示例                                                x_i

m                                                                示例数量                                         y_i

w                                                                参数:权重                                      m        

b                                                                 参数:偏移                                      n

f_{w,b}(x_{}^{(i)})                                                      模型预估值                                      f_wb   

一、线性回归模型(Linear regression model)

(1)什么是线性回归模型

        线性回归模型是一种用于建立输入和连续输出之间关系的模型。它假设输入和输出之间存在线性关系。该模型可以用于预测连续变量的值,例如房价、销售额、股票价格等。

(2)线性回归模型的数学形式

        理论

        线性回归的模型函数(这是一个从映射到的函数)表示为xy

f_{w,b}(x_{}^{(i)})=wx_{}^{(i)}+b

        python中可表示为:

f_wb = w * x[i] + b

        实践

# 导入numpy、matplotlib模块
import numpy as np
from matplotlib import pyplot as plt
# 设定特征值
x = np.array([1, 2, 3, 4, 5])
# 设定权重、偏移
w=1
b=0
# 设定线性回归函数
f_wb = w*x+b
# 绘制数据点
plt.scatter(x, f_wb)
# 绘制回归线
plt.plot(x, f_wb, color='red')
# 添加标题和标签
plt.title('Linear Regression')
plt.xlabel('x')
plt.ylabel('f_wb')
# 显示图形
plt.show()

 二、成本函数(Cost function)

(1)什么是成本函数

        在线性回归模型中,成本函数(Cost function)通常采用最小二乘法(Least Square Method)来定义。

(2)成本函数的数学形式

        理论

        成本函数就是所有训练样本的预测值与实际值之间的误差平方和。

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

         (f_{w,b}(x^{(i)})-y^{(i)})^2:目标值和预测之间的平方差。

        \sum\limits_{i=0}^{m-1}(f_{w,b}(x^{(i)})-y^{(i)})^2:每个目标值和预测之间平方差的和

        $J(w,b) = \frac{1}{2m}\sum\limits_{i=0}^{m-1}(f_{w,b}(x^{(i)})-y^{(i)})^2$:总的平均方差

请注意,求和范围通常从1到m,而代码将从0到m-1。

        实践

 由上图可以清晰看到随着w的变化,总的平均方差也在改变,因此可以通过梯度下降的方法最小化成本来改变w和b就可以得到一条与数据完美拟合的线

# 导入numpy、matplotlib模块
import numpy as np
from matplotlib import pyplot as plt
# 设定特征值
x_train = np.array([1, 2 , 3])
y_train = np.array([1, 2 , 3])
x = np.array([1, 2, 3])
# 设定权重
w=[]
for n in range(-1,6,1):
    w.append(n/2)
# 设定偏移
b=0
# 获取x(特征值)数量
m = len(x)
# 定义变量
cost_sum = 0
J_wb=[]
# 计算成本函数
for j in range(len(w)):
    for i in range(m):
        f_wb = w[j] * x[i] + b
        cost = (f_wb - y_train[i]) ** 2
        cost_sum = cost_sum + cost
    j_wb = (1 / (2 * (m+1))) * cost_sum
    cost_sum = 0
    J_wb.append(j_wb)
# 绘制成本函数点
plt.scatter(w, J_wb)
# 绘制成本函数线
plt.plot(w, J_wb, color='red')
# 添加标题和标签
plt.title('Cost function')
plt.xlabel('w')
plt.ylabel('J_wb')
# 显示图形
plt.show()

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐