深入浅出机器学习-线性回归Linear regression

线性回归:

1.函数模型(Model):

假设有训练数据

那么为了方便我们写成矩阵的形式

2.损失函数(cost):

现在我们需要根据给定的X求解W的值,这里采用最小二乘法。

a.最小二乘法:

我们有很多的给定点,这时候我们需要找出一条线去拟合它,那么我先假设这个线的方程,然后把数据点代入假设的方程得到观测值,求使得实际值与观测值相减的平方和最小的参数。对变量求偏导联立便可求。

因此损失代价函数为:

3.算法(algorithm):

现在我们的目的就是求解出一个使得代价函数最小的W:

a.矩阵满秩可求解时(求导等于0):

b.矩阵不满秩时(梯度下降):

梯度下降算法是一种求局部最优解的方法,对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向,具体参考wikipedia。

原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;

注意:当变量之间大小相差很大时,应该先将他们做处理,使得他们的值在同一个范围,这样比较准确。

1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。

2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。

描述一下梯度减少的过程,对于我们的函数J(θ)求偏导J:

Repeat until convergence:{

下面是更新的过程,也就是θi会向着梯度最小的方向进行减少。θi表示更新之前的值,-后面的部分表示按梯度方向减少的量,α表示步长,也就是每次按照梯度减少的方向变化多少。

}

假设有数据集D时:

对损失函数求偏导如下:

4.实现

#梯度下降算法

defgradientDescent(X,y,theta,alpha,num_iters):

m =len(y)

n =len(theta)

temp = np.matrix(np.zeros((n,num_iters)))#暂存每次迭代计算的theta,转化为矩阵形式

J_history =np.zeros((num_iters,1))#记录每次迭代计算的代价值

foriinrange(num_iters):#遍历迭代次数

h = np.dot(X,theta)#计算内积,matrix可以直接乘

temp[:,i] = theta -((alpha/m)*(np.dot(np.transpose(X),h-y)))#梯度的计算

theta = temp[:,i]

J_history[i] = computerCost(X,y,theta)#调用计算代价函数

print'.',

returntheta,J_history

本文来自企鹅号 - Jenkins的技术超市媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杂七杂八

线性分类器损失函数与最优化(下)

损失函数可以量化某个具体权重集W的质量。而最优化的目标就是找到能够最小化损失函数值的W 。

1054
来自专栏Duncan's Blog

超参的搜索方法整理

网格搜索通过查找搜索范围内的所有的点,来确定最优值。它返回目标函数的最大值或损失函数的最小值。给出较大的搜索范围,以及较小的步长,网格搜索是一定可以找到全局最大...

1472
来自专栏爬树AI先生

机器学习笔记——Logistic回归算法

logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。

330
来自专栏人工智能LeadAI

多层感知机(MLP)与神经网络结构 | 深度学习笔记

为了尽量能形成系统的体系,作为最基本的入门的知识,请参考一下之前的一篇:感知机 | 神经网络 。 上篇文章让你形成对于神经网络最感性的理解。有些看不懂的直接忽...

4589
来自专栏AI研习社

手把手教你训练 RNN

在之前的文章中,我们介绍了 RNN 的基本结构并将其按时间序列展开成 Cells 循环链,称为 RNN cells。下面,我们将揭示单个 RNN Cell 的内...

2174
来自专栏AI研习社

一文详解 Word2vec 之 Skip-Gram 模型(结构篇)

这次的分享主要是对Word2Vec模型的两篇英文文档的翻译、理解和整合,这两篇英文文档都是介绍Word2Vec中的Skip-Gram模型。下一篇专栏文章将会用T...

3654
来自专栏ATYUN订阅号

【学术】如何在神经网络中选择正确的激活函数

在神经网络中,激活函数是必须选择的众多参数之一,以通过神经网络获得最优的成果和性能。 在这篇文章中,我将假设你已经理解了神经网络工作的基本原理,并将详细介绍涉及...

33710
来自专栏杨熹的专栏

什么是神经网络

本文结构: 什么是神经网络 什么是神经元 神经网络的计算和训练 代码实现 ---- 1. 什么是神经网络 神经网络就是按照一定规则将多个神经元连接起来的网络 例...

3295
来自专栏绿巨人专栏

神经网络学习笔记-04-循环神经网络算法解释

3195
来自专栏奇点大数据

卷积神经网络对图片分类-上

我们来看看在图像处理领域如何使用卷积神经网络来对图片进行分类。 1 让计算机做图片分类: 图片分类就是输入一张图片,输出该图片对应的类别(狗,猫,船,鸟),或者...

3298

扫码关注云+社区