【机器学习算法】之线性回归分析

一.算法介绍

1.模型:y=xw
线性回归建立的模型非常简单,就是简单的线性组合。
2. 策略
使用平方损失函数:
这里写图片描述
3.算法
直接改写成矩阵相乘形式,即可得到闭式解。
这里写图片描述
上述是最基本的线性回归的用法,但是在实际应用中,从最基本的线性回归中还可以引申出多种形式。

局部加权线性回归:
参见博客 http://blog.csdn.net/silence1214/article/details/7764137
局部加权线性回归主要是用于解决线性回归模型太简单这个问题,往往实际需要拟合的模型不仅仅是线性模型这么简单。但是这种算法容易产生过拟合,而且计算复杂度较高。每次需要预测一个值的时候都需要遍历整个数据集来训练得到一个模型,这点比较像KNN。局部加权线性回归在损失函数里面加了一个权重矩阵,如下:

岭回归:
同样是修改损失函数,改成了如下形式:
这里写图片描述
以前上课的时候还以为这样做的目的是为了防止过拟合。但是想了一下,线性回归这么简单的模型,哪里会存在过拟合啊!实际上之所以引入 是为了预防异常数据点的情况。 平方损失函数对异常数据点还是很敏感的,当X不是列满秩时,或者某些列之间的线性相关性比较大时, 的行列式接近于0,这时候求解得到的模型就很不稳定了。此时 惩罚项就会起作用。
在实际应用中,数据的形式是多种多样的,数据的预处理还是很重要的。

二.python程序实现

def standRegres(xArr,yArr):
    xMat = mat(xArr); yMat = mat(yArr).T
    xTx = xMat.T*xMat
    if linalg.det(xTx) == 0.0:
        print "This matrix is singular, cannot do inverse"
        return
    ws = xTx.I * (xMat.T*yMat)
    return ws

代码实现也很简单

你可能感兴趣的:(算法练习,机器学习)