首页 » 软件开发 » 「机器学习通俗讲解」线性模型(线性求解模型因变量预测)

「机器学习通俗讲解」线性模型(线性求解模型因变量预测)

少女玫瑰心 2024-07-24 03:10:13 0

扫一扫用手机浏览

文章目录 [+]

面积价格5080w6085w7069w8090w90105w100108w110110w120115w

现在想根据这些已有的数据预测一下95平米的房子应该多少钱。

我们假设房屋价格是 y ,房屋面积是 x ,价格和房屋面积存在某种关系 w, 用数学的方式可以表示成

「机器学习通俗讲解」线性模型(线性求解模型因变量预测) 软件开发
(图片来自网络侵删)

/(/hat{y}(w, x) = w x/)

其中 x 是房屋面积,/(/hat{y}/) 是房屋价格, w 是 x 的系数,你可以理解成房屋单价。
我们把这些数据放到坐标系中,横轴是房屋面积,纵轴是房屋价格。
如下图:

这个函数放到坐标系中就是一条通过坐标原点的直线,取不同的x时,得到不同的直线,图中蓝色线。

用已有的数据点去找出一条适合的蓝色线,然后用这条线 /(/hat{y}(w, x) = w x/) 去预测未知面积的房屋价格。

但是,我们发现直线 /(/hat{y}(w, x) = w x/) 的 w 取何值,得到的直线都不能很好的拟合实际的价格走向, 用这样的直线预测的结果偏差很大。

根据我们高中的数学几何知识,我们可以给函数 /(/hat{y}(w, x) = w x/) 加一个截距,变成 /(/hat{y}(w, x) = w_0 + w_1 x/) 。
加了截距的函数就能更好的去拟合我们的价格走势。

现在我们已经找到这样一条直线 /(/hat{y}(w, x) = w_0 + w_1 x/) 可以很好的去预测未知面积的房屋价格了。

下一步就是我们如何根据已有的数据(x 和 y的值), 算出这个方程中 w0 和 w1 的值, 当我们算出来 w0 和 w1 后,我们就可以把未知的x点(房屋面积) 代入这个方程,然后预测出其价格(其实就是算出y值)。

根据我们的高中那点浅薄的数学知识,要想算 w0 和 w1 的值,我们会用已知的数据列一个方程组,然后求解方程组:

/(80 = w_0 + 50 w_1/)

/(85 = w_0 + 60 w_1/)

/(69 = w_0 + 70 w_1/)

/(90 = w_0 + 80 w_1/)

(这里省略n多行)

可是,我们发现这个方程组是无解的,因为不存在任何一条直线能穿过所有点的。

so,退而求其次,我们找一条尽量穿过多的点、在所有点中心通过、最大可能拟合现有数据点的趋势,就像上图中绿色的那条线。

可是我这高中毕业的完全不知道怎么求出这条直线啊? 没关系,我们用计算机帮我们找,计算机求解这条直线的过程就是 机器学习 , 当然计算机也不是天生就会的,其也是使用了一些高大上的数学方法去算的,这个后面我们再讲。

注解

什么是机器学习? 机器学习就是由一些计算机算法帮我找出预测方程的系数w的值,然后再利用这个方程去计算未知的数据特征(x值)所对应的结果(y值)。

注解

所谓的学习,就是利用现有数据(术语:训练数据)找出合适的 W ; 所谓的预测,就是用学习阶段得到的 W ,去计算未知数据(术语:预测数据)的对应的值。

好了,到这里,我们利用 计算机 帮我找出了这样一条直线(实际是 W 的值), 我们把未知面积x的值代入方程 /(/hat{y}(w, x) = w_0 + w_1 x/) 就得到了预测的值。

多维特征¶

后来我们发现结果还是不太理想,因为影响房屋价格的不仅仅是面积,还可能有`房屋朝向` 、楼层 、小区地理位置 等等,很多其他的因素。
我们这个方程只考虑了一个因素(也就是只有一个特征),预测的并不准确,那我们怎么办呢?

注解

这里的x,数学上称作 因变量,数据上称作 特征,都是一回事。

上面我们是把 房屋面积 这个因素(特征) 看作坐标轴中的一个维度,当多个特征的时候, 我们增加坐标系的维度就可以了,每一个特征我们当作一个维度(轴)来处理,这样对于多维特征的数据,我们的方程就变成:

/[/hat{y}(w, x) = w_0 + w_1 x_1 + ... + w_p x_p/]

注解

回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。
如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

Ok, 这个东东就是我们所说的线性模型!


一般线性模型(the General Linear Model, GLM)¶

