机器学习:线性回归梯度下降预测波士顿房价

简介: 机器学习:线性回归梯度下降预测波士顿房价

线性回归

分类: 目标值离散

回归: 目标值连续


线性回归:寻找一种能预测的趋势


线性关系:
    -二维:直线关系
    -三维:平面

线性关系定义

image.png

参数b,偏置项,为了对于单个特征的情况更加通用

参数k,权重

image.png


image.png


线性回归定义:

线性回归通过一个或多个自变量与因变量之间进行建模的回归分析


一元线性回归:变量只有一个

多元线性回归:变量两个或以上


通用公式:


image.pngimage.pngimage.pngimage.png

image.png


其中w,x为矩阵


image.png

image.png


属性和权重的组合来预测结果


矩阵

        数组              矩阵
0维      1
1维      [1, 2, 3]
2维      [               必须是二维的
          [1, 2, 3],     满足了特定的运算要求
          [4, 5, 6]      
         ]
3维      [[
           [1, 2, 3],
           [4, 5, 6]
          ],[
           [1, 2, 3],
           [4, 5, 6]
         ]]

数组的运算:加法,乘法

numpy.ndarray


矩阵乘法:

(m行,l列) * (l行,n列) = (m行,n列)


特征值                 权重              目标值
[[1, 2, 3, 4]]   [[1], [2], [3], [4]]   一个样本一个值
(1, 4)              (4, 1)              (1,1)
(100, 4)              (4, 1)              (100,1)

数组相乘

import numpy as np
a = [
  [1, 2, 3, 4], 
  [5, 6, 7, 8], 
  [1, 4, 3, 5]
]
b = [2, 2, 2, 2]
np.multiply(a, b)
Out[5]: 
array([[ 2,  4,  6,  8],
       [10, 12, 14, 16],
       [ 2,  8,  6, 10]])

矩阵相乘

import numpy as np
a = [
  [1, 2, 3, 4], 
  [5, 6, 7, 8], 
  [1, 4, 3, 5]
]
c = [
  [2], 
  [2], 
  [2], 
  [2]
]
np.dot(a, c)
Out[9]: 
array([[20],
       [52],
       [26]])

线性回归

求函数中的参数w,使得损失函数最小


迭代的算法


损失函数(误差大小)


image.png

image.png

y i为第i个训练样本的真实值

h w ( x i ) h_w(x_i)h w (x i ) 为第i个训练赝本特征值组合预测函数

又称为最小二乘法


尽量去减少损失,算法的自我学习过程

算法      策略(损失函数) 优化
线性回归     误差平方和    正规方程
            最小二乘法    梯度下降

最小二乘法之正规方程


image.png

image.png

X XX 为特征矩阵

y yy 为目标值矩阵

缺点:当特征过于复杂,求解速度太慢

X T X^TX T 转置X − 1 X^-1X − 1 求逆 -> X ∗ ? = 单 位 矩 阵 X * ? = 单位矩阵X∗?=单位矩阵

单位矩阵

[
 [1, 0, 0], 
 [0, 1, 0], 
 [0, 0, 1]
]

最小二乘法之梯度下降

方向

image.png

a是学习速率


沿着这个函数下降的方向找,最后就能找到山谷的最低点,然后更新w值


使用:面对训练数据规模十分庞大的任务


线性回归API

普通最小二乘线性回归

sklearn.linear_model.LinearRegression

coef_ 回归系数


使用SGD最小线性模型

sklearn.linear_model.SGDRegressor

coef_ 回归系数


scikit-learn

优点:封装好,建立模型简单,预测简单

缺点:算法过程,参数都在算法内部优化


v0.18

v0.19 转换器 estimator 要求数据必须是二维数据

reshape(-1, 1)


TensorFlow

封装高低都有,自己实现线性回归


回归性能评估

均方误差(Mean Squared Error)MSE评价机制


image.png

image.png

