最小二乘法

最小二乘法

【原理】

最小二乘法(又称最小平方法),它的主要思想就是选择未知参数,使得假设拟合函数的理论值与观测值之差的平方和达到最小,即通过最小化误差的平方和寻找数据的最佳函数匹配。

假设拟合函数为 , θ为未知参数,y为观测值,x为样本,m为样本数,则目标函数(loss function)为:


最小二乘法是一种优化方法,求目标函数的最优值。并且也可以用于曲线拟合,来解决回归问题。

监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面。

最小二乘法实际是寻找向量间最佳的线性组合使得其与目标向量的差最小。在向量张成的空间中找到与目标向量残差最小的向量,该向量与目标向量的差即为残差,当目标向量在向量张成的空间的投影最大时残差最小,此时残差与空间垂直。


【代数解法】

求J对各个 的偏导,令其为0,得到关于θ的多元方程组,求解即可得到θ

【矩阵解法】



注意:若 不可逆或者为防止过拟合,会在loss function 后引入正则化项,如:


simulation

 

Code: 直线拟合

#_*_ coding:utf-8 _*_
'''
date:2017/1/7
@author:xl
'''
import numpy as np
from scipy.optimize import leastsq
import matplotlib.pyplot as plt

def fit_function(para,X):
    k,b=para;
    Y=k*X+b;
    return Y;
def residual_function(para,X,Y):
    global iteration_times;
    iteration_times=iteration_times+1;
    return fit_function(para,X)-Y;

def load_data():
    Xn=np.array([1.21,2.13,4.27,3.24,5.67,4.38,0.24,5.37,6.19])
    Yn=np.array([3.23,1.45,4.35,2.23,6.12,3.45,2.17,2.07,3.28])
    return Xn,Yn

def plot_fit(k,b):
     #image shown
    plt.figure(figsize=(8,6))
    plt.scatter(Xn,Yn,color="red",label="Sample Point",s=30)
    x=np.linspace(0,10,1000)
    y=k*x+b
    plt.plot(x,y,color="orange",label="Fitting Line",linewidth=1)
    plt.legend()
    plt.show()
    
if __name__ == "__main__":
    Xn,Yn=load_data()
    iteration_times=0;
    para_init=np.random.rand(1,2)
    Result=leastsq(residual_function,para_init,args=(Xn,Yn))
    print(iteration_times)
    k,b=Result[0];
    print (k,b)
    plot_fit(k,b)

Result:



                                          

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值