Tìm k của n mục có tương quan cặp đôi ít nhất


9

Tôi có một ma trận tương quan cặp giữa n mục. Bây giờ tôi muốn tìm một tập hợp con của k mục có tương quan ít nhất. Do đó, có hai câu hỏi:

  1. Đâu là biện pháp thích hợp cho mối tương quan trong nhóm đó?
  2. Làm thế nào để tìm nhóm có tương quan ít nhất?

Vấn đề này có vẻ như là một loại phân tích nhân tố nghịch đảo đối với tôi và tôi khá chắc chắn rằng có một giải pháp đơn giản.

Tôi nghĩ vấn đề này thực sự tương đương với vấn đề loại bỏ (nk) các nút khỏi một biểu đồ hoàn chỉnh để các nút còn lại được kết nối với trọng số cạnh tối thiểu. Bạn nghĩ sao?

Cảm ơn lời đề nghị của bạn trước!



Điều đó bây giờ trông có vẻ giống một lý thuyết đồ thị hơn là một câu hỏi thống kê (vì các mối tương quan không còn được xem là phụ thuộc lẫn nhau nữa). Có lẽ StackOverflow có thể mang lại câu trả lời tốt hơn. Một số loại cây bao trùm tối thiểu bị ràng buộc ...
ttnphns

@ttnphs: một cây bao trùm tối thiểu chỉ là điều tôi không muốn, vì các mối tương quan theo cặp có nghĩa là một biểu đồ hoàn chỉnh. Tuy nhiên, bạn đúng rằng câu hỏi này có thể phù hợp với trang web toán học hơn. Cảm ơn!
Chris

Tôi không rõ ràng về những gì bạn muốn. Nếu bạn đã kiểm tra tất cả các tập hợp con , bạn có chọn tập hợp con có tổng tương quan bình phương nhỏ nhất không, trong đó tổng nằm trên các tương quan trong tập con ? Các tương quan với các mục còn lại có quan trọng không? (nk)k(k1)/2k(nk)nk
Ray Koopman

Tôi đã đưa ra một giải pháp gần đúng được đề xuất trong câu hỏi được liên kết .
Uri Cohen

Câu trả lời:


5

[Mở đầu: câu trả lời này đã xuất hiện trước khi OP quyết định cải tổ câu hỏi, vì vậy nó có thể đã mất đi sự liên quan. Ban đầu câu hỏi là về How to rank items according to their pairwise correlations]

Bởi vì ma trận của các mối tương quan theo cặp không phải là một mảng một chiều, nên nó không hoàn toàn rõ ràng "xếp hạng" có thể trông như thế nào. Đặc biệt là miễn là bạn chưa thực hiện ý tưởng của mình một cách chi tiết, như nó có vẻ. Nhưng bạn đã đề cập đến PCA là phù hợp với bạn, và điều đó ngay lập tức khiến tôi nghĩ về Cholesky root như một sự thay thế phù hợp hơn nữa.

Rễ cholesky giống như một ma trận tải do PCA để lại, chỉ có điều nó là hình tam giác. Tôi sẽ giải thích cả hai bằng một ví dụ.

R, correlation matrix
         V1       V2       V3       V4
V1   1.0000   -.5255   -.1487   -.2790
V2   -.5255   1.0000    .2134    .2624
V3   -.1487    .2134   1.0000    .1254
V4   -.2790    .2624    .1254   1.0000

A, PCA full loading matrix
          I       II      III       IV
V1   -.7933    .2385    .2944    .4767
V2    .8071   -.0971   -.3198    .4867
V3    .4413    .8918    .0721   -.0683
V4    .5916   -.2130    .7771    .0261

B, Cholesky root matrix
          I       II      III       IV
V1   1.0000    .0000    .0000    .0000
V2   -.5255    .8508    .0000    .0000
V3   -.1487    .1589    .9760    .0000
V4   -.2790    .1361    .0638    .9485

A*A' or B*B': both restore R
         V1       V2       V3       V4
V1   1.0000   -.5255   -.1487   -.2790
V2   -.5255   1.0000    .2134    .2624
V3   -.1487    .2134   1.0000    .1254
V4   -.2790    .2624    .1254   1.0000

Ma trận tải A của PCA là ma trận tương quan giữa các biến và các thành phần chính. Chúng ta có thể nói điều đó bởi vì tổng các hàng vuông là tất cả 1 (đường chéo của R) trong khi tổng ma trận của bình phương là phương sai tổng thể (dấu vết của R). Các phần tử B gốc của Cholesky cũng có mối tương quan, bởi vì ma trận đó cũng có hai thuộc tính này. Các cột của B không phải là thành phần chính của A, mặc dù chúng là "thành phần", theo một nghĩa nào đó.