接上文,我们知道了线性模型的方程,目标值y是输入变量x的线性组合,本文继续讲这个线性方程式如何求解的。

/(x = (x_1,...,x_p)/) 是因变量,也就是我们样本数据的特征;

/(w = (w_1,...,w_p)/) 是x的系数,也就是我们要通过训练得到的值;

/(/hat{y}/) 是样本的预测值。

/[/hat{y}(w, x) = w_0 + w_1 x_1 + ... + w_p x_p/]

上面公式中 /(w_0/) 从几何上讲就是我们所说的截距,但是在用线性代数求解时不是很方便,所以我们稍微变化一下。
我们把 /(w_0/) 看成是 /(w_0 x 1/) , 这个乘数 1 并不会影响方程本身的结果, 进一步我们把这个 1 也看做是样本数据的一个特征(维度)并标记为 /(x_0/) , 相当于我们人为地给样本数据增加了一维特征,并且所有样本的这维特征值都是常数 1 ,这样上述一边线性方程就可以改写成:

/[/hat{y}(w, x) = w_0 x_0 + w_1 x_1 + ... + w_p x_p/]

2.1.3. 目标函数 - 最小二乘法(Normal Equation | Ordinary Least Square,OLS)¶

我们的目标就是要根据已有的训练样本数据求出w的值,然后对于预测数据,通过上述函数去计算 /(/hat{y}/) 的值,也就是模型预估的值。

这其实就是一个求解不定方程组的问题,已知一些样本数据(知道x和y的值),如何求里面的未知参数(w),给出一个最优解。

我们知道对于这样的一个方程组基本是无法求解的。
因此,需要退一步,将参数求解问题,转化为求最小误差问题,求出一个最接近的解,这就是一个松弛求解。

注解

数据点并没有真的落在一条直线上,所以不存在一条直线经过所有点。
所以我们的问题转换为求解一条直线,使得每个数据点到这条直线的距离和最短。

假设对于预测样本数据,我们模型预测的值为 /(/hat{y}/) ,而样本的真实值是y, /(/hat{y} - y/) 就是我们模型预测产生的误差。

那么如果这个误差越小,就说名我们预测的值 /(/hat{y}/) 越接近真实值y,也就是说我们预测的越准确。
所以求解不定方程组的问题可以转换成一个最优化问题。

选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。
有以下三个标准可以选择:

用“残差和最小”确定直线位置是一个途径。
但很快发现计算“残差和”存在正负相互抵消的问题。
/[/sum_{p=0}^{n}{( /hat{y}_p - y_p)}/]用“残差绝对值和最小”确定直线位置也是一个途径。
但绝对值的计算比较麻烦。

/[/sum_{p=0}^{n}{(| /hat{y}_p - y_p |)}/]

/(/hat{y}/) 和 y 分别看成一个向量,要表示两者的差异,我们可以用两个向量的距离表示,用我们熟知的欧式距离表示为:

/[/sqrt{/sum_{p=0}^{n}{( /hat{y}_p - y_p)}^2}/]

由于计算 根号 比较麻烦,我们加个平方以抵消根号操作 /({(/sqrt{/sum_{p=0}^{n}{( /hat{y}_p - y_p)}^2})}^2/)

欧式距离个计算公式其实就是线性代数中范数,我们用L-2范数表述上述欧式距离,简化公式:

/[{|| /hat{y} - y||_2}^2/]

注解

什么是范数?

可以简单理解成范数就是一个向量的 长度 。
一个向量X的各阶范数为:

1-范数: /(||x||_1 := /sum_{i=0}^{n}{|x_i|}/)

2-范数: /(||x||_2 :=(/sum_{i=0}^{n}{|x_i|^2})^{1/2}/) 亦可写成 /(||x||_2 :=/sqrt{/sum_{i=0}^{n}{|x_i|^2}}/)

p-范数: /(||x||_2 :=(/sum_{i=0}^{n}{|x_i|^p})^{1/p}/)

范数介绍 :浅谈L0,L1,L2范数及其应用

由于 /(/hat{y}=w_0 + w_1 x_1 + ... + w_p x_p = wx/) ,上述公式我们改成:

/[{|| x w - y||_2}^2/]

我们的最终目的是 求得当预测值损失最小时W的值 ,所以最终我们的公式为:

/[/underset{w}{min/,} {|| x w - y||_2}^2/]

我们把这个函数称为 损失函数(cost function| loss function | error function) 。

对于该模型 /(/hat{y}(w, x)/) 的所有样本的损失平均值成为“经验风险”(empirical risk)或”经验损失”(empirical loss)。

/[/underset{w}{min/,} { /frac{1}{2p} }{|| x w - y||_2}^2/]

