《机器学习高频面试题详解》2.4:降维算法-奇异值分解
点击上方卡片链接就可以进入专栏,专栏右上角有订阅选项,欢迎大家订阅~
前言
大家好,我是鬼仔,今天带来《机器学习高频面试题详解》专栏的第2.4节:降维算法-奇异值分解。这是鬼仔第一次开设专栏,每篇文章鬼仔都会用心认真编写,希望能将每个知识点讲透、讲深,帮助同学们系统性地学习和掌握机器学习中的基础知识,希望大家能多多支持鬼仔的专栏~
目前这篇是试读,后续的文章需要订阅才能查看哦,专栏预计更新30+篇文章(只增不减),具体内容可以看专栏介绍,大家的支持是鬼仔更新的动力!
本文大纲 |
|
一、原理 |
1. 降维算法 |
2. 奇异值分解 |
|
3. 截断奇异值分解 |
|
二、面试真题 |
1. 简要介绍下奇异值分解? |
2. 奇异值分解的优缺点? |
|
3. 奇异值分解(SVD)与主成分分析(PCA)之间有何区别和联系? |
|
4. 描述一下 SVD 在推荐系统中的应用? |
|
5. 如何使用奇异值分解进行图像压缩? |
|
6. 如何使用奇异值分解进行文本降维? |
|
7. 如何优化奇异值算法计算复杂度? |
一、原理
1. 降维算法
真实数据中,往往存在着很多冗余特征,需要利用降维算法进行数据压缩。降维算法可将高维数据映射到低维空间中,同时保留尽可能多的原始信息。降维在数据挖掘、图像处理、自然语言处理等领域都有广泛应用。
降维算法有以下几个优点:
1)数据可视化
处理高维数据时,往往需要对数据进行可视化展示,但是高维数据很难可视化展示。通过使用降维算法将高维数据映射到低维空间,可以更容易地实现数据可视化。
2)减少计算量
高维数据计算复杂度很高,因此将高维数据映射到低维空间,可以减少计算量,提高计算效率。对于大规模数据及高维特征数据,进行降维处理可以加快数据处理和分析的速度。
3)剔除冗余信息
高维数据中存在大量的冗余信息,这些信息对于分类、预测等任务并不重要,反而可能影响模型的准确性。通过降维算法可以去除或减少冗余信息,提高模型的准确性。
4)提高特征的鲁棒性
高维数据中可能存在特征之间的相关性或者噪音,这些信息可能会影响模型的鲁棒性。通过降维算法可以对特征进行筛选和组合,提高特征的鲁棒性,降低模型的过拟合风险。
5)数据压缩
降维算法可以将高维数据压缩到低维空间中,从而减少数据存储空间,降低数据存储成本。通常在数据传输、存储、备份等方面应用广泛。
降维算法可以分为特征变换和特征筛选两类,特征变换是将高维冗余特征变换为低维关键特征,具体可以细分为线性降维和非线性降维两类,其中线性降维算法假设数据在高维空间中呈线性分布,非线性降维算法则没有这种假设。特征筛选则是在原有特征集合中用特定算法筛选出有效特征。这篇主要讲解特征变换的线性降维算法:奇异值分解-SVD。
2. 奇异值分解
特征值分解和奇异值分解有着紧密的关系,它们的分解目的都一样,就是提取出一个矩阵最重要的特征。特征值分解可以得到特征值与特征向量,特征值表示对应特征的重要性,而特征向量表示这个特征是什么,但特征值分解有很大的局限性,要求变换的特征矩阵必须是方阵。
而奇异值分解适用于任意矩阵。如下图所示,假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),
3. 截断奇异值分解
奇异值跟特征值类似,在矩阵Σ中也是从大到小排列,而且奇异值减少特别地快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。因为,可以用前r大的奇异值来近似描述矩阵,即可引出截断奇异值分解:
r是一个远小于m、n的数,右边的三个矩阵相乘的结果将会是一个接近于A的矩阵。r越接近于n,则相乘的结果越接近于A。这三个矩阵的存储大小远小于原始的矩阵A,当我们指定一个奇异值个数为r时(r小于数据原始的维度),只计算前r个奇异值,就有,其中
就是经过降维的数据集。
二、面试真题
1. 简要介绍下奇异值分解?
奇异值分解是一种矩阵因式分解方法,简称SVD。将任何给定矩阵分解为三个矩阵的乘积:一个正交的左奇异向量矩阵、一个对角的奇异值矩阵和一个正交的右奇异向量矩阵。将数据集的奇异值表征按重要性排列,舍弃不重要的特征向量,达到降维的目的,从而找出数据中的主成分。它在应用如数据降维、信息检索、信号处理和图像压缩等领域具有重要作用。
2. 奇异值分解的优缺点?
1)优点
- 信息保留:SVD 使得数据保留尽可能多的原始信息。这是通过思考数据矩阵的奇异值(降序排列),然后仅使用前 k 个较大的奇异值及其对应的左右奇异向量来重构数据,实现降维的目的。
- 稳定性:SVD 具有优秀的数值稳定性,分解的过程通常具有较小的数值误差。因此,SVD 在处理大规模数据时,甚至在存在噪声的情况下,也可以提供令人满意的结果。
- 无需标签:SVD 是一种无监督的降维方法,意味着它不需要目标变量或标签来优化或调整参数。因此,它更容易对没有标签的数据应用。
- 去除噪声和冗余:SVD 能够捕捉数据的主要结构,并识别主成分,将噪声或副作用分离出去。这帮助减少数据中的噪音和冗余信息,从而减少后续建模的复杂性。
2)缺点
- 计算复杂度:SVD 的计算复杂度相对较高,尤其在处理大规模高维数据时。这可能导致降维过程变得缓慢,甚至在计算资源有限的情况下难以执行。
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
专栏作者曾在校招期间拿到包括字节、微信和华为等多家大厂的SSP offer,该专栏主要是为了帮助同学们系统性地学习和掌握机器学习中的基础知识。专栏详细地整理了各大厂的算法岗面经,力争深入浅出地讲解重要知识点,适合人群为准备校招或者实习,且目标岗位为算法岗、数据挖掘岗或者数据分析岗的同学。