Cả A và B đều có thể khôi phục R và do đó cả hai đều có thể thay thế R, như đại diện của nó. B là hình tam giác cho thấy rõ thực tế là nó nắm bắt được các mối tương quan theo cặp của R một cách tuần tự, hoặc chữ tượng hình. Thành phần của Cholesky Itương quan với tất cả các biến và là hình ảnh tuyến tính của biến đầu tiên V1. Thành phần IIkhông còn chia sẻ với V1nhưng tương quan với ba cuối cùng ... Cuối cùng IVchỉ tương quan với cuối cùng , V4. Tôi nghĩ loại "xếp hạng" như vậy có lẽ là những gì bạn tìm kiếm ?

Tuy nhiên, vấn đề với phân tách Cholesky là - không giống PCA - nó phụ thuộc vào thứ tự của các vật phẩm trong ma trận R. Chà, bạn có thể sắp xếp các vật phẩm theo thứ tự giảm dần hoặc tăng dần của tổng các phần tử bình phương (hoặc, nếu bạn muốn , tổng các phần tử tuyệt đối hoặc theo thứ tự hệ số tương quan - xem về nó bên dưới). Thứ tự này phản ánh mức độ tổng của một mặt hàng.

R, rearranged
         V2       V1       V4       V3 
V2   1.0000   -.5255    .2624    .2134 
V1   -.5255   1.0000   -.2790   -.1487 
V4    .2624   -.2790   1.0000    .1254 
V3    .2134   -.1487    .1254   1.0000 

Column sum of squares (descending)
     1.3906   1.3761   1.1624   1.0833 

B 
          I       II      III       IV 
V2   1.0000    .0000    .0000    .0000 
V1   -.5255    .8508    .0000    .0000 
V4    .2624   -.1658    .9506    .0000 
V3    .2134   -.0430    .0655    .9738

Từ ma trận B cuối cùng, chúng ta thấy rằng V2, hầu hết các mục tương quan thô, đều đưa ra tất cả các mối tương quan của nó I. Mục tương quan thô tiếp theo sẽ xử lý V1tất cả các mối tương quan của nó, ngoại trừ việc có V2, trong II; và như thế.


Một quyết định khác có thể là tính toán nhiều hệ số tương quan cho mỗi mục và xếp hạng dựa trên mức độ của nó. Nhiều tương quan giữa một mặt hàng và tất cả các mặt hàng khác tăng lên khi mặt hàng tương quan nhiều hơn với tất cả chúng nhưng chúng tương quan ít hơn với nhau. Các hệ số tương quan nhiều bình phương tạo thành đường chéo của ma trận hiệp phương sai hình ảnh được gọi là , trong đó là ma trận đường chéo của các đường chéo của đường chéo của .SR1S2S+RSR1


Cảm ơn bạn rất nhiều vì câu trả lời công phu này, nhưng tôi sợ rằng tôi đã nói sai vấn đề của mình. Tôi rất chắc chắn rằng bài viết của bạn được sử dụng cho người khác và do đó bỏ phiếu! Cảm ơn!
Chris

1
@Ray, cảm ơn bạn đã chú ý để phát hiện ra một sai sót.
ttnphns

3

Đây là giải pháp của tôi cho vấn đề. Tôi tính toán tất cả các kết hợp có thể có của k của n mục và tính toán các phụ thuộc lẫn nhau của chúng bằng cách chuyển đổi vấn đề theo lý thuyết đồ thị: Đồ thị hoàn chỉnh nào chứa tất cả các nút k có tổng cạnh nhỏ nhất (phụ thuộc)? Đây là một kịch bản python sử dụng thư viện networkx và một đầu ra có thể. Xin lỗi vì bất kỳ sự mơ hồ trong câu hỏi của tôi!

Mã số:

import networkx as nx
import itertools
import os

#Create new graph
G=nx.Graph()

#Each node represents a dimension
G.add_nodes_from([1,2,3,4,5,6,7,8,9,10,11])

#For each dimension add edges and correlations as weights
G.add_weighted_edges_from([(3,1,0.563),(3,2,0.25)])
G.add_weighted_edges_from([(4,1,0.688),(4,3,0.438)])
G.add_weighted_edges_from([(5,1,0.25),(5,2,0.063),(5,3,0.063),(5,4,0.063)])
G.add_weighted_edges_from([(6,1,0.063),(6,2,0.25),(6,3,0.063),(6,4,0.063),(6,5,0.063)])
G.add_weighted_edges_from([(7,2,0.25),(7,3,0.063),(7,5,0.125),(7,6,0.063)])
G.add_weighted_edges_from([(8,1,0.125),(8,2,0.125),(8,3,0.5625),(8,5,0.25),(8,6,0.188),(8,7,0.125)])
G.add_weighted_edges_from([(9,1,0.063),(9,2,0.063),(9,3,0.25),(9,6,0.438),(9,7,0.063),(9,8,0.063)])
G.add_weighted_edges_from([(10,1,0.25),(10,2,0.25),(10,3,0.563),(10,4,0.125),(10,5,0.125),(10,6,0.125),(10,7,0.125),(10,8,0.375),(10,9,0.125)])
G.add_weighted_edges_from([(11,1,0.125),(11,2,0.063),(11,3,0.438),(11,5,0.063),(11,6,0.1875),(11,7,0.125),(11,8,0.563),(11,9,0.125),(11,9,0.188)])