注解

公式中加入 /(/frac{1}{p}/) 代表求平均值,再加入 /(/frac{1}{2}/) 主要是为了后续求解的时候抵消掉2次幂偏导数系数2, 公式整体乘以 /(/frac{1}{2}/) 对其求极值问题无影响。
习惯上一般会去掉目标函数中的常数项 /(/frac{1}{p}/) ,同时为了后面推导的简洁性会加上一个 /(/frac{1}{2}/)

很显然,经验风险最小化(empirical risk minimization,ERM)就是求解最优模型的原则。
这就是损失函数的来源。

以“残差平方和最小”确定直线位置的方法就是最小二乘法。
用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性, 这种方法对异常值非常敏感。

最常用的是普通最小二乘法( Ordinary Least Square,OLS): 所选择的回归模型应该使所有观察值的残差平方和达到最小, 即采用平方损失函数。

注解

最小二乘法要求X是列满秩的。
然而,对于普通最小二乘问题,其系数估计依赖模型各项相互独立。
当各项是相关的,设计矩阵(Design Matrix) x 的各列近似线性相关, 那么,设计矩阵会趋向于奇异矩阵,这会导致最小二乘估计对于随机误差非常敏感,会产生很大的方差。
这种 多重共线性(multicollinearity) 的情况可能真的会出现,比如未经实验设计收集的数据.

接下来,就是求解这个函数的方法,有 直接公式求解 梯度下降法 。

求解方法 - 直接公式求解¶

求偏导数,然后令偏导数为零,直接求解。

想了解具体的求解过程,需要先回顾以下内容:

线性方程组 最小二乘法

/[/underset{w}{min/,} { /frac{1}{2p} }{|| x w - y||_2}^2/]

这个方程的意思是:当 /({ /frac{1}{2p} }{|| x w - y||_2}^2/) 最小时 w 的值。
其中 x 和 y 是已知数据(训练样本数据),w 是求解的未知数。

这个方程是一个二次方程,我们知道一次方程不存在极值的,而二次方程式一定存在极值的,所以 w 一定是有唯一解的。

极值点的导数是0,所以求解方法就是,求出 /({ /frac{1}{2p} }{|| x w - y||_2}^2/) 的导数(这里 /(/hat{w}/) 是多元,所以我们是偏导数),然后令其导数为0。

二次方程的偏导数是一次方程,所以最后实际上我们又得到一个关于未知数 /(/hat{w}=(w_0,w_1, ... , w_p )/) 的一个多元一次线性方程组。

/[w_0 a_{01} + w_1 a_{11} + ... + w_p a_{p1} = b_1/]

/[w_0 a_{02} + w_1 a_{12} + ... + w_p a_{p2} = b_2/]

/[w_0 a_{03} + w_1 a_{13} + ... + w_p a_{p3} = b_3/]

/[w_0 a_{0n} + w_1 a_{1n} + ... + w_p a_{pn} = b_n/]

详细推到过程这个省略

总之,最后w的解析解可以表示成:

/[/hat{w} = (X^T X)^{-1} X^T y/]

线性回归到这里就训练完成了,对每一个样本点的预测值是 /(f(x_i)=/hat{y_i}=/hat{w}^T x_i/) 所以:

/[/hat{y}=X /hat{w}=X(X^T X)^{−1} X^T y/]

接下来看一下我们寻找到的预测值的一个几何解释:

从上面的解析解 /(/hat{w}=(X^T X)^{−1}X^T y/) 可以得到 /(X^T(/hat{y}−y)=0/) (垂直的向量相乘=0), 因此实际上 /(/hat{y}/) 是y在平面X(由列向量x1和x2张成,假设只有两维)上的投影。

2.1.5. 线性模型的缺点¶

线性模型的前提是你的特征和结果是存在近似线性关系的情况下,预测才会准确,否则是非常不可靠的。

注解

机器学习模型无非就是根据已有数据,去预测未知数据的一个 可能的值 ,仅仅是一个估计而已。

看一些示例: 下图是二维空间中,一维自变量(特征),一维因变量(结果)),因变量和自变量 存在近似线性关系,适用 线性模型进行预测。

下图是二维空间中,一维自变量(特征),一维因变量(结果)),因变量和自变量 不存在 近似线性关系,不适用 线性模型进行预测。

下图是三维空间中,二维自变量(特征),一维因变量(结果)),因变量和自变量 存在 近似线性关系,适用 线性模型进行预测。

下图是三维空间中,二维自变量(特征),一维因变量(结果)),因变量和自变量 不存在 近似线性关系,不适用 线性模型进行预测。

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0