【机器学习】线性回归(最小二乘法实现)
一、什么是线性回归
线性回归(或者叫做线性拟合)是最简单的拟合分析方法,概念很简单,先看张图:
通俗的说就是在一系列点中间画一条线,这条线能够代表所有点的特征(或者称之为,关系、发展趋势等等),,目的很明确就是对线性问题进行估计(预测),,当然线性问题也是最简单的规律。
注意:线性不一定是二维空间内的线性问题,可以是N维的
二、线性回归可以用最小二乘法来实现
原理简单的来说就是保证所有点都能到直线最近(x不变,将x带入拟合直线求得长度L1),引用知乎中的一张插图
其中红色线长度和最小,及最小二乘法所求的目的。
推到过程如下(参考原文):(可略过)
1 写出拟合方程
y=a+bxy=a+bx
2 现有样本(x1,y1),(x2,y2)...(xn,yn)(x1,y1),(x2,y2)...(xn,yn)
3 设didi为样本点到拟合线的距离,即误差
di=yi−(a+bxi)di=yi−(a+bxi)
4 设DD为差方和(为什么要取平方前面已说,防止正负相互抵消)
D=∑i=1nd2i=∑i=1n(yi−a−bxi)D=∑i=1ndi2=∑i=1n(yi−a−bxi)
5 根据一阶导数等于0,二阶大于等于0(证明略)求出未知参数
对a求一阶偏导
∂D∂a=∑i=1n2(yi−a−bxi)(−1) =−2∑i=1n(yi−a−bxi) ∂D∂a=∑i=1n2(yi−a−bxi)(−1) =−2∑i=1n(yi−a−bxi)
=−2(∑i=1nyi−∑i=1na−b∑i=1nxi) =−2(ny¯−na−nbx¯)=−2(∑i=1nyi−∑i=1na−b∑i=1nxi) =−2(ny¯−na−nbx¯)
对b求一阶偏导
∂D∂b=∑i=1n2(yi−a−bxi)(−xi) =−2∑i=1n(xiyi−axi−bx2i) ∂D∂b=∑i=1n2(yi−a−bxi)(−xi) =−2∑i=1n(xiyi−axi−bxi2)
=−2(∑i=1nxiyi−a∑i=1nxi−b∑i=1nx2i) =−2(∑i=1nxiyi−nax¯−b∑i=1nx2i)=−2(∑i=1nxiyi−a∑i=1nxi−b∑i=1nxi2) =−2(∑i=1nxiyi−nax¯−b∑i=1nxi2)
令偏导等于0得
−2(ny¯−na−nbx¯)=0−2(ny¯−na−nbx¯)=0
=>a=y¯−bx¯=>a=y¯−bx¯
−2(∑i=1nxiyi−nax¯−b∑i=1nx2i)=0−2(∑i=1nxiyi−nax¯−b∑i=1nxi2)=0并将a=y¯−bx¯a=y¯−bx¯带入化简得
=>∑i=1nxiyi−nx¯y¯+nbx¯2−b∑i=1nx2i=0=>∑i=1nxiyi−nx¯y¯+nbx¯2−b∑i=1nxi2=0
=>∑i=1nxiyi−nx¯y¯=b(∑i=1nx2i−nx¯2)=>∑i=1nxiyi−nx¯y¯=b(∑i=1nxi2−nx¯2)
=>b=∑i=1nxiyi−nx¯y¯∑i=1nx2i−nx¯2=>b=∑i=1nxiyi−nx¯y¯∑i=1nxi2−nx¯2
因为∑i=1n(xi−x¯)(yi−y¯)=∑i−1n(xiyi−x¯yi−xiy¯+x¯y¯)=∑i=1nxiyi−nx¯y¯−nx¯y¯+nx¯y¯∑i=1n(xi−x¯)(yi−y¯)=∑i−1n(xiyi−x¯yi−xiy¯+x¯y¯)=∑i=1nxiyi−nx¯y¯−nx¯y¯+nx¯y¯
∑i=1n(xi−x¯)2=∑i−1n(x2i−2x¯xi+x¯2)=∑i=1nx2i−2nx¯2+nx¯2=∑i=1nx2i−nx¯2∑i=1n(xi−x¯)2=∑i−1n(xi2−2x¯xi+x¯2)=∑i=1nxi2−2nx¯2+nx¯2=∑i=1nxi2−nx¯2
所以将其带入上式得b=∑i=1n(xi−x¯)(yi−y¯)∑i=1n(xi−x¯)2
代码实现:
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt#生成模拟数据,进行测试X = np.array(np.arange(100) ,dtype=np.float32)
Y = np.array(np.arange(100) ,dtype=np.float32)#此时X和Y其实是相等的,后面加入随机值,尽可能真实模拟实际情况
Y +=(np.random.random_sample(100) * 20)# *20指的是,上波动10
Y -=20 #下降20,,,y = x+b --> y = x - 10
print(Y[:20])#查看前20列#最小二乘计算
def residuals(p):"计算以p为参数的直线和原始数据之间的误差"k,b = preturn Y - (k*X + b)#这其实是 y=kx+b的变形,,y-kx+b = 0r = optimize.leastsq(residuals,[1,0])#引用最小二成计算,
k,b = r[0]
print(k,b)#图像展示
plt.figure(figsize=(6,6))
plt.plot(X,Y,'ro',label="point")# 拟合直线
x = np.arange(0,100,0.1)
y = x*k+b
plt.plot(x,y,"b")
plt.show()
完整代码码云超链接
【机器学习】线性回归(最小二乘法实现)相关推荐
- 机器学习--线性回归(LinearRegression)
机器学习–线性回归 基本概念 LinearRegression 拟合一个带有系数 w=(w1,...,wp)w = (w_1, ..., w_p)w=(w1,...,wp) 的线性模型,使得数据集 ...
- 机器学习线性回归算法实验报告_机器学习之简单线性回归
为了利用机器学习进行简单的线性回归,先理解机器学习和线性回归的概念,然后通过案例进行机器学习.本文主要目录如下: 一.机器学习的概念 二.线性回归的概念 三.机器学习线性回归模型 (一)导入数据集 ( ...
- 机器学习-线性回归实验
机器学习线性回归 用scikit-learn和pandas学习线性回归 1. 获取数据,定义问题 2. 整理数据 3. 准备数据 4. 训练数据 5. 模型评价 尝试用不同的线性模型进行训练 交叉验证 ...
- 线性回归-最小二乘法
1.简单线性回归 所要求得的结果是一个具体的数值,而不是一个类别的话,则该问题是回归问题.只有一个特征的回归问题,成为简单线性回归.两个变量之间存在一次方函数关系,就称它们之间存在线性关系.拟合就是把 ...
- 机器学习线性回归_机器学习-线性回归
简单说明 线性回归 最小二乘法,也叫最小二乘估计,具体概念自行查询,下面我举个比较通俗的例子 可以解决的问题 如果给你一个人(18-22岁)的体重,让你预测他(她)的身高,你会怎么做? 第一步:从身边 ...
- 机器学习线性回归学习心得_机器学习中的线性回归
机器学习线性回归学习心得 机器学习中的线性回归 (Linear Regression in Machine Learning) There are two types of supervised ma ...
- 机器学习 线性回归算法_探索机器学习算法简单线性回归
机器学习 线性回归算法 As we dive into the world of Machine Learning and Data Science, one of the easiest and f ...
- 机器学习线性回归实践,广告投放收益预测,手写梯度下降
机器学习线性回归模型,广告投放与收益预测,梯度下降法python实现 数据集介绍 代码 数据导入 特征缩放 绘制三个不同地方广告投入与收益的散点图 数据处理 添加偏置列 定义代价函数 梯度下降 初始化 ...
- 机器学习——线性回归、房价预测案例【正规方案与梯度下降】
# coding:utf-8 # 1.获取数据集 #2.数据基本处理 #2.1.数据划分 #3.特征工程--标准化 #4.机器学习(线性回归) #5.模型评估 from sklearn.dataset ...
- 前端机器学习——线性回归
前端机器学习--线性回归 前端机器学习--逻辑回归传送门 哈,现在我们再跳回机器学习的入门模型--线性回归,上一波我们使用逻辑回归完成了一个用户喜爱颜色预测的功能,那么我们这次就用线性回归完成一个将好 ...
最新文章
- 敏感性与特异性理解笔记
- 通过PowerShell查询本机IP地址
- mysql可以用视图insert_MySql-视图操作
- Vue结合Echarts
- 当前脚本文件中调用另外一个脚本
- java作用域public ,private ,protected 及不写时的区别(转)
- 全网首发:首个安卓摄像头预览加显示的项目
- atitit 面试问题表 侧重于项目和业务描述方面.v2 良好的标准:: 1.回答问题比较流畅,较少出现停顿现象,较少犹豫 2.回答有条理清晰 不杂乱 3.回答较为丰富内容 4.精神状态紧张
- 软件安装(一):VS2017安装和使用
- 圈子圈套,何谓成功?
- 游戏汉化技术内幕——第3章索引和资源的说明
- OFF文件格式_拔剑-浆糊的传说_新浪博客
- 00012__photoScissor__替换照片背景
- 【记录】Nginx开源版安装与部署
- 【jquery】收藏本站——添加到浏览器的收藏夹
- 计算机搜索没办法打汉字,电脑只能输入拼音不能输入汉字怎么办
- 子集和问题 算法_LeetCode 题解 | 78.子集
- 大众点评支付渠道网关系统的实践之路
- 安装openssh-server报Depends: openssh-client (= 1:6.6p1-2ubuntu2.8)错误
- 15.2 矩阵链乘法