线性模型,(多元)线性回归及python代码实现

ref. 《机器学习》周志华 P53

一、线性模型

线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即


线性模型形式简单,易于建模。w直观表达了各个属性在预测任务中的重要性,因此线性模型有很好的可解释性(comprehensibility)。

二、(多元)线性回归

1. 问题的提出

给定数据集D如下:

则(多元)线性回归试图学得,使得,其中={w1;w2;……;wd;b}。

为进行向量化计算,将数据表示为X,每行对应一个样本,如下所示。在每个样本最后增加元素“1”,是为了用于拟合f()里的偏置b。


则现在要拟合的函数为f(X)=

2. 问题求解

① 目标

确定的关键在于如何衡量f(x)与y之间的差别,通常使用均方误差作为性能度量,使其最小化作为目标,即,


这种基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。

② XTX是满秩矩阵的情况:

 同样为了向量化计算,需要把y也表示为向量的形式,。则问题求解的目标如(3.9)所示。


当XTX为满秩矩阵或正定矩阵时,式(3.10)推导出式(3.11)略。

式(3.11)是我们求解参数w,b的关键公式。

③ XTX不是满秩矩阵的情况:

在现实任务中的往往遇到X的属性个数大于样本个数的情况,即XTX不是满秩矩阵,此时用上述方法会得到多个,且它们都能使均方误差最小化,选择哪一个解作为输出,将由学习算法的归纳偏好决定。常见的做法是引入正则化项,可参考岭回归、LASSO、Elastic Net等(我上篇博文有简单介绍)。

三、我的笔记

我最近的工作中,领导给出的任务是拟合一个包含7个样本,每个样本7个属性的数据集,其实就是一个7个变量的7个方程组,要求方程组没有b。接到这个任务,立刻就想到了是用线性回归问题。在机器学习算法中,对待拟合的函数普遍都加了偏置b,在我这个要求不设置b的任务中,将“二、(多元)线性回归”的求解问题稍改变一下即可,如下:

X无需在最后一列增加元素“1”(因为无需拟合b),仍然使用式(3.11)进行的求解,这个中不再含有b。

四、python代码

1. “二、(多元)线性回归”部分涉及的代码

# 线性回归 ref.《机器学习》.周志华.P55
def fitLM(X,Y):
    samplesize = np.size(X, 0)
    # 1. 样本最后一个元素置1
    X_b = np.ones([1, samplesize]).tolist()
    X = np.transpose(X).tolist()
    X.extend(X_b)
    X = np.transpose(X)

    # 2. 根据公式(3.11)求w*
    XT=np.transpose(X)
    equ1=np.linalg.inv(np.dot(XT,X))
    equ2=np.dot(XT,Y)
    w=np.dot(equ1,equ2)
    return w

2.  “三、我的笔记”部分涉及的代码

def fitLM(X,Y):
    samplesize = np.size(X, 0)
    
    # 2. 根据公式(3.11)求w*
    XT=np.transpose(X)
    equ1=np.linalg.inv(np.dot(XT,X))
    equ2=np.dot(XT,Y)
    w=np.dot(equ1,equ2)
    return w

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值