Python代码 十二种必须掌握的降维知识


Python代码 十二种必须掌握的降维知识

文章插图
CDA数据分析研究院出品
介绍你是否曾经处理过具有一千多个特征的数据集?5万多个特征呢?我曾经有过 , 让我告诉你这是一项非常具有挑战性的任务 , 特别是如果你不知道从哪里开始的时候!拥有大量的变量既是好事 , 也是坏事 。我们有大量的数据用于分析 , 这很棒 , 但由于规模太大 , 它变得非常具有挑战性 。
在微观层面分析每个变量是不可行的 。我们可能需要几天或几个月才能进行任何有意义的分析 , 我们将会为我们的业务损失大量的时间和金钱!更不用说这将需要的计算能力 。我们需要一种更好的方法来处理高维数据 , 以便我们能够快速从中提取模式和见解 。那么我们如何处理这样的数据集呢?
当然是使用降维技术 。你可以使用这个技术来减少数据集中的特征数量 , 而不必丢失太多信息并保持(或改进)模型的性能 。正如你将在本文中看到的 , 这是处理大型数据集的一种非常强大的方法 。
这是一个可以在实际场景中使用的各种降维技术的综合指南 。在深入介绍我所涵盖的12种不同技术之前 , 我们将首先了解这个概念是什么以及为什么要使用它 。并且每种技术都有自己的Python实现代码 , 让你更好的熟悉它 。
1.什么是降维?
我们每天都在生成大量的数据 。事实上 , 世界上90%的数据都是在过去的3到4年中产生的!这些数字真的令人难以置信 。以下是收集的数据的一些例子:
  • Facebook会收集你喜欢的 , 分享的 , 发布的 , 访问的地点 , 你喜欢的餐馆等的数据 。你的智能手机应用程序会收集大量有关于你的个人信息亚马逊会收集你在其网站上购买 , 查看 , 点击等内容的数据赌场会跟踪每位客户的一举一动
随着数据生成和收集量的不断增加 , 可视化和绘制分析变得越来越具有挑战性 。进行可视化的最常见方法之一是通过图表 。假设我们有2个变量 , 年龄Age和身高Height 。我们可以使用Age和Height之间的散点图或线图 , 并轻松地将它们的关系可视化:
Python代码 十二种必须掌握的降维知识

文章插图
 
现在考虑我们有100个变量(p = 100)的情况 。在这种情况下 , 我们可以有100(100-1)/ 2 = 5000个不同的图 。将它们分别可视化是没有多大意义的 , 对吧?在我们有大量变量的情况下 , 最好选择这些变量的一个子集(p << 100) , 它获取的信息与原始变量集一样多 。
让我们用一个简单的例子来理解这一点 。考虑下面的图像:
Python代码 十二种必须掌握的降维知识

文章插图
 
这里我们有类似物体的重量 , 单位为Kg(X1)和磅(X2) 。如果我们使用这两个变量 , 它们将传达相类似的信息 。因此 , 仅使用一个变量是有意义的 。我们可以将数据从2D(X1和X2)转换为1D(Y1) , 如下所示:
Python代码 十二种必须掌握的降维知识

文章插图
 
类似地 , 我们可以将数据的p维度减少为k维度的子集(k << n) 。这称为降维 。
2.为什么需要降维?
以下是将降维应用于数据集的一些好处:
  • 随着维度数量的减少 , 存储数据所需的空间会减少更少的维度导致更少的计算/训练时间当我们有一个大的维度时 , 一些算法的表现不佳 。因此 , 需要减少这些维度才能使算法有用它通过删除冗余的特征来处理多重共线性问题 。例如 , 你有两个变量 - “在跑步机上花费的时间”和“燃烧的卡路里” 。这些变量是高度相关的 , 因为你在跑步机上花费的时间越多 , 你燃烧的卡路里就越多 。因此 , 存储两个变量都没有意义 , 只有其中一个可以满足需求它有助于可视化数据 。如前所述 , 在高维度中可视化数据是非常困难的 , 因此将我们的空间缩小到2D或3D可以让我们更清晰地绘制和观察数据
是时候深入了解本文的关键 - 各种降维技术!我们将使用一个实践问题:Big Mart Sales III中的数据集点击这里下载数据提取码为:fmk0。


推荐阅读