博客 降维—决胜大数据之利器

降维—决胜大数据之利器

   包袋鼠   发表于 2021-12-23 11:15  585  0

谈到降维,通常会联想到降维打击,降维究竟是什么?


如果大家读过刘慈欣的《三体》,相信最让你感到震撼的片段之一就是三体的水滴对阵人类的末日之战。与星球大战和其他科幻大片中展现的不同,三体人并没有祭出舰队,而是派出了一颗看似简单的水滴状探测器,使用最原始、最简单的“撞击”,就降维打击了人类上千艘战舰组成的太阳系舰队。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/38cad24494798a29cda7d3ae7aa9bf9b..jpg


在科幻领域和商业竞争中,降维是指高级别的玩家通过维数的领先,碾压低级的对手。在大数据分析和机器学习中,降维是指减少相关的维度,节省计算成本、提高预计算和训练模型的效率。


大数据中的维度剪枝

了解了科幻中的降维,我们再来讨论在大数据分析领域和 AI 领域的降维。在大数据领域,对于节省运算成本、提高分析效率,降维都是一把无形的利器。


基于 Ralph Kimball 的多维建模理论,数据库中的不同“列”按照其业务含义被定义为维度和度量。维度间的组合形成立方体,即 Cube。联机分析处理 (OLAP) 是一类允许用户同时分析来自多个数据库系统信息的软件技术,它能让分析人员能够从不同的角度提取和查看业务数据。分析人员经常需要对数据进行分组 (group by)、聚合 (aggregate) 和关联 (join) ,使用 OLAP 数据可以预先计算和预聚合,使分析更快。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/e99c8aaa3fce5547e80e272b114a99fb..jpg


就像大家小时候背过的“小九九”乘法表一样,维度间的任意组合通过预计算以后,计算结果数据通过存储落盘,预计算通过经济的分布式存储和云对象存储进行数据物化,正所谓是“兵马未动、粮草先行”。


但对于所有基于预计算的 OLAP 引擎,维度诅咒是普遍头疼的问题。因为随着维度数量的增多,通常来说,Cube 的复杂度会随着维数线性增长而成指数级增长趋势。例如在 Apache Kylin 中,n 个维度会产生 2^n 个 Cuboid。设想下,如果12个维度会产生4096个维度组合,那么 30 个维度就会产生1,073,741,824个组合,任意的组合数的数量级增长起来很惊人。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/c1d5e24ef20a7237818ebef9cbf0ebb0..jpg


在 Kyligence Enterprise 中,我们对维度组合的随意蔓延进行了限制,因为考虑到客户的集群资源和时间成本,我们对 Cube 进行了“剪枝”的操作、推出了多种降维方法。在有限的集群资源和业务需求之间,Kyligence 以用户为中心做出了权衡。


Kyligence 在开源 Apache Kylin 的剪枝方式(聚合组、衍生维度)的基础上,提供了更多样的剪枝方式:


  • 多聚合组:在同一个分析模型,用户根据自己关注的维度和度量组合,可以划分出自己关注的组合大类,这些大类在 Kyligence Enterprise 里面被称为聚合组。


  • 必需维度:用户有时会对某一个或几个维度特别感兴趣,所有的查询请求中都存在 group by 这个维度,那么这个维度就被称为必需维度,只有包含此维度的索引会被生成。


  • 层级维度:用户选择的维度中常常会出现具有层级关系的维度。例如对于国家、省份和城市。


  • 联合维度:用户有时并不关心维度之间各种细节的组合方式,例如用户的查询语句中仅仅会出现 group by A, B, C,而不会出现 group by A, B 或者 group by C 等等这些细化的维度组合。


  • 最大维度组合数:最大维度组合数表示一个索引能够包含的最大维度数。这个剪枝方法能够避免生成大的索引(包含维度数目过多的索引),从而减少构建索引的开销。


Kyligence 设计了多种剪枝方式从任意的维度组合中选取出来那些业务用户真正关心和需要的组合进行索引,其他不需要的维度组合可以通过 Kyligence 分层存储集成 Clickhouse 进行即席查询,对比 SparkSQL 进行查询下压有着明显的查询优势,为用户提供全方位提速的查询智能路由体验。

机器学习中的降维

类似于上面在大数据中进行多维分析的思路,随着维数的增加,处理数据会变得越来越困难。甚至对于基于高维数据的非监督性机器学习,我们也不可能全面地采集所有可能的组合,除了计算资源的限制以外,还有一个重要的原因就是:维度冗余


在通过多个变量进行聚类回归时,我们发现很多维度之间具有强相关性,他们并非独立的维度,也就是说,聚类的效果随着维数的增加会达到一个极值以后,就会慢慢降低。甚至通过多维得出的模型会存在过拟合(overfitting)的状况,极度拟合训练数据集,模型本身并不具有代表性。随着特征数量的增加,模型变得更加复杂。特征的数量越多,过拟合的机会就越大。一个机器学习模型被训练在大量的特性上,越来越依赖于它被训练的数据,反过来又被改造,导致在真实数据上的糟糕表现。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/b364d6be08b47d15d1adf648e8f0f1ba..jpg


综上,我们希望降维达到的目标是:

  • 预测模型的可用性表现的更好

  • 变量不是多余的(预测变量越独立越好)

  • 降维保留结构性和重要信息,去除不必要的噪音


在解决非监督性机器学习的问题中,我们可以使用基于 PCA(Principal Component Analysis)主成分分析方法来降维、找寻真正有价值的关联变量。在这个例子里面,PCA 将两个正相关的数据从二维空间压缩到一维空间(即从两个原始变量到一个主成分)。通过旋转原始轴得到两个新的正交轴,仅保留下捕获数据中最大可变性的主成分。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/0ba05c413b4fc4b6c8699201e2a0dd20..jpg


例如通过 PCA 生成的分析结果来看,2个主成分已经可以获取数据集的92.5%变异性(variability),3个主成分获取了数据集的96.6%的变异性,提升得不明显。其实就可以看出2个维度即可以有比较显著的收益。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/58b124d730667141217e7115ce03bf17..jpg


通过2个主成分形成的数据集散点图我们已经可以清晰的看出三个聚类的分布情况,不需要再额外添加维度来识别聚类。可见降维技术可以帮助在可用的变量中去除冗余,可以帮助我们发现并保留“信号”的低维空间数据,过滤掉“噪音”。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user166259/article/5c741a0a5d651b71d337292e92b0d0d3..jpg


总结

古人云,天下功夫,唯快不破。各大数据库厂商都在查询性能上追求极致,比拼着在海量数据集上达到秒级、亚秒级甚至更快的响应速度,有时可能会忽略了实际业务场景的需求优化。我们相信行业中的发展趋势将不仅仅是只关注性能跑分这些指标,能回归数据分析本身能给业务带来的价值——降本增效。


免责声明:本文来源公众号(Kyligence),仅供读者交流学习,版权归原作者所有,且仅代表作者个人观点,侵删。

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群