手撕一元线性回归

很多人对人工智能模型不了解

现在我们对一些简单的模型纯手工实现一下

理解了人工智能原理,后面的学习就会更容易了

一元线性回归

人工智能里,最容易让人理解的应该就是 回归, 这个用xls都可以做

开篇必须说几个概念,早就懂和不愿意看的直接跳过

  • 回归
    • 回归,指研究一组随机变量(Y1 ,Y2 ,…,Yi)和另一组(X1,X2,…,Xk)变量之间关系的统计分析方法,又称多重回归分析
    • 通常Y1,Y2,…,Yi是因变量,X1、X2,…,Xk是自变量
  • 一元线性回归
    • 回归分析只涉及到两个变量的,称一元回归分析
    • 当Y=f(X)的形式是一个直线方程时,称为一元线性回归

线性方程

我们初中时候就学过 线性方程 (linear equation)

线性方程有一个 斜截式 (slope intercept form)

y = kx + b

比如我们让k=2,b=1

线性方程

代码实现

这个非常简单,一行代码就可以实现

Python

def linear(x):
    return x * 2 + 1

javascript

function linear(x) {
   
   
    return x * 2 + 1;
}

简单来说,y=2x+1就是训练后的模型

我们的 人工智能 做的,就是找出这个 21

其实可以理解为y=kx+b的方程,已知y和x求k和b

回归分析

回归分析是通过规定因变量和自变量来确定变量之间的因果关系,建立回归模型

我们拿百度百科里面的数据来做一下分析

https://baike.baidu.com/item/%E4%B8%80%E5%85%83%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E6%96%B9%E7%A8%8B

这里给了广告费和销售额的一组数据

广告费x(万元) 销售额y(百万元)
300 300
400 350
400 490
550 500
720 600
850 610
900 700
950 660

画散点图展示

散点图

其实这个是有一个趋势的,我们可以用一条线表示出来,这就是回归

回归

确定方程

我们中学时候学过,两点确定一条直线

如果我们只有两个数据可以确定一条直线

广告费x(万元) 销售额y(百万元)
300 300
950 660

两点确定一条直线

最小平方法

选择多,烦恼多,那么多点,怎么确定直线呢?

那么就看每个点到这个直线的距离的和最小,那么说明误差最小

实际的y减去预测的模型算出来的y称为 离差

离差

回归模型

yi=α+βxi+εiy_i = \alpha + \beta x_i + \varepsilon_iyi=α+βxi+εi

我们可以先不管εi\varepsilon_iεi(之后会详细介绍)

只看yi=α+βxiy_i = \alpha + \beta x_iyi=α+βxi

就是刚才的y=kx+b就是换了个名字

那么,多个已知x和y求α和β我们一步一步看

我们要方差和最小,方差和就是下面的公式

∑i=1n(yi−y^i)2\sum\limits_{i=1}^n(y_i - \hat{y}_i)^2i=1n(yiy^i)2

∑就是总共n个数字的组合,加在一起,还不懂就看看高中数学书,找“西格玛”

因为

yi^=α+βxi\hat{y_i} = \alpha + \beta x_iyi^=α+βxi

所以我们最后得到方程式

∑i=1n[yi−(α+βxi)]2\sum\limits_{i=1}^n[y_i - (\alpha + \beta x_i)]^2i=1n[yi(α+βxi)]2

我们求这个方程的最小值

利用 微分法 得到两个正规方程

{ ∑yi=nα+β∑xi∑xiyi=α∑xi+β∑xi2\begin{cases} \sum{y_i} = n\alpha + \beta \sum{x_i} \\ \sum{x_i y_i} = \alpha \sum{x_i} + \beta \

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值