《人工智能基础》——线性回归算法推导
@EnzoReventon《人工智能基础》
《人工智能基础》——线性回归算法推导前面我们通过讲线性回归相信大家已经理解了回归任务是做什么的,但是还不知道具体怎么做,就是说怎么求出最优解,为了透彻理解我们必须再补充一些概念,只有有了这些概念我们后面才能推导出线性回归所需要的损失函数,进而去进一步理解最优解该如何去求。
首先,先了解一下一些概念。
中心极限定理高尔顿钉板中心极限定理(centrallimittheorem)是概率论中讨论随机变量序列部分和分布渐近于正态分布的一类定理。这组定理是数理统计学和误差分析的理论基础,指出了大量随机变量累积分布函数逐点收敛到正态分布的积累分布函数的条件。它是概率论中最重要的一类定理,有广泛的实际应用背景。在自然界与生产中,一些现象受到许多相互独立的随机因素的影响,如果每个因素所产生的影响都很微小时,总的影响可以看作是服从正态分布的。中心极限定理就是从数学上证明了这一现象。
正太分布与预测的关系正太分布也叫高斯分布。影响正态分布图形高矮胖瘦的两个参数为:方差以及期望。方差越大,图形越宽越扁,方差越小,图形就越高越瘦。
误差第i个样本实际的值yi等于预测的值yi_hat加误差εi,或者公式可以表达为如下:假定所有的样本的误差都是独立的,有上下的震荡,震荡认为是随机变量,足够多的随机变量叠加之后形成的分布,根据中心极限定理,它服从的就是正态分布,因为它是正常状态下的分布,也就是高斯分布!均值是某一个值,方差是某一个值。
方差我们先不管,均值我们总有办法让它去等于零0的,因为我们这里是有W0截距的,所有误差我们就可以认为是独立分布的,1
【人工智能算法】算法基础之线性回归
本文重点:
线性回归广义线性模型(GeneralizedLinearModel,GLM)链接函数(linkfunction)线性回归线性回归的宗旨是构建一个相对比较简单的线性模型,将输入映射为输出。对x和Y两个变量,很容易写出它们对应的线性函数:Y=mx+b,m为斜率,b为截距。该函数之所以被称为“线性函数”,是因为其函数图像画出来就是一条直线。在同一个坐标系下,曲线代表的则是非线性函数。一个线性回归模型只对应一个变量即称“单变量的”。单变量回归模型一个常见的示例就是鞋码和身高的对应关系。这个回归模型接受一个人的身高作为输入,并计算其对应的鞋码作为输出;或者是将鞋码作为输入,而输出对应的身高数据。训练这样一个模型的工作量主要是要找到能够正确反映身高和鞋码之间关系的斜率和截距值。不止一个输入的模型称为多变量的,多变量线性回归跟单变量的情况差不太多,唯一的区别在于每个输入都有一个对应的加法项。此外模型中还是有“截距”这个参数。比如:y=β1x1+β2x2+...+αy=β_1x_1+β_2x_2+...+αy=β1x1+β2x2+...+α
最小二乘法拟合训练实际上就是寻找与训练集最为匹配的系数的过程,只要有系数的值,计算线性回归的输出值就很容易。要想使系数拟合全部的训练样本是不大可能的,但训练会使得模型对训练集中样本的误差尽可能小。要使用最小二乘拟合,需要先构造两个矩阵,称为matrixX和matrixY,两个矩阵的行数都等于训练集的样本数。矩阵matrixX保存训练集的所有输入,因为矩阵中每个输入都附带一个常数1,便于计算截距,因此其列数等于输入个数加1。矩阵matrixY保存的则是训练集中的所有理想输出,对线性回归问题而言,输出一次只有一个,因此matrixY的列数总是1。利用这两个矩阵,就可以拟合得到较好的线性回归系数了。这里我们要用到一种被称为“矩阵分解”的线性代数方法
最小二乘法拟合示例先构建一个用最小二乘拟合法将摄氏温度转换为华氏温度的线性回归模型。首先有以下训练数据:
0->32100->212上述数据表明0摄氏度等于32华氏度,100摄氏度等于212华氏度,我们要计算出能够产生上述预期输出的线性模型对应的斜率和截距。我们还必须要构造matrixX和matrixY。首先构造matrixX,如前所述,实际上就是在输入后面附加一个代表截距单位的常数1,构造结果如下:
[0.0,1.0][100.0,1.0]然后构造由理想输出组成的matrixY:
[32.0][212.0]下一步就是用QR分解来分解矩阵,可以选用语言自带的线性代数库或者GPU版的线性代数库。BLAS就是一个很常用的线性代数库,有个CUDAGPUs版本的BLAS被称为CUBLAS。在执行矩阵运算方面,GPU比CPU快多了。我们根据matrixY,使用QR分解来分解matrixX,返回值就是与matrixX相乘可以得到结果matrixY的系数矩阵。尽管数据有两行,但系数却只有一组,这些系数对每行数据都可以得到最符合预期的结果。系数的运算结果是以下矩阵:
[1.8][32.0]上述矩阵给出了斜率系数和截距,其中截距对应的是每个输入后面跟的常数1,如前所述即乘以常数1,因此将摄氏度转换为华氏度的线性模型如下:
f=(c*1.8)+32安斯库姆四重奏线性回归要求输入、输出之间的关系是线性的,但从数据点中强行拟合出一条直线是存在问题的。安斯库姆四重奏就是一个指出了线性回归问题所在的特殊数据集.4个不同的数据集,4幅图中数据点相互之间的区别很明显,但这4个数据集都拟合出了同样的线性回归系数,经过数据点的直线即线性回归的结果。而这4个数据集的线性回归结果相同则说明线性回归的机制存在一定的缺陷。左上角的那幅图将数据点间的关系拟合得相当好,但右上角的数据集并非线性的,下面两幅图则表现了模型中离群值的影响。所谓“离群值”,指的是一小部分与其他大部分数据点完全脱离了的数据点。
广义线性模型广义线性模型的基础是上面讨论的线性回归模型,并使用链接函数进一步抽象广义线性模型的输出。广义线性模型可以使用的链接函数有很多种,并且由于广义线性模型的训练算法数学基础是微积分,因此链接函数必须要有导数。广义线性模型的公式和线性回归很像,最大的不同在于广义线性模型多了一个链接函数。本质上来讲,广义线性模型就是将线性回归的返回值传递给链接函数,链接函数即g(),输入为x,输出为y,β的值构成系数,ε的值指示截距,就跟线性回归没有两样。唯一多出来的就是“链接函数”。可选的不同链接函数有很多,最常见的一种就是逻辑函数。逻辑函数有时也被称作sigmoid函数逻辑函数能够放缩线性回归的输出,并且有几个特别重要的特性:
g(-Infinity)=0;g(Infinity)=1;g(0)=1/2;g(-x)=1-g(x);若x>y,则g(x)>g(y),即单调递增。逻辑函数的输出绝不会比0小,也绝不会比1大,因此0通常被映射为广义线性模型要预测的一个分类,1则映射为另一个分类。当x为0时,函数值为0.5,恰为(0,1)中点。Sigmoid函数也是单调的;所谓“单调”,指的是函数随自变量的增大,要么递增,要么递减;单调函数的变化方向不会反转。