CS229笔记一监督学习,线性回归,LMS算法,正态方程,概率解释和局部加权线性回归

Posted evenelina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS229笔记一监督学习,线性回归,LMS算法,正态方程,概率解释和局部加权线性回归相关的知识,希望对你有一定的参考价值。

监督学习

对于一个房价预测系统,给出房间的面积和价格,以面积和价格作坐标轴,绘出各个点。
技术分享图片

技术分享图片

定义符号:

\\(x_{(i)}\\)表示一个输入特征\\(x\\)

\\(y_{(i)}\\)表示一个输出目标\\(y\\)

\\((x_{(i)},y_{(i)})\\)表示一个训练样本。

\\(\\left\\{(x_{(i)},y_{(i)});i=1,\\dots,m\\right\\}\\)代表m个样本,也称为训练集。

上标\\((i)\\)代表样本在训练集中的索引。

\\(\\mathcal{X}\\)代表输入值的空间,\\(\\mathcal{Y}\\)代表输出值的空间。\\(\\mathcal{X}=\\mathcal{Y}=\\mathbb{R}\\)

监督学习的目标,就是给定一个训练集,学习一个函数\\(h\\):\\(\\mathcal{X} \\mapsto \\mathcal{Y}\\)\\(h(x)\\)是对于y的对应值的一个“好”的预测。函数\\(h\\)被称为hypothesis函数(假设函数)

技术分享图片

如果我们预测的目标值是连续的,那么,这种问题被称为回归问题,如果\\(y\\)只是一个离散的小数字,那么,这种问题叫做分类问题。

线性回归

假设房价不仅与面积有关,还与卧室数有关,如下:

技术分享图片

这时候的\\(x\\)是一个2维向量\\(\\in \\mathbb{R^2}\\)。其中\\(x_1^{(i)}\\)表示第\\(i\\)个样本的房子面积,\\(x_2^{(i)}\\)表示第\\(i\\)个样本的房子卧室数。

现在我们决定将y近似为x的线性函数,公式如下:

\\[h_{\\theta}(x)=\\theta_0+\\theta_1x_1+\\theta_2x_2\\]

\\(\\theta_i\\)是线性函数空间从\\(\\mathcal{X}\\)\\(\\mathcal{Y}\\)映射的参数(权重)。把公式简化:

\\[h(x)=\\sum_{i=0}^n \\theta_ix_i=\\theta^Tx\\]

