机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型

目录

  • 1、线性回归简介
    • 1.1 线性回归应用场景
    • 1.2 什么是线性回归
      • 1.2.1 定义与公式
      • 1.2.2 线性回归的特征与目标的关系分析
  • 2、线性回归api初步使用
    • 2.1 线性回归API
    • 2.2 举例
      • 2.2.1 步骤分析
      • 2.2.2 代码过程
  • 3、线性回归的损失和优化
    • 3.1 损失函数
    • 3.2 优化算法
      • 3.2.1 正规方程
        • (1)什么是正规方程
        • (2)正规方程求解举例
      • 3.2.2 正规方程的推导
    • **推导方式一**:
    • **推导方式二**:
      • 3.2.2 梯度下降(Gradient Descent)
        • (1)什么是梯度下降
        • (2)梯度的概念
        • (3)梯度下降举例
        • (4)梯度下降(Gradient Descent)公式
    • 3.3 梯度下降和正规方程的对比
      • 3.3.1 算法选择依据:
  • 4、梯度下降法介绍
    • 4.1 全梯度下降算法(FGD)
    • 4.2 随机梯度下降算法(SGD)
    • 4.3 小批量梯度下降算法(mini-batch)
    • 4.4 随机平均梯度下降算法(SAG)
    • 4.5 梯度下降法算法比较和进一步优化
      • 4.5.1 算法比较
      • 4.5.2 梯度下降优化算法
  • 5、线性回归api(sklearn包实现)
    • 总结:
  • 6、案例:波士顿房价预测
    • 6.1 案例背景介绍
    • 6.2 案例分析
    • 6.3 回归性能评估
    • 6.4 代码实现
      • (1)正规方程
      • (2)梯度下降法
  • 7、欠拟合和过拟合
    • 7.1 定义
    • 7.2 原因以及解决办法
    • (1)欠拟合原因以及解决办法
    • (2)过拟合原因以及解决办法
    • 7.3 正则化
      • 7.3.1 什么是正则化
      • 7.3.2 正则化类别
        • (1)==L2正则化==
        • (2)==L1正则化==
    • 7.4 维灾难
      • 7.4.1 什么是维灾难
      • 7.4.2 维数灾难与过拟合
  • 8、正则化线性模型
    • 8.1 Ridge Regression (岭回归,又名 Tikhonov regularization)
    • 8.2 Lasso Regression(Lasso 回归)
    • 8.3 Elastic Net (弹性网络)
    • 8.4 Early Stopping
    • 总结:
  • 9、线性回归的改进-岭回归
    • 9.1 API
    • 9.2 观察正则化程度的变化,对结果的影响?
    • 9.3 波士顿房价预测
  • 10、模型的保存和加载
    • 10.1 sklearn模型的保存和加载API
    • 10.2 线性回归的模型保存加载案例
    • 总结:

1、线性回归简介

1.1 线性回归应用场景

  • 房价预测

  • 销售额度预测

  • 贷款额度预测

举例:

机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第1张图片

1.2 什么是线性回归

1.2.1 定义与公式

线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式

  • 特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归

机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第2张图片

  • 线性回归用矩阵表示举例:
    机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第3张图片

那么怎么理解呢?我们来看几个例子:

  • 期末成绩:0.7×考试成绩+0.3×平时成绩
  • 房子价格 = 0.02×中心区域的距离 + 0.04×城市一氧化氮浓度 + (-0.12×自住房平均房价) + 0.254×城镇犯罪率

上面两个例子,我们看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型

1.2.2 线性回归的特征与目标的关系分析

线性回归当中主要有两种模型,一种是线性关系,另一种是非线性关系。在这里我们只能画一个平面更好去理解,所以都用单个特征或两个特征举例子。

(1)线性关系

  • 单变量线性关系:
    机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第4张图片
  • 多变量线性关系
    机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第5张图片

注释:单特征与目标值的关系呈直线关系,或者两个特征与目标值呈现平面的关系,
更高维度的我们不用自己去想,记住这种关系即可

(2)非线性关系

机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第6张图片

注释:为什么会这样的关系呢?原因是什么?
如果是非线性关系,那么回归方程可以理解为:
w 1 x 1 + w 2 x 2 2 + w 3 x 3 2 w_1x_1+w_2x_2^2+w_3x_3^2 w1x1+w2x22+w3x32

2、线性回归api初步使用

2.1 线性回归API

  • sklearn.linear_model.LinearRegression()
    参数:
    • LinearRegression.coef_:回归系数

2.2 举例

机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第7张图片

2.2.1 步骤分析

  • 1.获取数据集
  • 2.数据基本处理(该案例中省略)
  • 3.特征工程(该案例中省略)
  • 4.机器学习
  • 5.模型评估(该案例中省略)

2.2.2 代码过程

  • (1)导入模块
from sklearn.linear_model import LinearRegression
  • (2)构造数据集
# 比如x为不同的时间段两门课的期中成绩,y为期末成绩
x = [[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]]
y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]
  • (3)机器学习-- 模型训练
# 实例化API
estimator = LinearRegression()
# 使用fit方法进行训练
estimator.fit(x,y)

# 打印对应的系数:
print("线性回归的系数是:\n", estimator.coef_)
# 打印预测结果是:
print("输出预测结果:\n", estimator.predict([[100, 80]])) # 100和80为特征值,也就是期中成绩

结果:
机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第8张图片

3、线性回归的损失和优化

假设房子例子,真实的数据之间存在这样的关系:

真实关系:真实房子价格 = 0.02×中心区域的距离 + 0.04×城市一氧化氮浓度 + (-0.12×自住房平均房价) + 0.254×城镇犯罪率

那么现在呢,我们随意指定一个关系(猜测)

随机指定关系:预测房子价格 = 0.25×中心区域的距离 + 0.14×城市一氧化氮浓度 + 0.42×自住房平均房价 + 0.34×城镇犯罪率

请问这样的话,会发生什么?真实结果与我们预测的结果之间是不是存在一定的误差呢?类似下面这样子:

机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第9张图片
既然存在这个误差,那我们就将这个误差给衡量出来:

3.1 损失函数

总损失定义为:
机器学习算法——线性回归的详细介绍 及 利用sklearn包实现线性回归模型_第10张图片

  • y i y_i yi

你可能感兴趣的:(机器学习)