[19/1]Python机器学习笔记(1)线性回归

最近是一边刷题一边学机器学习的算法,另一边还得补上前端react的学习和后端Django框架的学习,学的实在有点多。今天这里开一个笔记的坑,复习一下最近学的机器学习的算法。

线性回归

  • 最小二乘法(矩阵表达、几何意义)
  • 概率角度意义
  • 正则化{“L1”:“Lasso”,“L2”:“ridge”}

1.最小二乘法
首先将最小二乘法的数学证明复习一下。
设样本集为D = {(x1, y1) (x2, y2) … (xn, yn)}
提取出x的集合为X = (x1 x2 … xn)T(转置 )
=(x11 x12 … x1p
x21 x22 … x2p
… …
xN1 xN2 … xNp)
Y = (y1 y2 … yN)T

设f(w) = wTX
则损失函数L(w) = ∑||wTxi-yi||²(i=1到N)
这里的范式可以拆开为括号,等于∑(wTxi-yi)²
将X,Y代入,去掉求和符号。
L(w) = (wTx1-y1 wTx2-y2 … wTxN-yN)·(wTx1-y1 wTx2-y2 … wTxN-yN)T
将wT提出来,可以得到损失函数等于wTXTXw-wTXTY-YTXw+YTY
对w求偏导,可得2XTXw-2XTY=0
w=(XTX)^(-1)·XTY
在几何意义上,x1到xN构成了一个p维空间,而y一般都是在这个p维空间之外。如果y在p维空间内就不用做线性回归了,但是数据具有随机性嘛,y基本不可能在这个空间里。若求y的线性回归,则是求y到<x1,xN>的p维空间的投影。
设f(w)=wTx=xTβ
可知Y到X空间投影的距离为Y-Xβ,且垂直于X空间,可得:
(Y-Xβ)·XT=0(全为向量表示)
则求得β=(XTX)^(-1)·XTY
在几何上可以看做是把误差分散在p维上。

接下来先贴一下代码。

import numpy as np
import matplotlib.pyplot as plt

X = 2 * np.random.rand(100,1) 
y =  4 + 3 * X + np.random.randn(100,1)
X_b = np.c_[np.ones((100,1)),X] 

theta = np.linalg.inv(X_b.T.dot(X_b)).T.dot(X_b.)T.dot(y)

X_new = np.array([[0],[2]])
X_new_b = np.c_[np.ones((2,1)),X_new]
y_predict = X_new_b.dot(theta)

plt,plot(X_new,y_predict,'r-')
plt.plot(X,y,'b.')
plt,axis([0,2,0,15])
plt,show()

print(X_new)
print(y_predict)

运行一下得到图像和结果。
在这里插入图片描述
在这里插入图片描述
从数据可以看出,虽然存在着一定的误差,但是线性回归确实实现了。
接下来我们用sklearn来实现一下(这个就简单许多了)。

import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

X = 2 * np.random.rand(100,1)
y = 3 + 4 * X + np.random.randn(100,1)

lin_reg = LinearRegression()
lin_reg.fit(X,y)
print(lin_reg.intercept_,lin_reg.coef_)
X_new = np.array([[0],[2]])
print(lin_reg.predict(X_new))
plt,plot(X_new,lin_reg.predict(X_new),'r-')
plt.plot(X,y,'b.')
plt.axis([0,2,0,10])
plt.show()

运行得到结果。
在这里插入图片描述
在这里插入图片描述
算出来系数也存在一点误差,不过也是线性回归了(貌似效果还好一点)。
接下来从概率角度看看线性回归。
假设存在误差服从高斯分布,ε~N(0,δ²)
y=f(w)+ε=wTX+ε
则y|xiw~N(wTx,δ²)
可得P(y|xiw)=1/(√2π·δ)·exp^{-(y-wTx)²/2δ²}
l(w)=logP(y|xiw)=log∏P(y|xiw)=∑logP(y|xiw)=∑log1/(√2π·δ)+log exp^{-(y-wTx)²/2δ²}=∑log1/(√2π·δ)-(y-wTx)²/2δ²
根据极大似然估计,w=argmax l(w)=argmax -(y-wTx)²/2δ²=argmin (y-wTx)²
最后得出的结果与最小二乘法的损失函数一样。
故我们可以得出一个结论,最小二乘估计隐含了一个噪声服从高斯分布的假设。
写完这第一篇线性回归的笔记,可以整理下一个算法了。
下一个算法是梯度下降法,也是一种回归。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值