如何运用最小二乘法和梯度下降法处理多重共线性数据集的线性回归问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1364个文字,预计阅读时间需要6分钟。
网上对线性回归的讲解已有很多,本文不再对此概念进行重复。作者在听吴恩达ML课程时,偶然产生灵感,做了两个小实验。第一个实验是采用最小二乘法对数据进行拟合。
网上对于线性回归的讲解已经很多,这里不再对此概念进行重复,本博客是作者在听吴恩达ML课程时候偶然突发想法,做了两个小实验,第一个实验是采用最小二乘法对数据进行拟合, 第二个实验是采用梯度下降方法对数据集进行线性拟合,下面上代码:
最小二乘法:
#!/usr/bin/env python#encoding:UTF-8
import numpy as np
import matplotlib.pyplot as plt
N=10
X=np.linspace(-3, 3, N)
Y=(X+10.0)/2.0
Z=-5.0+X+3.0*Y
P=np.ones((N, 1))
P=np.c_[P, X, Y]
t=np.linalg.pinv(P)
w=np.dot(t, Z)
print "拟合后的权重:"
print w
A=np.dot(P, w)-Z
print "拟合后的LOSTFUNCTION值:"
print np.dot(A, A)/2
由LOSTFUNCTION值可知所得权重可以使得模型得到较少的损失。
由代码中给出的拟合权重和代码运行后得出的拟合权重可以很清楚的发现并不一致,由此很容易得出该数据集对于线性模型存在多重共线性。
本文共计1364个文字,预计阅读时间需要6分钟。
网上对线性回归的讲解已有很多,本文不再对此概念进行重复。作者在听吴恩达ML课程时,偶然产生灵感,做了两个小实验。第一个实验是采用最小二乘法对数据进行拟合。
网上对于线性回归的讲解已经很多,这里不再对此概念进行重复,本博客是作者在听吴恩达ML课程时候偶然突发想法,做了两个小实验,第一个实验是采用最小二乘法对数据进行拟合, 第二个实验是采用梯度下降方法对数据集进行线性拟合,下面上代码:
最小二乘法:
#!/usr/bin/env python#encoding:UTF-8
import numpy as np
import matplotlib.pyplot as plt
N=10
X=np.linspace(-3, 3, N)
Y=(X+10.0)/2.0
Z=-5.0+X+3.0*Y
P=np.ones((N, 1))
P=np.c_[P, X, Y]
t=np.linalg.pinv(P)
w=np.dot(t, Z)
print "拟合后的权重:"
print w
A=np.dot(P, w)-Z
print "拟合后的LOSTFUNCTION值:"
print np.dot(A, A)/2
由LOSTFUNCTION值可知所得权重可以使得模型得到较少的损失。
由代码中给出的拟合权重和代码运行后得出的拟合权重可以很清楚的发现并不一致,由此很容易得出该数据集对于线性模型存在多重共线性。