其中\\(x_0\\)=1,因此\\(x_0\\theta_0=\\theta_0\\)是截距。\\(\\theta\\)\\(x\\)都是向量,\\(n\\)是输入值的数量(不包括\\(x_0\\)

为了学习参数\\(\\theta\\),我们定义损失函数

\\[J(\\theta)=\\frac{1}{2}\\sum_{i=1}^m (h_{\\theta}(x^{(i)})-y^{(i)})^2\\]

上式产生一个普通最小二乘法回归模型。

1 LMS(least mean squares)算法

为了选择一个\\(\\theta\\)来使\\(J(\\theta)\\)最小化,先随机对\\(\\theta\\)设置随机值,然后使用一个搜索算法来不断更新\\(\\theta\\)以使\\(\\theta\\)收敛到希望达到的最小化\\(J(\\theta)\\)的值。这里用梯度下降算法,首先初始化\\(\\theta\\),然后不断执行更新:

\\[\\theta_j:=\\theta_j-\\alpha\\frac{\\partial}{\\partial \\theta_j}J(\\theta)\\]

\\(\\alpha\\)是学习率(learning rate)。上式同时对所有的\\(j = (0,\\dots,n)\\)值执行。

首先求一个样本\\((x,y)\\)的偏导数,后面再求总和:

\\[\\begin{align} \\frac{\\partial}{\\partial \\theta_j}J(\\theta)&=\\frac{\\partial}{\\partial \\theta_j}\\frac{1}{2}(h_{\\theta}(x)-y)^2\\\\&=2*\\frac{1}{2}(h_{\\theta}(x)-y)*\\frac{\\partial}{\\partial \\theta_j}(h_{\\theta}(x)-y)\\\\&=(h_{\\theta}(x)-y)*\\frac{\\partial}{\\partial \\theta_j}\\left(\\sum_{i=0}^n \\theta_ix_i-y\\right)\\\\&=(h_{\\theta}(x)-y)x_j\\\\\\end{align}\\]

对于单个样本,更新规则(LMS更新规则或Widrow-Hoff学习规则):
\\[\\theta_j:=\\theta_j+\\alpha\\left(y^{(i)}-h_{\\theta}(x^{(i)})\\right)x_j^{(i)}\\]

上式中更新规则与\\((y_{(i)}-h_{\\theta(x_{(i)})})\\)误差项成正比,如果预测结果与输出值相差小,则\\(\\theta\\)变化小;反之,则变化大。

批量梯度下降:

对于所有的\\(\\theta\\)值重复计算直至收敛\\(\\{\\)

\\[\\theta_j:=\\theta_j+\\alpha \\begin{matrix} \\sum_{i=1}^m (y_{(i)}-h_{\\theta}(x^{(i)}))x_j^{(i)} \\end{matrix}\\]

\\(\\}\\)

技术分享图片

梯度下载的过程

计算出\\(\\theta_1\\)\\(\\theta_2\\)后,代入\\(h_{\\theta}(x)\\)中作为\\(x\\)的函数,绘制的图如下:

技术分享图片

房屋面积房价图

随机梯度下降(增量梯度下降):

\\[\\begin{align} Loop \\{ \\\\& for\\;i=1\\;to\\;m \\{ \\\\&& \\theta_j:=\\theta_j+\\alpha(y_{(i)}-h_{\\theta}(x^{(i)}))x_j^{(i)}&(for every j) \\\\&\\} \\\\\\} \\\\\\end{align}\\]

每次只对一个样本进行更新。

随机梯度下降通常比批量梯度下降要好,因为批量梯度下降是每次更新整个训练集,十分耗时。

2 正态方程

梯度下降是最小化\\(J\\)的方法之一,除此之外,正态方程也能最小化\\(J\\)。通过对\\(\\theta_j\\)求导,然后让它等于0,以使得\\(J\\)最小化。

2.1矩阵导数

函数\\(f\\):\\(\\mathbb{R}^{m\\times n} \\mapsto \\mathbb{R}\\)映射,表示从\\((m,n)\\)矩阵到一个实数的函数。我们定义函数\\(f\\)\\(A\\)求导:

\\[\\nabla_Af(A) = \\begin{bmatrix} \\frac{\\partial f}{\\partial A_{11}} & \\dots & \\frac{\\partial f}{\\partial A_{1n}} \\\\vdots & \\ddots & \\vdots \\\\frac{\\partial f}{\\partial A_{m1}} & \\dots & \\frac{\\partial f}{\\partial A_{mn}} \\\\end{bmatrix}\\]

\\(\\nabla_Af(A)\\)是一个\\((m,n)\\)的矩阵,每个元素是\\(\\frac{\\partial f}{\\partial A_{ij}}\\),比如,如果
\\(A=\\begin{bmatrix} A_{11}&A_{12}\\\\ A_{21}&A_{22}\\\\ \\end{bmatrix}\\)是一个\\(2\\times 2\\)矩阵。函数$f:\\mathbb{R}^{2 \\times 2} \\mapsto \\mathbb{R} $:

\\[f(A) = \\frac{3}{2}A_{11}+5A_{12}^2+A_{21}A_{22}\\]

因此,函数\\(f\\)\\(A\\)求导:

\\[\\nabla_Af(A) = \\begin{bmatrix} \\frac{3}{2}&10A_{12}\\A_{22}&A_{21}\\\\end{bmatrix}\\]

迹运算

对于一个\\(n\\times n\\)的矩阵求迹,公式:

\\[trA=\\sum_{i=1}^n A_{ii}\\]

如果\\(a\\)是一个实数(例如一个\\(1\\times 1\\)的矩阵),那么\\(tr\\,a = a\\)

对于两个矩阵\\(A\\)\\(B\\),迹运算有:

\\[trAB=trBA\\]

多个矩阵:

\\[trABC=trCAB=trBCA\\]

\\[trABCD=trDABC=trCDAB=trBCDA\\]

对于两个相等方阵\\(A\\)\\(B\\),还有一个实数\\(A\\),有公式:

\\[trA=trA^T\\]

\\[tr(A+B)=trA+trB\\]

\\[traA=atrA\\]

矩阵导数公式:

\\[\\nabla_A trAB = B^T\\qquad \\qquad \\qquad \\qquad(1)\\]

\\[\\nabla_{A^T} f(A) = (\\nabla_Af(A))^T \\qquad \\qquad \\qquad(2)\\]

\\[\\nabla_A trABA^TC = CAB + C^TAB^T \\qquad \\qquad \\qquad(3)\\]

\\[\\nabla_A |A| = |A|(A^{-1})^T \\qquad \\qquad \\qquad(4)\\]

\\(A\\in \\mathbb{R}^{n\\times m}\\)\\(B\\in \\mathbb{R}^{m\\times n}\\)求证公式(1)\\(\\nabla_A trAB = B^T\\)

\\[A=\\begin{bmatrix} A_{11} & \\dots & A_{1m}\\\\vdots & \\ddots & \\vdots\\A_{n1} & \\dots & A_{nm} \\end{bmatrix}\\]

\\[B=\\begin{bmatrix} B_{11} & \\dots & B_{1n}\\\\vdots & \\ddots & \\vdots\\B_{m1} & \\dots & B_{mn} \\end{bmatrix}\\]

\\[\\begin{align} \\nabla_A trAB&= \\nabla_A tr\\left(\\begin{bmatrix} A_{11} & \\dots & A_{1m}\\\\vdots & \\ddots & \\vdots\\A_{n1} & \\dots & A_{nm} \\end{bmatrix} \\times \\begin{bmatrix} B_{11} & \\dots & B_{1n}\\\\vdots & \\ddots & \\vdots\\B_{m1} & \\dots & B_{mn} \\end{bmatrix}\\right)\\&=\\nabla_A tr\\left(\\begin{bmatrix} A_{11}B_{11}+A{12}B_{21}+\\dots+A_{1m}B_{m1}&\\dots&A_{11}B_{1k}+A_{12}B_{2k}+\\dots+A_{1m}B_{mk}&\\dots&A_{11}B_{1n}+A{12}B_{2n}+\\dots+A_{1m}B_{mn}\\\\vdots&\\vdots&\\vdots&\\vdots&\\vdots\\A_{k1}B_{11}+A{k2}B_{21}+\\dots+A_{km}B_{m1}&\\dots&A_{k1}B_{1k}+A_{k2}B_{2k}+\\dots+A_{km}B_{mk}&\\dots&A_{k1}B_{1n}+A{k2}B_{2n}+\\dots+A_{km}B_{mn}\\\\vdots&\\vdots&\\vdots&\\vdots&\\vdots\\A_{n1}B_{11}+A{n2}B_{21}+\\dots+A_{nm}B_{m1}&\\dots&A_{n1}B_{1k}+A_{n2}B_{2k}+\\dots+A_{nm}B_{mk}&\\dots&A_{n1}B_{1n}+A{n2}B_{2n}+\\dots+A_{nm}B_{mn} \\end{bmatrix}\\right)\\&=\\nabla_A \\left(A_{11}B_{11}+A{12}B_{21}+\\dots+A_{1m}B_{m1}+A_{k1}B_{1k}+A_{k2}B_{2k}+\\dots+A_{km}B_{mk}+A_{n1}B_{1n}+A{n2}B_{2n}+\\dots+A_{nm}B_{mn}\\right)\\&=\\begin{bmatrix} B_{11}&\\dots&b_{m1}\\\\vdots&\\ddots&\\vdots\\B_{1n}&\\dots&B_{mn} \\end{bmatrix}\\&=B^T \\\\\\end{align}\\]

方程(4)可以利用矩阵逆的伴随表示来得到。

2.2 最小二乘回归

获取一个训练集,定义决策矩阵\\(X\\)\\((m\\times n)\\)(如果包含截距项,则是\\((m\\times n+1)\\)):
\\[X=\\begin{bmatrix} —(x^{(1)})^T—\\—(x^{(2)})^T—\\—\\vdots—\\—(x^{(m)})^T— \\end{bmatrix}\\]

\\(\\overrightarrow y\\)作为一个m维向量,包含训练集的所有目标值。

\\[\\overrightarrow y=\\begin{bmatrix} —(y^{(1)})—\\—(y^{(2)})—\\—\\vdots—\\—(y^{(m)})— \\end{bmatrix}\\]

因为\\(h_{\\theta}(x^{(i)})=(x^{(i)})^T\\theta\\)\\(\\theta\\)是一个\\((n\\times 1)\\)向量,所以有:

\\[\\begin{align} X\\theta-\\overrightarrow y &= \\begin{bmatrix} —(x^{(1)})^T\\theta—\\—(x^{(2)})^T\\theta—\\—\\vdots—\\—(x^{(m)})^T\\theta— \\end{bmatrix} - \\begin{bmatrix} —(y^{(1)})—\\—(y^{(2)})—\\—\\vdots—\\—(y^{(m)})— \\end{bmatrix}\\&=\\begin{bmatrix} h_{\\theta}(x^{(1)})-(y^{(1)})\\h_{\\theta}(x^{(2)})-(y^{(2)})\\\\vdots\\h_{\\theta}(x^{(m)})-y^{(m)}) \\end{bmatrix} \\\\\\end{align}\\]

