spark 相关性分析_《Spark机器学习进阶实战》——2.3.2 相关性分析

《Spark机器学习进阶实战》中的2.3.2章节介绍了相关性分析,包括皮尔逊和斯皮尔曼相关性方法。皮尔逊适用于正态分布数据,用于计算向量的相似度,其值大于0表示正相关,小于0表示负相关。斯皮尔曼则用于非正态分布数据。示例代码展示了如何使用MLlib计算RDD的皮尔逊相关性和相关性矩阵。
摘要由CSDN通过智能技术生成

2.3.2 相关性分析

相关性分析是指通过分析寻找不同商品或不同行为之间的关系,发现用户的习惯,计算两个数据集的相关性是统计中的常见操作。

MLlib提供了计算多个数据集两两相关的方法。目前支持的相关性方法有皮尔逊(Pearson)相关和斯皮尔曼(Spearman)相关。一般对于符合正态分布的数据使用皮尔逊相关系数,对于不符合正态分布的数据使用斯皮尔曼相关系数。

皮尔逊相关系数是用来反映两个变量相似程度的统计量,它常用于计算两个向量的相似度,皮尔逊相关系数计算公式如下:

b8912a20521f2d770535f0f7a0ea0fad.png

其中,X、Y表示两组变量,X、Y表示两个变量的平均值,皮尔逊相关系数可以理解为对两个向量进行归一化以后,计算其余弦距离(即使用余弦函数cos计算相似度,也用向量空间中两个向量的夹角的余弦值来衡量两个文本间的相似度),皮尔逊相关系数大于0表示两个变量正相关,小于0表示两个变量负相关,皮尔逊相关系数为0时,表示两个变量没有相关性。

调用MLlib计算两个RDD皮尔逊相关性的代码如下,输入的数据可以是RDD[Double],也可以是RDD[Vector],输出是一个Double值或者相关性矩阵。

import org.apache.spark.SparkContext

import org.apache.spark.MLlib.linalg._

import org.apache.spark.MLlib.stat.Statistics

// 创建应用入口

val sc: SparkContext = ...

// X变量

val seriesX: RDD[Double] = ...

// Y变量,分区和基数同seriesX

val seriesY: RDD[Double] = ...

// 使用皮尔逊方法计算相关性,斯皮尔曼的方法输入"spearman"

val correlation: Double = Statistics.corr(seriesX, seriesY, "pearson")

// 向量数据集

val data: RDD[Vector] = ...

val correlMatrix: Matrix = Statistics.corr(data, "pearson")

皮尔逊相关系数在机器学习的效果评估中经常使用,如使用皮尔逊相关系数衡量推荐系统推荐结果的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值