多元线性回归

作者: 抹茶不加茶 | 来源:发表于2020-03-02 21:44 被阅读0次

原理

相较于简单线性回归,多元线性回归仅仅是特征数从一变成了多,其他的基本上没有变化

  • 注意行为样本,列为特征


    X矩阵的排列示意
  • 基于多元线性回归,对某一个样本X(i),如图


    多元线性回归

    相较于简单线性回归,其横坐标仍然是X(i)但从单个数值变成了一行数值,也就是一个1*n(n为特征数)的矩阵

  • 我们注意到方程和简单线性回归一样,有一个常数,所以我们不妨添加一行X(i=0)


    1
  • 改变之后,我们注意到,这时y_hat与x和seata的关系 关系
  • 目标不变,仍为使预测值与数据值相差更小,这时我们使用矩阵的表示形式


    目标

    这时我们可以推导出seata的表达式,推导过程这里省略

  • seata的这个表达式被称为正规方程解
  • 注意,假设最初X数据为mn的矩阵,这时Xb为mn+1,seata为n+1*1的矩阵(其实一般而言是不区分Xb和X的)

利用正规方程进行实现

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
boston=datasets.load_boston()
#波士顿房产数据
x=boston.data
y=boston.target
x=x[y<np.max(y)]
y=y[y<np.max(y)]
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)
#实际上这里size默认是0.2
#下面开始训练线性回归模型

X_b = np.hstack([np.ones((len(x_train), 1)), x_train])
theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)

intercept_ = theta[0]#返回截距
coef = theta[1:]#返回theta向量

        
xtest_b=np.hstack([np.ones((len(x_test), 1)), x_test]) 
y_predict=xtest_b.dot(theta)
mse_test=np.sum((y_predict-y_test)**2)/len(y_test)
rsquared=mse_test/np.var(y_test)

其中可也得到截距等参数如图


结果

使用sklearn进行多元线性回归

同样的例子,完全使用sklearn进行编写,这时候我们要注意到,它并没有采用正规化方程的方法,但由于我们是不用知道其底层究竟是如何封装的,所以目前尽管使用就是

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
boston=datasets.load_boston()
#波士顿房产数据
x=boston.data
y=boston.target
x=x[y<np.max(y)]
y=y[y<np.max(y)]
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)
#实际上这里size默认是0.2
#下面开始训练线性回归模型
from sklearn.linear_model import LinearRegression
Lin_reg=LinearRegression()
Lin_reg.fit(x_train,y_train)
Lin_reg.score(x_test,y_test)
得到结果

总结

其实在学习的课程里面,关于多元线性回归还有一些对于可解释性等的思考与介绍,有利于我们对于现实模型的理解,这里我不是很想赘述,因为可能我们学习ml,更多用到的可能是后面复杂一些的算法,另外可解释性也是很容易理解的,在实际上手数据之后,相必我们拿到预测结果自己也能有所分析!!!所以内容暂且写到这里吧,以后还有想要增加的内容,我也会自行增加!

相关文章

  • 机器学习系列(十三)——多元线性回归及knn做回归

    多元线性回归理论 相比于样本只有一个特征值的简单线性回归,多元线性回归往往更能反映研究对象的真实情况。多元线性回归...

  • 回归分析 | R语言 -- 多元线性回归

    多元线性回归 多元线性回归 是 简单线性回归[https://www.jianshu.com/p/f8b2a320...

  • Matlab一元/多元回归(后续会有更新)

    一元线性回归&一元非线性回归 多元回归/逐步回归 多元回归 先画散点图,看有没有线性性质,再决定能不能用多元线性回...

  • 各类统计方法R语言实现(六)

    今天是各类统计方法R语言实现的第六期,我们主要介绍多元线性回归、回归诊断。 多元线性回归 多元线性回归指的是用多个...

  • 2020-02-14

    线性回归:线性回归分为一元线性回归和多元线性回归,一元线性回归用一条直线描述数据之间的关系,多元回归是用一条曲线描...

  • Linear Regression

    二元线性回归 多元线性回归 其中用到

  • 多元线性回归(multiple regression model

    之前学习了单一线性回归,这次主要研究多元线性回归,以及提高多元数据的模型精度的一些方法 1、什么是多元线性回归,我...

  • 多元线性回归2021.3.18

    1.多元线性回归(变量之间相互独立) 当预测变量不止一个时,简单线性回归就变成了多元线性回归,相当于求解多元方程。...

  • Machine-Learning-Day-3

    多元线性回归 Day 3的任务是多元线性回归. 开始任务~ Step1 Data Preprocessing 首先...

  • Linear Regression

    在线性回归模型中,我们分为单元线性回归和多元线性回归(Multivariate Linear Regression...

网友评论

    本文标题:多元线性回归

    本文链接:https://www.haomeiwen.com/subject/mrvbkhtx.html