深入浅出机器学习-线性回归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 条评论
登录 后参与评论

相关文章

如何在Python中为长短期记忆网络扩展数据

用于序列预测问题的数据可能需要在训练神经网络(如长短期记忆递归神经网络)时进行缩放。

2097
来自专栏PPV课数据科学社区

机器学习常见的算法面试题总结

摘要:包含机器学习常见算法公式、原理和优缺点比较,简介清洗,适合作为面试和考试前速查和记忆使用。 朴素贝叶斯 P(A∩B)=P(A)*P(B|A)=P(B)*P...

5155
来自专栏人工智能

机器学习之——梯度下降算法

机器学习算法大都遵从同样的套路:设定需要学习的参数,通过最优化算法来最小(大)化学习目标,从而得到一组最好的待学习参数。例如,线性回归z=ax+by中,参数就是...

19410
来自专栏绿巨人专栏

神经网络学习笔记 - 激活函数的作用、定义和微分证明

33413
来自专栏机器学习算法与Python学习

解决决策树的过拟合

参看书籍:Machine Learning(Tom Mitchell) 之前我们已经比较详细的介绍啦决策树的相关知识,如ID3(Machine Learning...

3248
来自专栏灯塔大数据

干货|机器学习:Python实现聚类算法之K-Means

1.简介 K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。 K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最...

4716
来自专栏张俊红

机器学习优化算法(一)

我们在前面说过机器学习中的损失函数,其实机器学习中的每一个模型都是在求损失函数的最优解,即让损失达到最小值/极小值,求解方式有多种,本篇讲讲其中两个基本的优化方...

713
来自专栏瓜大三哥

K-近邻算法(KNN)概述

最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类。但是怎么可能所有测试对象都会找...

2138
来自专栏张俊红

支持向量机详解

总第81篇 (本文框架) 01|概念及原理: 支持向量机是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。 说的通俗一点就是就是在特征空...

2963
来自专栏有趣的Python

12- OpenCV+TensorFlow 入门人工智能图像处理-磨皮美白

2224

扫码关注云+社区