对于一个向量\\(z\\),我们有\\(z^Tz=\\begin{matrix} \\sum_i z_i^2 \\end{matrix}\\):

\\[\\begin{align} \\frac{1}{2}(X\\theta-\\overrightarrow y)^T(X\\theta-\\overrightarrow y)&=\\frac{1}{2} \\sum_{i=1}^m (h_{\\theta}(x^{(i)})-y^{(i)})^2 \\\\&=J(\\theta) \\\\\\end{align}\\]

在对\\(\\theta\\)求导前,首先根据方程(2)和方程(3),得:

\\[\\nabla_{A^T}trABA^TC = B^TA^TC^T + BA^TC\\qquad \\qquad \\qquad \\qquad(5)\\]

因此:

\\[\\begin{align} \\nabla_{\\theta}J(\\theta) &=\\nabla_{\\theta}\\frac{1}{2}(X\\theta-\\overrightarrow y)^T(X\\theta-\\overrightarrow y)\\&=\\frac{1}{2}\\nabla_{\\theta}(\\theta^TX^TX\\theta-\\theta^TX^T\\overrightarrow y-\\overrightarrow y^TX\\theta+\\overrightarrow y^T\\overrightarrow y)\\&=\\frac{1}{2}\\nabla_{\\theta}tr(\\theta^TX^TX\\theta-\\theta^TX^T\\overrightarrow y-\\overrightarrow y^TX\\theta+\\overrightarrow y^T\\overrightarrow y)\\&=\\frac{1}{2}\\nabla_{\\theta}(tr\\theta^TX^TX\\theta-2tr\\overrightarrow y^TX\\theta)\\&=\\frac{1}{2}(X^TX\\theta+X^TX\\theta-2X^T\\overrightarrow y)\\&=X^TX\\theta-X^T\\overrightarrow y \\end{align}\\]

