博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linear Regression(一)——
阅读量:6481 次
发布时间:2019-06-23

本文共 953 字,大约阅读时间需要 3 分钟。

Linear Regression(一)——

定义

回归的定义

在平面上存在这些点我希望能用一条直线尽可能经过它们。

enter description here

于是我们画了下面的一条直线

enter description here
这样的过程就叫做回归。

这个过程中我们的目的其实就是寻找输入变量(自变量)和输出变量的关系(因变量)

线性回归的定义

线性回归:上图中我们进行的回归就是线性回归

线性回归实际上是假设输入变量x和输出变量y存在着这样的关系1113598-20170226122112054-1002595027.png
在刚刚的情况下,横坐标为1113598-20170226122112288-2046151264.png,那么公式上图可以表示为1113598-20170226122112507-2007813057.png,w实际上是这样1113598-20170226122112710-643716671.png的一个矩阵,而x实际上是1113598-20170226122112913-1464066703.png的这样一个矩阵,二者相乘即1113598-20170226122113132-1513182383.png

线性回归模型

损失函数

我们已经知道了线性回归的定义,那么如何寻找这样的一条直线呢?什么样的直线是最好的?

enter description here
这张图我们可以明显的看出蓝色的直线是最优的,我们判断的依据是什么?就是直线到各个点的距离
因此我们引出了损失函数
损失函数
1113598-20170226122113632-696241346.png各样本的输出,1113598-20170226122113851-1139692793.png各变量权重,1113598-20170226122114304-496363334.png输入变量

1113598-20170226122114507-378685220.png

我们的目的即最小化损失函数,使得到的直线到各点的距离最小

1113598-20170226122114726-9986607.png

损失函数最小化

最简便求得损失函数最小值的方法当然是求导,因此我们以一元线性模型进行说明

存在如下样本训练集T={(3,3),(4,3),(1,1)},求出它的回归直线
我们可以得到以下公式

1113598-20170226122115023-669972621.png

我们的目标是1113598-20170226122115273-757376283.png的最小化

1113598-20170226122115601-2098286820.png分别求a,b的偏导得
1113598-20170226122115851-988242301.png
1113598-20170226122116054-552732319.png
另两个偏导等于0可以求得a,b
*a=0.71428571,b=0.42857143
使用matplotlib画出图像
enter description here

使用最小二乘法求得最优解

上文对于一元线性回归方程使用基础的数学方法可得出结果,当求解多元线性回归方程,为了计算的简便,我们通常会将数据转化为矩阵,通过最小二乘法求出数据的结果。

我们已经知道损失函数的矩阵形式表示为
1113598-20170226122116710-1826228792.png
那么我们使用矩阵的求导方法即可得出最优的W
已经给出了推导,对于没有梯子的可以参照该博文

通过最小二乘法我们得出最优的w为

1113598-20170226122116945-1691109272.png

# X,Y以上文举例分别为[3,2],[3,1]的矩阵import numpy as npX = [[3,1],[4,1],[1,1]]Y= [[3],[3],[1]X = np.mat(X)Y = np.mat(Y)w = (X.T*X).I*X.T*Y

enter description here
下载.png

转载于:https://www.cnblogs.com/lynsyklate/p/6444052.html

你可能感兴趣的文章
在 Linux 上安装使用 VirtualBox 的命令行管理界面 VBoxManage
查看>>
《树莓派实战秘籍》——第 2 章 为树莓派做Linux黑客 2.1 技巧21建立交叉编译器工具链...
查看>>
Cookies 的跨域脚本攻击 - Github 迁移域名的安全详解
查看>>
《精通 ASP.NET MVC 5》----1.7 获取示例代码
查看>>
Go程序设计语言1.4 GIF动画
查看>>
《代码整洁之道》—第1章1.4节思想流派
查看>>
SpringBoot之集成SpringDataRedis
查看>>
图解css6:核心技术与案例实战. 1.3 渐进增强
查看>>
基于DataIDE数据集成实现香港ECS上的MySQL数据同步到数加MaxCompute
查看>>
视觉中国:基于容器云的同城双活微服务架构上云实践
查看>>
Windows下安装Hadoop
查看>>
linux启动过程
查看>>
一天学会PostgreSQL应用开发与管理 - 1 如何搭建一套学习、开发PostgreSQL的环境
查看>>
对AI毫无了解?本文带你轻松了解AI
查看>>
bcache / 如何使用bcache构建LVM,软RAID / 如何优化bcache
查看>>
★Kali信息收集~ 1.Google Hacking + Github Hacking
查看>>
Nodejs测试:从0到90(实践篇)
查看>>
MySQL · 答疑解惑 · mysqldump tips 两则
查看>>
SPF参考
查看>>
Javascript继承机制的设计思想
查看>>