预测值


真实值


梯度下降和正规方程区别

image.png

代码示例

# -*- coding: utf-8 -*-
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加载数据
boston = load_boston()
# 训练集,测试集拆分
X_train, X_test, y_train, y_test = train_test_split(
    boston.data, boston.target, test_size=0.25)
# 数据标准化处理
# 特征值 标准化
std_x = StandardScaler()
X_train = std_x.fit_transform(X_train)
X_test = std_x.transform(X_test)
# 目标值 标准化
std_y = StandardScaler()
y_train = std_y.fit_transform(y_train.reshape(-1, 1))
y_test = std_y.transform(y_test.reshape(-1, 1))
# 正规方程 线性回归预测
lr = LinearRegression()
lr.fit(X_train, y_train)
print(lr.coef_)
y_lr_predict = std_y.inverse_transform(lr.predict(X_test))
print(y_lr_predict)
# 梯度下降 线性回归预测
sgd = SGDRegressor()
sgd.fit(X_train, y_train)
print(sgd.coef_)
y_sgd_predict = std_y.inverse_transform(sgd.predict(X_test))
print(y_sgd_predict)
# 性能评估 均方误差
lr_mse = mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict)
sgd_mse = mean_squared_error(std_y.inverse_transform(y_test), y_sgd_predict)
print(lr_mse)  # 28.97
print(sgd_mse)  # 31.36

相关文章
|
机器学习/深度学习 人工智能 算法
探索机器学习:从线性回归到深度学习
本文将带领读者从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过代码示例,展示如何实现这些算法,并解释其背后的数学原理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和知识。让我们一起踏上这段激动人心的旅程吧!
401 3
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
339 3
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
机器学习/深度学习 算法 Python
“探秘机器学习的幕后英雄:梯度下降——如何在数据的海洋中寻找那枚失落的钥匙?”
【10月更文挑战第11天】梯度下降是机器学习和深度学习中的核心优化算法,用于最小化损失函数,找到最优参数。通过计算损失函数的梯度,算法沿着负梯度方向更新参数,逐步逼近最小值。常见的变种包括批量梯度下降、随机梯度下降和小批量梯度下降,各有优缺点。示例代码展示了如何用Python和NumPy实现简单的线性回归模型训练。掌握梯度下降有助于深入理解模型优化机制。
491 2
|
机器学习/深度学习 TensorFlow 算法框架/工具
探索机器学习:从线性回归到深度学习
在这篇文章中,我们将一起踏上一场激动人心的旅程,穿越机器学习的广阔天地。我们将从最基本的线性回归开始,逐步深入到复杂的深度学习模型。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深入的理解。让我们一起探索这个充满无限可能的世界吧!
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
机器学习/深度学习 算法
机器学习入门:梯度下降算法(上)
机器学习入门:梯度下降算法(上)
|
机器学习/深度学习 API
机器学习入门(七):线性回归原理,损失函数和正规方程
机器学习入门(七):线性回归原理,损失函数和正规方程
2405 1
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习:从线性回归到深度学习
【9月更文挑战第4天】在这篇文章中,我们将深入探讨机器学习的世界,从基础的线性回归模型开始,逐步深入到复杂的深度学习网络。我们将通过实际的代码示例,揭示这些模型背后的数学原理,以及如何在现实世界的问题中应用它们。无论你是初学者还是有经验的数据科学家,这篇文章都将为你提供新的视角和深入的理解。
|
机器学习/深度学习 数据采集 算法
探索机器学习中的线性回归
【10月更文挑战第25天】本文将深入浅出地介绍线性回归模型,一个在机器学习领域中广泛使用的预测工具。我们将从理论出发,逐步引入代码示例,展示如何利用Python和scikit-learn库实现一个简单的线性回归模型。文章不仅适合初学者理解线性回归的基础概念,同时也为有一定基础的读者提供实践指导。

热门文章

最新文章