在第三步,因为\\(\\theta=(n\\times 1),X=(m\\times n)\\),所以\\(\\theta^TX^TX\\theta-\\theta^TX^T\\overrightarrow y-\\overrightarrow y^TX\\theta+\\overrightarrow y^T\\overrightarrow y\\)计算后得出是一个\\((1\\times 1)\\)矩阵,即一个实数,根据\\(tr\\,a = a\\)可推导出第2步和第3步。第5步用方程(5),通过使\\(A^T=\\theta,B=B^T=X^TX和C=I还有方程(1)\\)得出。要使\\(J\\)最小化,则令\\(\\nabla_{\\theta}J(\\theta)\\)为0,得出:

\\[X^TX\\theta=X^T\\overrightarrow y\\]

所以,要使\\(J\\)最小化,则需要令:

\\[\\theta=(X^TX)^{-1}X^T\\overrightarrow y\\]

3 概率解释

为什么在处理一个回归问题的时候可以用线性回归,特别是为什么可以用最小二乘法来计算损失函数\\(J\\)

现在,让我们通过下面方程来假设输出变量和输入之间的关系:

\\[y^{(i)}=\\theta^Tx^{(i)}+\\epsilon^{(i)}\\]

在这里\\(\\epsilon^{(i)}\\)是误差项,代表在建模时没有考虑到的因素,或者是随机噪声。根据高斯分布(Gaussian distribution),现在假设\\(\\epsilon^{(i)}\\)是独立同分布(IID,independently and indentically distributed),其中使高斯分布的均值\\(\\mu\\)为0,方差为\\(\\sigma^2\\),即\\(\\epsilon^{(i)}\\in \\mathcal{N}(0,\\sigma^2)\\),因此,\\(\\epsilon^{(i)}\\)的密度是:

