概念
线性回归(Linear Regression)是一种通过属性的线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小化。
线性回归,就是能够用一个直线较为精确地描述数据之间的关系。这样当出现新的数据的时候,就能够预测出一个简单的值。线性回归中最常见的就是房价的问题。
特点
优点:结果具有很好的可解释性(w直观表达了各属性在预测中的重要性),计算熵不复杂。
缺点:对非线性数据拟合不好
适用数据类型:数值型和标称型数据
原理以及推导
单/多变量线性回归
梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。
线性回归算法python实现关键代码
/# 1.定义计算代价函数
def costFunction(X,y,theater=[[0],[0]]):
m=y.size
h=np.dot(X,theater) # 预测值
J = (1.0/(2m))((h-y).T.dot(h-y)) # 代价值
return J
/# 2.定义计算梯度下降的函数
def gradDes(X, y, theater=[[0],[0]], alpher=0.001, num_iters=15000):
m=y.size
J_histories=np.zeros(num_iters)
for i in range(num_iters):
J_histories[i]=costFunction(X,y,theater)
h=np.dot(X,theater)
deltheater = (1.0/m)*(X.T.dot(h-y)) # 计算梯度,J的偏导
theater = theater – alpher * deltheater
return theater,J_histories
正规方程
Δθ=1/m X^T (Xθ-y)=0
theta=np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Y)
只要特征变量数量小于一万,我通常使用标准方程法,而不使用梯度下降法。特征太多,删除一些特征, 或使用正则化。当 是不可逆时,称为奇异阵或退化阵,也称伪逆阵。