【问题标题】:maximize intra-group correlation while minimizing inter-group correlation最大化组内相关性,同时最小化组间相关性
【发布时间】:2023-03-26 06:47:01
【问题描述】:

我正在尝试弄清楚是否有一种方法可以对对象进行排序,从而最大化组内相关性并最小化组间相关性。

例如,假设有一个数据框 DF,它包含 12 列 s1 到 s12,每列有 100 个观测值。假设每个代表股票回报率。

我想找到一种方法将这些数据分为 3 组,每组 4 个变量,这将最大化组内相关性并最小化组间相关性。 假设 Pearson 方法运行良好,

df_cor <- cor(df)

这将给出一个 12x12 的相关矩阵。

我的直觉是通过使用这个相关矩阵,我应该编写一个代码来只选择能够给出最大相关系数总和的唯一对,但我有点迷失了。

你们中的任何人都可以提供有关如何执行此操作的提示吗?

我的真实数据有 2000 列,每列有 3000 个观察值,我必须将它们分成 10 组。

我正在用 R 做,但我也可以用 python 做。

感谢阅读!

【问题讨论】:

    标签: python r machine-learning data-science


    【解决方案1】:

    不久前,我写了一个函数(func_correlation),它接受一个矩阵或数据框(预测变量),并在考虑到许多参数的情况下返回高度相关的对。希望是您实际提出的问题。

    示例数据,

    lst_s = list()
    
    set.seed(1) 
    for (i in 1:12) {
    
      nam = paste0("s_", i)
    
      lst_s[[nam]] = runif(100)
    }
    
    s_matr = do.call(cbind, lst_s)
    

    使用devtools::install_github('mlampros/FeatureSelection')可以安装包然后运行,

    dat = FeatureSelection::func_correlation(s_matr, target = NULL, correlation_thresh = 0.05, use_obs = "everything", correlation_method = "pearson")
    
    # here the *correlation_thresh* is low because I use random data, adjust it to your needs
    

    它返回一个列表(out_list)和一个数据框(out_df)。该列表显示了 correlation_thresh 之上的 individual 预测变量的相关性,

    $out_list
    $out_list[[1]]
               s_1
    s_3 0.14450632
    s_6 0.10891246
    s_7 0.13232308
    s_8 0.07818346
    s_9 0.06381170
    
    $out_list[[2]]
               s_2
    s_10 0.1380704
    s_11 0.1737746
    
    .........
    

    而数据框显示 correlation_thresh 之上的所有预测变量对,

    $out_df
       predictor1 predictor2       prob
    1         s_3        s_1 0.14450632
    2         s_6        s_1 0.10891246
    3         s_7        s_1 0.13232308
    4         s_8        s_1 0.07818346
    5         s_9        s_1 0.06381170
    6        s_10        s_2 0.13807039
    7        s_11        s_2 0.17377459
    8         s_4        s_3 0.10395950
    9         s_6        s_3 0.21541706
    
    ...............
    

    【讨论】:

    • 感谢您的回复!我想知道你的函数和融合相关矩阵(并按相关性降序排序)的区别是什么?
    • @TaeyoungAhn,我认为我的答案不是您实际期望的输出。
    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多