线性回归之梯度下降学习笔记
简介
为了不被时代淘汰,闲暇时间了解一下机器学习相关的知识。学会Python的语法,对numpy等常用库有了一定的了解,现在记录一下自己的学习进展,以便巩固一下学会的知识,也方便自己查阅吧。
学习进度按照github上比较火的项目 practicalAI 进行,Python的基础语法,numpy和pandas等常用库此处就不记录了,等自己搞明白了再尝试补博客吧。
新入坑学习,有写的不对的地方,欢迎指导,谢谢!
什么是线性回归?
按照百度百科的解释:
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w’x+e,e为误差服从均值为0的正态分布。
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
个人理解,简单点说就是 我们可以有多个输入值(x1,x2,x3…xn),然后它们对应了一个输出值y,y对于某一个输入值x,其关系都是可以用一条直线表示(此处假设其它输入值是不变的,就像求偏导数那样),这就是我们要处理的线性关系
什么是梯度下降?
假设有一组数据,它是线性的,生成的公式是y = 3x + random_noise
random_noise是随机生成的误差值,这样我们看的的数据集就不是一条完整的直线了
此时我们的表达式是 y = f(x) = ax+ b
但是我们并不知道真实的参数是多少,现在需要做的是假设一个函数,h(x) = θx + θ0
为了方便处理这个θ0 通常我们设定所有的输入集合中,有一个参数x0 并且x0 永远都是1,这样我们的假设函数就变成了 h(x0,x1) = θ0x0 + θ1x1
因为实际可能有很多组输入x,所以可以继续发散,θ和x的组合就可以有多组
根据输入的x,可以得到函数h(x)的预测值,h(x)和真实的y会存在误差,我们使用方差来表示这个误差,这个方差就是 损失函数 J(θ)
J ( θ 0 , θ 1 . . . θ n ) = 1 2 n ∑ i = 0 n ( h θ ( x i ) − y i ) 2 \\J(\theta_0,\theta_1...\theta_n)=\frac{1}{2n}\sum_{i=0}^n (h_\theta(x_i) -y_i)^2 J(θ0,θ1...θn)=2n1∑i=0n(h