(\\(\\epsilon^{(i)}\\)之所以假设为高斯分布是因为根据中心极限定理,大量相互独立的变量之和是符合正态分布的。)

\\[p(\\epsilon^{(i)})=\\frac{1}{\\sqrt{2\\pi}\\sigma}exp\\left(-\\frac{(\\epsilon^{(i)})^2}{2\\sigma^2}\\right)\\]

即给定\\(x^{(i)}\\)和参数\\(\\theta\\)时,函数值应服从高斯分布:

\\[p(y^{(i)}|x^{(i)};\\theta)=\\frac{1}{\\sqrt{2\\pi}\\sigma}exp\\left(-\\frac{(y^{(i)}-\\theta^Tx^{(i)})^2}{2\\sigma^2}\\right)\\]

\\(p(y^{(i)}|x^{(i)};\\theta)\\)是给定\\(\\theta\\)\\(x^{(i)}\\)\\(y^{(i)}\\)的分布,其中\\(\\theta\\)不属于条件,不是一个随机变量。
\\(y^{(i)}\\)的分布表示:\\(y^{(i)}|x^{(i)};\\theta \\sim \\mathcal{N}(\\theta^Tx^{(i)},\\sigma^2)\\)

上面是一个样本的分布方程,现在给写一个\\(X\\)\\(\\theta\\),得到预测值\\(\\overrightarrow y\\)的函数,其中\\(\\theta\\)是定值,该方程也称为似然函数:

\\[L(\\theta)=L(\\theta;X,\\overrightarrow y)=p(\\overrightarrow y|X;\\theta)\\]

注意,上式是基于\\(\\epsilon^{(i)}\\)的独立性假设,方程也可以表示:

\\[\\begin{align}L(\\theta) &=\\coprod_{i=1}^m p(y^{(i)}|x^{(i)};\\theta)\\&=\\coprod_{i=1}^m \\frac{1}{\\sqrt{2\\pi}\\sigma}exp\\big(-\\frac{(y^{(i)}-\\theta^Tx^{(i)})^2}{2\\sigma^2}\\big)\\\\end{align}\\]

现在,为了找出参数\\(\\theta\\)的最优解,通过极大似然来选择出使\\(L(\\theta)\\)最大化的\\(\\theta\\)值。首先,用对数似然函数代替似然函数

