码迷,mamicode.com
首页 > 编程语言 > 详细

机器学习算法面试—口述(5):回归

时间:2015-08-26 12:04:29      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:机器学习   线性回归   岭回归   logisic回归   梯度上升法   

这个系列是为了应对找工作面试时面试官问的算法问题,所以只是也谢算法的简要介绍,后期会陆续补充关于此

算法的常见面问题。

一、Logistic回归

 先说下logistic回归,它是根据现有数据对分类边界建立回归公式,以此进行分类。其计算代价不高,易于

实现与理解,但是容易欠拟合、分类精度不太高;

 logistic回归可以看成是一种概率估计,使用的的是sigmioid函数,

技术分享

通过训练数据训练出参数[w1, w2, ..., wn],根据训练出的参数就可以求出h(x)的值,比较其

与0.5的大小(大于则归为一个类别,小于则归于另一个类别)。现在的关键问题是如何根据

训练数据得到训练的参数?

1、使用梯度上升法

寻找某个函数的最大值,最好的方法是沿着函数的梯度方向寻找。

技术分享

刚开始赋予一样的权重,然后根据结果与已知标号算出训练误差,再更新权值,不断地迭代

直到满足某些条件就停止。但是这个地方有一点需要注意——这种方法只试用与一些很小的

数据集,因为在更新权值的时候用到了整个数据集,这样会使速度慢很多。


2、 针对上面那个问题有一个改进的方法——随机 梯度上升法,不像梯度上升法使用整个

数据集更新数据,随机梯度上升法使用的是一个当前数据点来更新权值,这样的话基本

上不涉及向量的运算,前面的h(x) 和 误差error都是一个向量,但是随机梯度上升法

中这两个都由向量转化为一个数值,速度大幅度上升。但是,由于它是选用一个随机的样

本点来更新数据,所以有时这个方法会存在局部的波动,从而影响结果的精度。


3、针对上面波动的问题,可以通过两个步骤来改进:一是每次迭代的时候改变步长a,二是

使用随机样本来更新权值。


二、线性回归

回归的目的是预测数值型的目标值,最简单的方法是根据训练数据求出目标的计算公式,线性回归也就是用一条直线来拟合数据,从而实现目标值的预测。

技术分享

目的是求出前面的回归系数

技术分享

使用最小二乘法,得到结果

技术分享


当然结果中有一个求逆的过程,需要验证逆是否存在!


三、局部线性加权回归

线性回归的一个比较严重的问题是欠拟合(因为它求的是最小均方误差的无偏估计),可以使用局部线性加权回归的方法来改善这个问题——给待预测点附近的每个点赋予一定的权重

技术分享

技术分享

求出的结果是:

技术分享


这个做法可以增加拟合的精度,但是同时会增加大量的计算,每个测试样本都要与所有的训练样本求距离。


上面的二、三都是在逆存在的情况下才可以做,但是当数据的特征比样本点还多怎么办,因为此时逆是不存在的?可以使用岭回归的方法解决这个问题,也就是将技术分享转化为技术分享,其他的和前面的做法大同小异。

当然还有个做法叫做前向逐步回归,它是通过每一步对某个权值增加或则减小一个很小的值,再重新计算w和error,若是误差更小了,则更新w。


对回归的详细介绍可以参考:http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html

 顺便吐槽下CSDN,编辑后一直看不到后面的,一行有时只能写一半的地方。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

机器学习算法面试—口述(5):回归

标签:机器学习   线性回归   岭回归   logisic回归   梯度上升法   

原文地址:http://blog.csdn.net/xwchao2014/article/details/47999365

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!