1.  线性回归

在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。

回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

2.最小二乘法

最小二乘法的本质是最小化系数矩阵所张成的向量空间到观测向量的欧式误差距离,即选一条直线,它使得每个点到直线的距离之和最小。

最小二乘法的一种常见的描述是残差满足正态分布的最大似然估计。

假设,即,那么用最大似然估计推导:

得到的就是最小二乘法。

3.梯度下降

从选定的初始点,沿着梯度以步长下降,可以求得局部最小值。

只有一个训练样本时:

对m个训练实例:

运用这个规则直到收敛,就是批梯度下降算法。

随机梯度下降的思想是根据每个单独的训练样本来更新权值。

4.正规方程组

转自斯坦福大学机器学习公开课。

 1  # coding:utf-8
 2 import matplotlib.pyplot as plt
 3 import numpy as np
 4
 5 def dataN(length):
 6     x = np.zeros(shape = (length,2))
 7     y = np.zeros(shape = length)
 8     for i in range(0,length):
 9       x[i][0] = 1
10       x[i][1] = i
11       y[i] = (i + 25) + np.random.uniform(0,1) *10
12     return x,y
13
14 def alphA(x,y): #选取前20次迭代cost最小的alpha
15     c=float("inf")
16     for k in range(1,1000):
17             a=1.0/k**3
18             f=gD(x,y,20,a)[1][-1]
19             if f>c:
20                 break
21             c=f
22             alpha=a
23     return alpha
24
25 def gD(x,y,iter,alpha):#梯度下降
26     theta=np.ones(2)
27     cost=[]
28     for i in range(iter):
29         hypothesis = np.dot(x,theta)
30         loss = hypothesis - y
31         cost.append(np.sum(loss ** 2))
32         gradient = np.dot(x.transpose(),loss)
33         theta = theta -alpha * gradient
34     return theta,cost
35
36 def sgD(x,y,iter,alpha):#随机梯度下降
37     theta=np.ones(2)
38     cost=[]
39
40     for i in range(iter):
41         l=0
42         for j in range(0,len(y)):
43             loss=theta[1]*x[j][1]+theta[0]-y[j]
44             theta[1]=theta[1]-alpha*x[j][1]*loss
45             theta[0]=theta[0]-alpha*loss
46             l=l+loss**2
47         cost.append(l)
48     return theta,cost
49
50 def eQ(x,y):#正则方程组
51    x=np.matrix(x)
52    y=np.matrix(y).T
53    a=np.dot(x.T,x).I
54    b=np.dot(a,x.T)
55    c=np.dot(b,y)
56    return c
57
58 def exP(x,y):#一元线性回归拟合方程
59     xmean=np.mean(x)
60     ymean=np.mean(y)
61     b=np.sum([(x1-xmean)*(y1-ymean)for x1,y1 in zip(x,y)])/np.sum([(x1-xmean)**2 for x1 in x])
62     a=ymean-b*xmean
63     return a,b
64
65 length=100
66 iter=50000
67 x,y=dataN(length)
68 #theta,cost=sgD(x,y,iter,alphA(x,y))  #[ 30.24623439   0.99707473]
69 theta,cost=gD(x,y,iter,alphA(x,y))  #[ 30.17228028   0.99806093]
70 print theta
71 print eQ(x,y) #[[ 30.20320097][  0.99759475]]
72 print exP(x[:,1],y) #与正则方程组结果一致
73
74 plt.figure(1)
75 plt.plot(range(iter),cost)
76 plt.figure(2)
77 plt.plot(x[:,1],y,'b.')
78 plt.plot([0,length],[theta[0],theta[0]+length*theta[1]])
79 plt.show()

转载于:https://www.cnblogs.com/qw12/p/5638970.html

线性回归的梯度下降和正规方程组求解相关推荐

  1. 线性规划、梯度下降、正规方程组——斯坦福ML公开课笔记1-2

    转载请注明链接:http://blog.csdn.net/xinzhangyanxiang/article/details/9101621 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了 ...

  2. 梯度下降算法和正规方程组学习笔记

    梯度下降算法学习笔记 内容来自于斯坦福大学<机器学习与数据挖掘公开课>. 介于算法中用到了许多线性代数的知识.所以我感觉有必要先对线性代数的基础知识做一个回顾和梳理. 1基础概念和记号 线 ...

  3. 线性回归(梯度下降)2021-04-16

    线性回归(+gradient desent) 线性回归 基本思想 1,线性回归 1.1线性回归概念 1.2 回归参数的求解方法 1.21 最小二乘法(least square method 2.211 ...

  4. 机器学习01-定义、线性回归、梯度下降

    目录 一.定义 What is Machine Learning 二.建模 Model Representation 三.一元线性回归 Linear Regression with One Varia ...

  5. 机器学习第4天:线性回归及梯度下降

    文章目录 一.简单线性回归(即一元线性回归) 二.代价函数 数学表达式: 代码实现: 实例说明 三.梯度下降 数学表达式: 具体方法 代码实现: 代价随迭代次数的变化 一.简单线性回归(即一元线性回归 ...

  6. 【机器学习基础】线性回归和梯度下降的初学者教程

    作者 | Lily Chen 编译 | VK 来源 | Towards Data Science 假设我们有一个虚拟的数据集,一对变量,一个母亲和她女儿的身高: 考虑到另一位母亲的身高为63,我们如何 ...

  7. 线性回归实现——梯度下降

    文章目录 线性回归实现 实验数据: 实现结果: 算法流程: 代码实现: 线性回归实现 y=ax+by = ax + by=ax+b x,y 是向量,a,b是标量 梯度下降法: a=a−α∂cost∂a ...

  8. 梯度下降的线性回归用python_一元线性回归和梯度下降的python代码实现

    一元线性回归和梯度下降的python代码实现 2020-08-05 23:49 阅读数 9 import numpy as np import matplotlib.pyplot as plt imp ...

  9. 为什么回归直线过平均值点_线性回归和梯度下降的初学者教程

    假设有一个虚拟的数据集包含多对变量,即每位母亲和她女儿的身高: 通过这个数据集,我们如何预测另一位身高为63的母亲的女儿的身高? 方法是用线性回归. 首先找到最佳拟合线,然后用这条直线做预测. 线性回 ...

最新文章

  1. Sniffer pro 找不到网卡的解决方法
  2. 零 目录-机器学习老师板书-斯坦福吴恩达教授
  3. BZOJ——2134: 单选错位
  4. 【C++】常用拷贝算法和替换算法
  5. 使用keycloak自定义SPI接入外部用户登录
  6. iOS | Swift图片剪切圆角
  7. Bouncing Ball
  8. MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程
  9. EF + EFCore 学习
  10. 笨鸟的平凡之路-KETTLE的安装
  11. 数据库为什么需要锁机制?有哪些锁机制?
  12. AI一分钟 | 大福利!谷歌2018年将公开内部机器学习培训课程;医疗影像领域今年最大融资出炉!图玛深维获软银中国2亿人民币投资
  13. 前端工程师 后段工程师_如何像工程师一样思考
  14. 从1.0到2.0:移动互联网入口战升级
  15. 【java笔记】Map,HashMap,Collections
  16. Alientek I.MX6UL Linux-第九章 I.MX6U的启动方式
  17. 聚焦企业安全核心问题 WOT技术峰会再扬风帆
  18. 项目经理应知道的项目管理的7个特点
  19. ASUS ZDNR-12D PIKE 6480安装centos5.6
  20. 浏览器读取超级狗(superdog)实现身份认证(前端)

热门文章

  1. 怎么创建c语言数组的格式,c – 如何创建类类型数组?
  2. Nginx 502 Bad Gateway 自动重启脚本
  3. 迭代器模式(Iterator)解析例子
  4. Ubuntu虚拟机及Petalinux开发平台安装
  5. jquery相对定位(包含find的使用 find相当于后代选择器)$(选择器1,选择器2)
  6. 命令行关闭特定服务和调整服务启动方式
  7. .NET_.NET 部署问题
  8. 《WCF技术内幕》翻译5:第1部分_第1章_蓝月亮:WCF介绍和本章小结
  9. 7-14 求整数段和
  10. OpenResty实现LNMP的缓存前移(到达nginx前端层面)