当前位置:   article > 正文

python回归算法_机器学习算法之回归详解

python回归算法

导语

回归:从一组数据出发,确定某些变量之间的定量关系式;即建立数学模型并估计未知参数。

回归的目的是预测数值型的目标值,它的目标是接受连续数据,寻找最适合数据的方程,并能够对特定值进行预测。这个方程称为回归方程,而求回归方程显然就是求该方程的回归系数,求这些回归系数的过程就是回归。

我们先来看看回归跟分类的区别:(引用 - 走刀口的回答 - 知乎

https://www.zhihu.com/question/21329754/answer/17901883)

分类和回归的区别在于输出变量的类型。

定量输出称为回归,或者说是连续变量预测;

定性输出称为分类,或者说是离散变量预测。

举个例子:

预测明天的气温是多少度,这是一个回归任务;

预测明天是阴、晴还是雨,就是一个分类任务。

普通线性回归

我们做线性回归是为了得到一个最优回归系数向量w使得当我们给定一个x能够通过y=xw预测y的值。假定输入数据存放在矩阵 X 中,而回归系数存在在向量 w 中。那么对于给定的数据X1,预测结果将会通过Y1=XT1w给出。

那么怎样的w才是最优的呢?在标准线性回归中我们需要找到是误差最小的w, 即预测的y值与真实的y值之间的差值,为了避免简单累加造成的正负差值相互抵消,这里采用了平方误差:

平方误差

用矩阵可表示为:(y-Xw)T(y-Xw),)因为要求函数的极小值,对w求导可得:

对w求导

使其等于0,便可求出W的最优解:

求出w

上述求w最优解的方法也叫做最小二乘法。

需要注意的是,上述公式中包含(XTX)-1,也就是需要对矩阵求逆,因此这个方程只有在逆矩阵存在的时候有用,所以我们写代码时必须需要事先确定矩阵是否可逆。

此外,我们知道线性回归的方程的一般形式为:y=wx+b;即存在一定的偏移量b,于是,我们可以将回归系数和特征向量均增加一个维度,将函数的偏移值b也算作回归系数的一部分,占据回归系数向量中的一个维度,比如w=(w1,w2,...,wN,b)。相应地,将每条数据特征向量的第一个维度设置为1.0,即所有特征向量的第一个维度值均为1.0,这样,最后得到的回归函数形式为y=w[0]+w[1]x1+...+w[N]xN.

Python代码实现

# 普通线性回归

def standRegress(xArr, yArr):

# 用mat函数转换为矩阵之后可以才进行一些线性代数的操作

xMat = mat(xArr); yMat = mat(yArr).T

# XtX

xTx = xMat.T * xMat

# 判断矩阵是否可逆

if linalg.det(xTx) == 0:

print("This matrix is singular, cannot do inverse")

return

# 根据公式计算w

w_hat = xTx.I * (xMat.T * yMat)

return w_hat

线性回归拟合

相关系数(Correlation Coefficient)计算:

几乎任意数据集都可以用上述方法建立模型,怎么判断这些模型的好坏呢?为了计算预测值序列和真实值序列的匹配程度,可以计算出这两个序列的相关系数。

计算公式:

相关系数

公式就是用X

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/843974
推荐阅读
相关标签
  

闽ICP备14008679号