为什么机器学习中的数据要用向量/矩阵来表示?

在数据科学和机器学习中,我们经常将数据表示为向量和矩阵。在数学和物理中,向量被定义大小和方向的量(例如,距离向量)。然而,通常我们处理的数据不一定会遵循向量的定义,但但我们仍然用向量来表示数据。例如,我们可以将人口统计信息(例如,种族、年龄、性别等)的数据表示为一个向量,但这没有对大小或方向的纯几何解释。

同样,在数学中,矩阵是用来表示线性映射的,它被定义为两个向量空间之间的映射,两个向量空间保留了向量加法和标量乘法。然而,在数据科学/机器学习中如何使用矩阵的上下文与这种数学定义是不同的。

既然存在这种差异,那么为什么向量和矩阵在表示数据时被如此广泛地使用呢?在本文中,我们将探讨解释这一现象的几个原因。

计算效率

在处理数据时,我们通常想要将它们输入到机器学习模型中,这个过程涉及大量的计算,通常需要对许多数字进行加法和乘法运算。例如,在构建电影推荐系统时,您可能会收集用户观看库中每部电影的时长数据。然后你可以推荐那些平均观看时间较高的电影。这个平均值是通过所有用户观看电影的时间之和除以电影的数量计算出来的。执行这一过程可能会很慢,特别是当用户和电影数量越来越多时(比如优酷,它拥有超过2.67亿的用户,拥有近2万部影片)。

然而,计算机科学家已经开发出非常高效的线性代数算法,向量和矩阵的加法和乘法比传统的基于元素的加法/乘法要快得多。对于Python,用于科学计算和线性代数的NumPy库提供了更快的速度和效率。再次回顾我们的推荐系统问题,我们可以将每个用户与一个维度为n的观看时间向量相关联,其中n是电影的数量。然后我们的数据将是这些向量的一个矩阵集合,有n行m列,其中n是电影的数量,m是用户的数量。为了找到要推荐的电影,我们可以沿着行取平均值,找出所有用户观看每部电影的平均时间,然后根据平均观看时间最高的电影进行排序。由于高度优化的算法,用向量和矩阵实现这个问题可以加快计算速度。

为了演示,这里有一个Python脚本,比较了使用常规 Python 和 NumPy 库(对矩阵和向量进行了优化)计算行平均值所需的时间。为了评估计算效率,我们将测量程序运行一个包含 500 部电影和 200 个用户的数据集所需的时间。

# import necessary libraries
import random
import numpy as np
import time


# defining the dimensions for our data
n = 500 # number of movies
m = 200 # number of users


# generating the (random) data with n rows and m columns
data = []
for _ in range(n):
data.append(random.choices(range(0, 90), k = m)) # generate random watch time


# normal array iterations to calculate the means along the rows
start_time = time.time()
averages = []
for i in range(n):
row_average = 0
for j in range(m):
row_average = data[i][j]
row_average = row_average / m
averages.append(row_average)
end_time = time.time()
total_time = end_time - start_time # time for normal array implementation


# using NumPy
np_data = np.array(data) # convert data into numpy array


np_start_time = time.time()
np_average = np.mean(np_data, axis = 1) # using numpy mean function
np_end_time = time.time()
np_total_time = np_end_time - np_start_time # time for numpy array implementation


print(f"Regular Python: {total_time:4f}; NumPy: {np_total_time:4f}") # print results

可以将Python代码运行十次并对结果取平均值,常规 Python 耗时 9.088 毫秒,而 NumPy 耗时 0.427 毫秒。NumPy 实现比常规 Python 快大约 20 倍。

更进一步,我们在下面绘制Python和NumPy实现计算平均值的时间,同时将用户数量从1到1000进行变化,同时保持电影数量为500。


随着数据量的增加,常规Python和NumPy之间的差值会越来越大。我们还可以通过绘制两个实现之间的比率来可视化这一点。

随着数据量的增加,这个比例也在不断增加,这也证明了使用NumPy可以提高效率。对于非常大的数据来源或复杂的模型,这样效率更有价值。考虑一下越来越普遍的大数据领域,往往有数十亿到数万亿的数据点。对于深度神经网络模型,它可能由数百万个节点/参数组成,每个节点/参数的权重和偏差还要进行相乘或相加运算(例如,GPT-3语言模型有超过1750亿个参数)。

线性代数工具

使用向量/矩阵表示数据的另一个优点是,我们可以利用线性代数和数学工具。一个很好的例子是在计算机视觉中,矩阵被用来描述图像转换(例如,平移、旋转、反射、仿射、投影等)。