\\[\\begin{align}\\ell(\\theta) &=logL(\\theta)\\&=log\\coprod_{i=1}^m \\frac{1}{\\sqrt{2\\pi}\\sigma}exp\\big(-\\frac{(y^{(i)}-\\theta^Tx^{(i)})^2}{2\\sigma^2}\\big)\\&=\\sum_{i=1}^m log\\frac{1}{\\sqrt{2\\pi}\\sigma}exp\\big(-\\frac{(y^{(i)}-\\theta^Tx^{(i)})^2}{2\\sigma^2}\\big)\\&=mlog\\frac{1}{\\sqrt{2\\pi}\\sigma}-\\frac{1}{\\sigma^2}*\\frac{1}{2}\\sum_{i=1}^m (y^{(i)}-\\theta^Tx^{(i)})^2 \\end{align}\\]

要极大化\\(\\ell(\\theta)\\),则需要极小化

\\[\\frac{1}{2}\\sum_{i=1}^m (y^{(i)}-\\theta^Tx^{(i)})^2\\]

这就是最小二乘损失函数\\(J(\\theta)\\)

4 局部加权线性回归

对于一个从\\(x\\in \\mathbb{R}\\)预测\\(y\\)的问题,下面左图中,使用了\\(y=\\theta_0+\\theta_1x\\)来匹配数据集。然而实际上,图中的数据并不是一条直线。

现在如果添加多一个特征\\(x^2\\),即\\(y=\\theta_0+\\theta_1x+\\theta_2x^2\\),结果能够更好的匹配数据,然而,如果添加过多的特征,如右图所示,虽然通过了数据集的每一个点,然而这并不是十分好的结果。

对于左图所示的情况,函数明显没有很好地描述数据,这样的情况称为欠拟合;而右图的情况被称为过拟合

技术分享图片

因此,特征的选择对于确保学习算法的良好性能很有帮助。

局部加权线性回归(LWR)能够使特性的选择对于算法来说不那么重要。

一般的线性回归算法,为了获取预测值,需要:

1,找到使\\(\\sum_{i=1} (y^{(i)}-\\theta^Tx^{(i)})^2\\)最小化的\\(\\theta\\)

2, 输出\\(\\theta^Tx\\)

局部加权线性回归算法:

1,找到使\\(\\sum_{i=1} w^{(i)}(y^{(i)}-\\theta^Tx^{(i)})^2\\)最小化的\\(\\theta\\)

2, 输出\\(\\theta^Tx\\)

其中\\(w^{(i)}\\)是一个非负的权重值。

\\[w^{(i)}=exp\\big(-\\frac{(x^{(i)}-x)^2}{2\\tau^2}\\big)\\]

\\(\\tau\\)参数控制了权值变化的速率,

\\(|x^{(i)}-x|\\)很小时,\\(w^{(i)}\\)接近1,如果\\(|x^{(i)}-x|\\)很大,\\(w^{(i)}\\)接近0。其中\\(x\\)是我们需要评估的点。因此,选择\\(\\theta\\)时对于离\\(x\\)近的训练样本有高的权重,而对于与训练样本距离大的有小的权重。这样就达到了局部加权的目的。

局部加权线性回归属于非参数学习算法,而之前的线性回归算法属于参数学习算法。

线性回归算法有固定的参数\\(\\theta\\),一旦确定了\\(\\theta\\)值后,我们不再需要保留训练数据,以对新的特征值进行预测。

而局部加权线性回归算法需要保留整个训练集以便计算\\(w^{(i)}\\)








以上是关于CS229笔记一监督学习,线性回归,LMS算法,正态方程,概率解释和局部加权线性回归的主要内容,如果未能解决你的问题,请参考以下文章

CS229 笔记03

吴恩达机器学习学习笔记——2.1单变量线性回归算法

机器学习基础概念笔记

13.线性单元和梯度下降 用python求解LMS算法 聚合theta值(出现nan值,已解决)

资源 | 源自斯坦福CS229,机器学习备忘录在集结

ng机器学习视频笔记——线性回归代价函数梯度下降基础