回归算法原理

根据测量数据来分析变量之间相互关系的方法称为回归分析法,即工程上所说的拟合问题,所得的关系式即为经验公式或拟合方程。根据变量个数及变量之间关系的不同,回归分析分为一元线性回归(直线拟合)、一元非线性回归(曲线拟合)、多元线性回归和多项式回归等。

最常见的拟合方法是最小二乘法。最小二乘法的出发点是使实际测量数据yi与拟合直线上对应的估计值的残差的平方和为最小。即

                                                                                                                                                (1.1)

对于最简单情况:一元线性拟合 y=a+bx,根据最小二乘法有

                                                                               (1.2)

为使公式(1.2)最小只需要对其求a、b偏导,然后令偏导数等于0即可就出a、b值:

同样可使通过矩阵的方式求解a、b值:

对于多元线性回归、多元非线性回归都可以转换成线性回归方式求解,而使用矩阵方式得到的结果更利于泛化。当时多元回归模型时,对应的系数矩阵(a,b1,b2,b3,.....bn)同样可使是用上面的求解表示。

算法实现(Python版)

一、一元线性回归

其中a、b通过最小二乘法求得为: 

import matplotlib.pyplot as plt
x =[1,2,3,5,6,12,11,13]
y =[4,5,8,13,12,23,20,22]
average_x=float(sum(x))//len(x)
average_y=float(sum(y))/len(y)
x_sub=map((lambda x:x-average_x),x)
y_sub=map((lambda x:x-average_y),y)
x_sub_pow2=map((lambda x:x**2),x_sub)
y_sub_pow2=map((lambda x:x**2),y_sub)
x_y=map((lambda x,y:x*y),x_sub,y_sub)
a=float(sum(x_y))/sum(x_sub_pow2)
b=average_y-a*average_x
plt.xlabel('X')
plt.ylabel('Y')
plt.plot(x, y, '*')
plt.plot([0,15],[0*a+b,15*a+b])
plt.grid()
plt.show()

二、多元回归

转换为多元线性回归通过最小二次法求系数矩阵为:

from numpy import *
from random import *
import matplotlib.pyplot as plt
def Data():x = arange(-1,1,0.02)y = ((x*x-1)**2+2)*(sin(x*3)+0.7*cos(x*1.2))xr=[];yr=[];i = 0for xx in x:yy=y[i]d=float(randint(80,120))/100i+=1xr.append(xx*d)yr.append(yy*d)  return x,y,xr,yr
def MAT(x,y,order):X=[]for i in range(order+1):X.append(x**i)X=mat(X).TY=array(y).reshape((len(y),1))return X,Y
def fig(x1,y1,x2,y2):plt.xlabel('X')plt.ylabel('Y')plt.plot(x1,y1,color='g',linestyle='-',marker='')plt.plot(x2,y2,color='m',linestyle='',marker='.')plt.grid()plt.show()
def Solve():    x,y,xr,yr = Data()X,Y = MAT(x,y,9)XT=X.transpose()B=dot(dot(linalg.inv(dot(XT,X)),XT),Y)myY=dot(X,B)fig(x,myY,xr,yr)
Solve()

回归算法(最小二乘法拟合)相关推荐

  1. 【自动驾驶】车道线拟合算法---最小二乘法拟合直线

    概览 关于自动驾驶车道线拟合算法,常用的方法有B样条.三次样条插值.Ransac.最小二乘法等等. 但是针对于高精度地图的车道线拟合,由于车道线坐标点已知,所以不需要有控制点进行约束,那么B样条.贝塞 ...

  2. sklearn 回归 算法 最小二乘法

    模型的一些通用方法: lg = LinearRegression() lg.fit(X,y) lg.coef_ lg.intercept_ lg.predict(X_new) get_params([ ...

  3. 机器学习-LogisticRegression逻辑回归算法

    logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域.例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等.以胃癌病 ...

  4. matlab 最小二乘法拟合_机器学习十大经典算法之最小二乘法

    点击上方"计算机视觉cv"即可"进入公众号" 重磅干货第一时间送达 最小二乘法概述 最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找 ...

  5. 回归算法分类,常用回归算法解析

    回归算法分类,常用回归算法解析 回归是数学建模.分类和预测中最古老但功能非常强大的工具之一.回归在工程.物理学.生物学.金融.社会科学等各个领域都有应用,是数据科学家常用的基本工具. 回归通常是机器学 ...

  6. Machine Learning | (10) 回归算法-岭回归

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  7. MATLAB之线性回归,逻辑回归,最小二乘法,梯度下降,贝叶斯,最大似然估计

    文章目录 线性回归(定义域(-∞,+∞),值域(-∞,+∞),即输入输出连续) 线性回归/最小平方误差理论 MATLAB之线性回归/最小平方误差 损失函数/代价函数求导法求线性回归 一次拟合求线性系统 ...

  8. 机器学习回归算法—岭回归及案例分析

    一.回归算法之岭回归 具有L2正则化的线性最小二乘法.岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息.降低精度为代价获 ...

  9. Lasso回归算法: 坐标轴下降法与最小角回归法小结

    前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对 ...

最新文章

  1. Scala Trait详解
  2. 安装 Ruby 和 Rails 开发环境
  3. 这年头,好文案都被它承包了!
  4. 并发编程——进程池与线程池
  5. python人脸对比相似度_python人脸对比
  6. Ubuntu16.04 休眠状态无法唤醒解决方案
  7. ruby hash方法_Ruby中带有示例的Hash.default(key = nil)方法
  8. jQuery版Ajax的使用
  9. Numpy的使用(2)
  10. 从零配置webpack(react+less+typescript+mobx)
  11. 通用 字符串工具类
  12. Vulnhub-HackInOS
  13. 校验php语法是否正确,PHP正则校验email语法详解
  14. 18650锂电池保护板接线图_锂电池保护板的基础知识及常见不良分析
  15. 五笔输入法 快速入门 二小时基本了解五笔
  16. jetbrains验证服务器,搭建个人jetbrains授权服务器
  17. 洛谷——P1348 Couple number(java实现)
  18. RBP系统管理之地区管理
  19. 成都拓嘉启远:拼多多开店有差评,原因是这样的
  20. 李宏毅2021年机器学习笔记———卷积神经网络

热门文章

  1. iOS开发 - 二维码的生成与读取
  2. 机器学习中的random_state参数
  3. ConnectionState详解
  4. 大数据领域机器学习或推荐系统数据集大全
  5. 支气管分割并3D展示效果
  6. Java开源 开源工作流
  7. CAP原理与传统的ACID
  8. Android MMKV
  9. 服务于离群点检测的无监督特征选择值-特征层次耦合模型
  10. h5引入json_H5页面内使用JSON动画