设为首页 加入收藏

TOP

Spark0.9分布式运行MLlib的线性回归算法
2014-11-24 01:09:15 来源: 作者: 【 】 浏览:2
Tags:Spark0.9 分布式 运行 MLlib 线性 回归 算法

1 什么是线性回归


线性回归是另一个传统的有监督机器学习算法。在这个问题中,每个实体与一个实数值的标签 (而不是一个像在二元分类的0,1标签),和我们想要预测标签尽可能给出数值代表实体特征。MLlib支持线性回归以及L2(ridge)和L1(lasso)正则化参数调整。Mllib还有一个回归算法,原始梯度下降(在下面描述),和上面描述的有相同的参数二元分类算法。


可用线性回归算法:


LinearRegressionWithSGD


RidgeRegressionWithSGD


LassoWithSGD。


注意:


(1)因为是线性回归,所以学习到的函数为线性函数,即直线函数;


(2)因为是单变量,因此只有一个x;


我们能够给出单变量线性回归的模型:



我们常称x为feature,h(x)为hypothesis;


2. Gradient Descent(梯度下降)


但是又一个问题引出了,虽然给定一个函数,我们能够根据cost function知道这个函数拟合的好不好,但是毕竟函数有这么多,总不可能一个一个试吧?


因此我们引出了梯度下降:能够找出cost function函数的最小值;


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


当然解决问题的方法有很多,梯度下降只是其中一个,还有一种方法叫Normal Equation;


方法:


(1)先确定向下一步的步伐大小,我们称为Learning rate;


(2)任意给定一个初始值:;


(3)确定一个向下的方向,并向下走预先规定的步伐,并更新;


(4)当下降的高度小于某个定义的值,则停止下降;


算法:



特点:


(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;


(2)越接近最小值时,下降速度越慢;


3.线性回归代码


下面的示例演示如何加载训练数据,把它解析成 LabeledPoint的RDD对象(弹性分布式数据集)。这个例子然后使用LinearRegressionWithSGD构建一个简单的线性模型来预测标签值。最后我们计算均方误差对拟合优度进行评估。


执行结果如下:


相关阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2013年阿里算法笔试题解题报告 下一篇Python中的异常处理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: