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