nodes = set(G.nodes())
combs = set(itertools.combinations(nodes,6))
sumList = []
for comb in combs:
    S=G.subgraph(list(comb))
    sum=0
    for edge in S.edges(data=True):
        sum+=edge[2]['weight']
    sumList.append((sum,comb))

sorted = sorted(sumList, key=lambda tup: tup[0])    

fo = open("dependency_ranking.txt","wb")

for i in range(0,len(sorted)):
    totalWeight = sorted[i][0]
    nodes = list(sorted[i][1])
    nodes.sort()
    out = str(i)+": "+str(totalWeight)+","+str(nodes)
    fo.write(out.encode())
    fo.write("\n".encode())

fo.close()

S=G.subgraph([1,2,3,4,6,7])
sum = 0
for edge in S.edges(data=True):
        sum+=edge[2]['weight']
print(sum)

Đầu ra mẫu:

0: 1.0659999999999998,[2, 4, 5, 7, 9, 11]
1: 1.127,[4, 5, 7, 9, 10, 11]
2: 1.128,[2, 4, 5, 9, 10, 11]
3: 1.19,[2, 4, 5, 7, 8, 9]
4: 1.2525,[4, 5, 6, 7, 10, 11]
5: 1.377,[2, 4, 5, 7, 9, 10]
6: 1.377,[2, 4, 7, 9, 10, 11]
7: 1.377,[2, 4, 5, 7, 10, 11]

Biểu đồ đầu vào: nhập mô tả hình ảnh ở đây

Biểu đồ giải pháp: nhập mô tả hình ảnh ở đây

Ví dụ về đồ chơi, k = 4, n = 6: Đồ thị đầu vào: nhập mô tả hình ảnh ở đây

Biểu đồ giải pháp: nhập mô tả hình ảnh ở đây

Tốt,

Cơ đốc giáo


1
Đây có thể là một giải pháp tốt. Nhưng để đánh giá cao nó, người ta muốn xem chính biểu đồ (ma trận) và giải pháp dưới dạng biểu đồ. Không chỉ mã và đầu ra.
ttnphns

@ttnphns: Tôi đã thêm các ô của đồ thị kết quả và một ví dụ về đồ chơi.
Chris

@Chris Cảm ơn bạn đã ghi lại giải pháp của bạn. Bạn có thể thêm một hoặc hai câu về việc này mất bao lâu để chạy và cách nó chia tỷ lệ với số lượng nút / kích thước không?
Casimir

@Casimir: lời xin lỗi của tôi vì không bao gồm thông tin này trả trước. Tuy nhiên, tại thời điểm này, bài đăng này đã> 5 tuổi và tôi không có thông tin trong tay nữa. Xin vui lòng sao chép và dán mã và ước tính thời gian chạy áp dụng hoặc lý thuyết - Tôi đánh giá cao việc bổ sung vào bài viết.
Chris

1
Vì vậy, có thể đáng nói đến là trong trường hợp số lượng kích thước là hàng trăm hoặc thậm chí hàng nghìn, phương pháp này không khả thi. Nhưng vẫn là một cách tuyệt vời để giải quyết điều này cho kích thước vấn đề nhỏ!
Casimir

2

Tìm của mục có tương quan cặp đôi ít nhất: Vì tương quan của câu giải thích về mối quan hệ giữa hai chuỗi, nên giảm thiểu tổng bình phương tương quan cho các mục tiêu của bạn . Đây là giải pháp đơn giản của tôi.kn0.60.36k

Viết lại ma trận tương quan của bạn thành ma trận bình phương tương quan. Tính tổng bình phương của mỗi cột. Loại bỏ cột và hàng tương ứng với tổng lớn nhất. Bây giờ bạn có ma trận . Lặp lại cho đến khi bạn có ma trận . Bạn cũng có thể chỉ giữ các cột và các hàng tương ứng với tổng nhỏ nhất. So sánh các phương thức, tôi thấy trong một ma trận với và chỉ có hai mục có tổng gần được giữ và loại bỏ khác nhau.n×n(n1)×(n1)k×kkn=43k=20


1
Tôi đã thử phương pháp này và so sánh với phương pháp đồ thị tìm kiếm mọi sơ đồ con và trong khi phương pháp này không cung cấp câu trả lời tối ưu nhất, nó cung cấp một trong 5 kết hợp tốt nhất và tất nhiên là nhanh hơn nhiều.
SamFisher83
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.