下面的有些叙述基于我个人理解, 可能与专业书籍描述不同, 但是最终都是表达同一个意思, 如果有不同意见的小伙伴, 请在评论区留言, 我不胜感激.
参考:
-
周志华-机器学习
-
最小二乘法求解多元回归方程: https://blog.csdn.net/weixin_39445556/article/details/83543945
-
梯度下降算法: https://blog.csdn.net/h_l_dou/article/details/82826653
-
回归方程度量方式: https://blog.csdn.net/qq_15698613/article/details/86478736
前提介绍
常见统计量
均值:
中位数:
将样本数据按数值大小顺序排列, 取中间的变量.
众数:
数据中出现次数最多的数.
方差:
描述数据离散程度.
标准差:
简单线性回归
问题背景
举一个例子说明: 商家卖出产品的数量与做广告数量的线性关系(如下图), 当做的广告越多, 那么卖出的产品就越多; 在这个问题中, 卖出产品这个样本中, 就存在一个属性: 做广告数量, 因此可以用线性方程对这个问题进行模拟, 利用线性方程大概预测出广告与产品之间的数量关系, 但是如何得到最优的线性方程, 下面通过简单线性回归模型求解.
产品数量与广告数量的关系:
线性回归方程:
建立简单线性回归方程
-
简单线性回归模型:
β0: 回归线截距
β1: 回归线斜率
ε: 偏差 -
简单线性回归方程:
E(y) = β0 + β1*x
该方程用于描述在给定x情况下y的期望值. -
估计的简单线性回归方程:
ŷ = b0 + b1*x
描述给定x情况下求ŷ 即y的估计值 -
偏差ε假定:
ε是随机变量, 均值为0
ε的方差对于所有的自变量x都是一样的
ε独立, 满足正态分布 -
求解最优简单线性回归模型的前提:
-
b0, b1求解公式:
-
使用前面的案例求解对应的b0, b1:
分子 = (1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-20)+(3-2)(27-20)
= 6 + 4 + 0 + 3 + 7
= 20
分母 = (1-2)^2 + (3-2)^2 + (2-2)^2 + (1-2)^2 + (3-2)^2
= 1 + 1 + 0 + 1 + 1
4
b1 = 20/4 =5
b0 = 20 - 5*2 = 20 - 10 = 10
最终得线性回归方程为: y = 5x +10
Python代码实现简单线性回归
import numpy as np
#求b0, b1
def fitSLR(x, y):
n = len(x)
dinominator = 0
numerator = 0
for i in range(0, n):
numerator += (x