摘要:在数据领域初学时,大家常听到的一个建议是:不要试图把整个机器学习都学透——因为它实在太庞大且变化太快,根本不现实;
大数据文摘编译
在数据领域初学时,大家常听到的一个建议是:不要试图把整个机器学习都学透——因为它实在太庞大且变化太快,根本不现实;
而更应该聚焦在少数几个与数据工作日常紧密相关的模型,比如决策树、支持向量机,当然,还有线性回归。
线性回归本身就是一个非常实用的模型,更有意思的是,许多其他机器学习模型其实都是在它的基础上稍作改动而来。
本文的目的,就是想让大家看到这一点。接下来,我们会先简要回顾一下线性回归的基本原理,然后再介绍它的几种常见变体。
线性回归属于监督学习,也就是说我们有一个明确的输出变量(即目标变量),我们假定它是输入特征的线性函数。通常我们会用下面这样的公式来表示:
这里,y 是目标变量,x 是包含所有输入特征的向量,ε 代表“噪声”,也就是那些让我们的数据点无法完全落在直线上的误差。
我们进一步假设这些噪声服从均值为0、方差恒定的正态分布,也就是说,无论特征值大小如何,数据点距离直线的远近都是类似的。
换句话说,理想中的线性回归散点图大致是这样的:
而不是这样的:
在线性回归中,我们假设目标变量是特征的线性函数。
但在实际问题中,目标往往和特征之间关系更为复杂。刚意识到这一点时,很多人可能会觉得棘手,仿佛我们需要去找到某个函数 f,使得 y = f(x) + 噪声。
不过,如果仔细想想线性回归的原理,就会发现现实世界很多规律其实都是连续的,这类函数往往可以用多项式很好地逼近(感兴趣的同学可以去查查 Weierstrass 逼近定理或 Stone-Weierstrass 定理)。
线性函数其实只是一次多项式而已,所以多项式回归可以看作是一种自然的推广。模型形式大致如下:
如果你在初步分析数据时,发现目标与输入的关系是弯曲的、非线性的,那么多项式回归或许值得一试。比如下图:
多项式回归改变的是等式右侧的函数形式,那左侧呢?如果不是目标变量本身,而是它的某个函数和输入的线性组合有关呢?也就是说,模型变成了:
这就是广义线性回归(Generalized Linear Regression,GLM)。
当 f(y) = y 时,就是我们前面讨论的普通线性回归,所以广义线性回归是它的直接扩展。
那 f 可以取什么形式呢?这取决于具体建模任务,但有几个常见的特例:
如果怀疑目标变量服从泊松分布,自然可以取 f(y) = ln(y),这就是泊松回归。
还有更常见的分类问题。虽然线性回归及其变体主要用于回归任务(顾名思义),但数据人第一次接触分类任务时,往往学到的第一个模型就是逻辑回归。其实,逻辑回归正是广义线性回归在 logit 函数(f(y) = ln(y/(1-y))) 下的特例。
这里不打算展开贝叶斯统计的基础知识,相关资料很多,有兴趣的同学可以自行查阅。
简单来说,就是当我们的数据很少、信息有限时,可以借助专家意见(先验知识)来辅助建模,获得对问题更全面的认识。在线性回归的情境下,如果数据点很少,直接拟合参数往往不靠谱,因为信息量不足。
但如果我们不追求唯一的“最佳拟合直线”,而是希望得到一条“高度可能包含真实直线”的区域,那么贝叶斯线性回归正好可以满足这样的需求。
数学细节可能会比较复杂,但核心思想就是:与其给出一条确定的直线,不如给出一个可能包含直线的区域。数据点越多,这个区域就越窄,我们对直线的位置也越有信心。如下图所示:
回到开头给初学者的建议,虽然深度学习和神经网络现在非常火爆,相关研究也是机器学习领域的前沿,但其实本质上,神经网络也就是大量“重型并行版的线性回归”再加上“激活函数”而已。
简单来说,神经网络由许多“神经元”(也叫感知机)组成,分布在不同的层中。每个神经元本质上就是一个线性回归,加上一个激活函数,用来判断输入是否足够让神经元“激活”。神经网络的训练过程,其实就是在不断调整这些线性回归的系数。
归根结底,神经网络就是大量的线性回归!不同的网络结构,核心区别无非是神经元(线性回归单元)数量和层数的不同。最复杂的深度网络,神经元可以多达上百万,层数也很多。
激活函数的选择也有多种(Heaviside、ReLU、Sigmoid 等都很常见),有的网络还会在不同层用不同的激活函数。
但本质区别也就这些。无论是 CNN、自动编码器、Transformer 等等,归根结底,都是由大量小小的线性回归单元组成的。
06 总结所以,线性回归或许看起来有些平淡无奇,但它其实是许多机器学习模型的基础。上面这些讨论远远不是全部内容,但希望能让你意识到线性回归的重要性。千万不要小看线性回归!
原文链接:
GPU算力按需租用
A100/H100 GPU算力按需租用,
秒级计费,平均节省开支30%以上!
来源:大数据文摘一点号