对于图像旋转,目标是确定一个函数,用于从图像的每个像素旋转某个角度。在线性代数中,旋转矩阵用于旋转向量/矩阵。通过将图像表示为矩阵,我们可以利用旋转矩阵。类似地,还有用于平移、反射和仿射变换的矩阵。

此外,将图像表示为矩阵也有助于进行投影变换,即从一个平面到另一个平面的线的映射。这对于图像拼接和制作全景照片很有用。此外,在处理3D图形图像时还有进一步的应用。

更加简洁

在处理复杂的数据情况时,使用向量和矩阵表示概念可以更加方便、清晰和简洁。我们可以将数据分组到指定的向量或矩阵中,而不是给每个数据点一个名称。此外,我们还可以使用向量/矩阵约定来表示对数据的操作。

例如,考虑有5个特征变量的多元线性回归的例子。这可以表示为:

 

使用向量/矩阵,我们可以传达相同的想法(特征和特征上的系数现在是向量):​

 注意,这个表示要短得多,并且仍然能捕捉到我们的线性回归模型。如果我们有更多的变量,这种表示仍然有效(对于10或1000个特征变量,它的表达式相同)。此外,向量和矩阵可以用来表示许多数据操作和模型(如逻辑回归、随机森林、神经网络等)。

此外,向量/矩阵的约定在许多领域(如物理、工程、计算等)都非常普遍。这意味着从业者通常都很熟悉,这减少了认知负担(因为他们不需要学习新的数据/模型约定)。

结论

许多数据和模型的操作用向量/矩阵表示的原因是:用向量和矩阵表示的数据可以实现高效、更快的计算,还可以使用线性代数技术。


标签:
上一篇2025-08-22

相关推荐

  • 为什么机器学习中的数据要用向量/矩阵来表示?

    在数据科学和机器学习中,我们经常将数据表示为向量和矩阵。在数学和物理中,向量被定义大小和方向的量(例如,距离向量)。然而,通常我们处理的数据不一定会遵循向量的定

    2025-08-22 09:03:59
    1134
  • 为什么边缘人工智能是智能家居的未来?

    如今,越来越多的设备在边缘连接。更好的是,由于人工智能和机器学习,它们更加强大。这种更智能、更近距离的设备接连出现,正在改变设备在物联网(IoT)中的功能。这一结

    2025-08-22 09:03:59
    1095
  • 微软升级Bing搜索引擎全面采用OpenAI ChatGPT人工智能

    微软宣布对Bing搜索引擎和Edge网络浏览器进行升级,将支持OpenAI广受欢迎的ChatGPT聊天机器人AI,以提升搜索和回答能力。这一消息是微软在美国西雅图举行的新闻发布

    2025-08-22 09:03:59
    631
  • ChatGPT之父成平衡大师:赚钱和AI技术安全我都要

    4月3日消息,OpenAI的终极目标是开发安全的通用人工智能。该公司首席执行官萨姆·奥尔特曼(SamAltman)既需要利用技术收益推动人工智能不断进步,又需要使用非营利性

    2025-08-22 09:03:59
    261
  • AI时代唯一与你有关的可能是“商业容器”

    还在讨论AGI吗?看别人研发武器不如思考AGI时代下商业会是怎样。而每一个技术大变革的时代,恰恰是从头反思商业形态的最好契机。惟其慌乱,更要追根究源。2023年初,Cha

    2025-08-22 09:03:59
    569
  • 神经体绘制:NeRF及其以外方法

    参考论文总结“NEURALVOLUMERENDERING:NERFANDBEYOND“,2021年1月,乔治亚理工和麻省理工的合著。神经渲染定义为:“一种深度图像或视频生成方法,可显式或隐式控制场景

    2025-08-22 09:03:59
    834
  • 从论文到代码、从前沿研究到工业落地,全面了解BEV感知

    BEV感知到底是什么?自动驾驶的学术界和工业界又都在关注BEV感知的什么内容?本文将会为你揭晓答案。在自动驾驶领域中,让感知模型学习强大的鸟瞰图(BEV)表征是一种趋势,

    2025-08-22 09:03:59
    281
  • OpenAI计划发布新的开源语言模型

    5月16日消息,据The Information网站援引一位知情人士的话说,OpenAI正准备向公众发布一款新的开源语言模型,而之所以采取这一举措,是因为来自竞争对手的开源人工智能

    2025-08-22 09:03:59
    1465