สเปกตรัมโดยประมาณของเมทริกซ์ขนาดใหญ่


14

ฉันต้องการคำนวณสเปกตรัม ( ค่าลักษณะเฉพาะทั้งหมด ) ของเมทริกซ์กระจัดกระจายขนาดใหญ่ (หลายแสนแถว) นี่มันยาก.

ฉันยินดีที่จะชำระสำหรับการประมาณ มีวิธีการประมาณการทำเช่นนี้?

ในขณะที่ฉันหวังว่าจะได้คำตอบทั่วไปสำหรับคำถามนี้ฉันก็จะพึงพอใจกับคำตอบในกรณีเฉพาะดังต่อไปนี้ เมทริกซ์ของฉันคือLaplacian ปกติของกราฟขนาดใหญ่ ค่าลักษณะเฉพาะจะอยู่ระหว่าง 0 ถึง 2 โดยมีกลุ่มใหญ่เป็นกลุ่มประมาณ 1


เมทริกซ์กระจัดกระจายหรือหนาแน่นหรือไม่?
Aron Ahmadia

เมทริกซ์นั้นหร็อมแหร็ม ฉันได้แก้ไขคำถามเพื่อสะท้อนสิ่งนี้
MRocklin

ทำไมคุณถึงต้องการค่าลักษณะเฉพาะทั้งหมด นี่เป็นสิ่งที่เลวร้ายในระดับสากลที่ต้องทำเมื่อคุณมีเมทริกซ์เบาบางหรือมีโครงสร้างดังนั้นจึงเป็นเรื่องสำคัญที่คุณจะต้องรู้ว่าคุณจะใช้มันอย่างไร
Jed Brown

สเปกตรัมของ laplacian กราฟแสดงข้อมูลสำคัญที่ฉันต้องการตรวจสอบ ฉันไม่ต้องการพวกเขาทั้งหมดฉันแค่ต้องรู้ว่าพวกเขาอยู่ที่ไหน
MRocklin

คำตอบ:


15

หากกราฟของคุณไม่ได้ถูกบอกทิศทาง (อย่างที่ฉันสงสัย) เมทริกซ์นั้นสมมาตรและคุณไม่สามารถทำอะไรได้ดีไปกว่าอัลกอริธึม Lanczsos (ด้วยการเลือก reorthogonalization หากจำเป็นเพื่อความมั่นคง) เนื่องจากสเปกตรัมเต็มรูปแบบประกอบด้วยหมายเลข 100,000 ฉันขอให้คุณสนใจความหนาแน่นของสเปกตรัมเป็นหลัก

ในการรับค่าความหนาแน่นสเปกตรัมโดยประมาณให้ใช้สเปกตรัมของพื้นที่ย่อย Krylov ชั้นนำที่มีขนาด 100 หรือมากกว่านั้นและแทนที่ความหนาแน่นแบบไม่ต่อเนื่องด้วยรุ่นที่ปรับให้เรียบ

Krylov สเปกตรัมชั้นนำจะมีการแก้ไขค่าลักษณะเฉพาะที่แยกได้ดี (ควรมีอยู่) ใกล้เคียงกับค่าลักษณะเฉพาะในตอนท้ายของสเปกตรัม nonisolates และค่อนข้างสุ่มในระหว่างการกระจายซึ่งฟังก์ชันการแจกแจงสะสมคล้ายกับสเปกตรัมจริง . มันจะรวมเข้าด้วยกันในเลขคณิตที่แน่นอนหากขนาดขยายตัว (ถ้าผู้ประกอบการของคุณมีมิติไม่สิ้นสุดนี่จะยังคงเป็นเช่นนั้นและคุณจะได้ฟังก์ชันอินทิกรัลความหนาแน่นสเปกตรัมที่แท้จริงบนสเปกตรัมต่อเนื่อง)


สเปคตรัมของ Krylov ชั้นนำจะไม่เป็นค่าลักษณะเฉพาะที่ใหญ่ที่สุด 100 รายการหรือ ฉันสนใจในการกระจายตัวของค่าลักษณะปานกลางและขนาดเล็กที่สุดด้วย
MRocklin

1
@Mockock: ไม่ฉันเติมคำตอบเพื่อให้รายละเอียดเพิ่มเติม
Arnold Neumaier

6

คำตอบที่อาร์โนล Neumaier จะหารือในรายละเอียดเพิ่มเติมในส่วน 3.2 ของกระดาษ"ใกล้เคียงกับสเปกตรัมความหนาแน่นของเมทริกซ์ขนาดใหญ่" โดยหลินหลิน Yousef ซาดและ Chao Yang (2016)

วิธีการอื่นยังกล่าวถึง แต่การวิเคราะห์เชิงตัวเลขในตอนท้ายของกระดาษแสดงให้เห็นว่าวิธีการ Lanczos มีประสิทธิภาพดีกว่าทางเลือกเหล่านี้


4

หากคุณโอเคกับความคิดเกี่ยวกับสิ่งที่ไม่ใช่ค่าลักษณะเฉพาะ แต่ฟังก์ชั่นที่ในบางแง่มุมยังคงบอกคุณบางอย่างเกี่ยวกับสเปกตรัมฉันคิดว่าคุณควรตรวจสอบงานบางส่วนของ Mark Embree ที่ Rice University


2

นี่เป็นอีกวิธีในการแยกแยะสเปกตรัม

Avk=λkvkA

S(ω)=kπ1σσ2+(λkω)2=σπTr[σ2+(ωA)2]1
S(ω)=σπzT[σ2+(ωA)2]1z
z+11σω[σ2+(ωA)2]1z can be computed for example with the conjugate gradient method, or sparse LU on [ω+iσA]1[ωiσA]1 to minimize fill-in. This allows estimation of S(ω) also for large matrices. In practice, it seems the CG solution doesn't need to be very accurate, and neither are many vectors necessary in computing the average. This may depend on the problem.

The above appears to weigh parts of the spectrum more evenly than a similarly smeared Krylov spectral density --- try diag(linspace(0, 1, 150000)) --- although maybe there is a way to correct for this?. This is somewhat similar to the pseudospectral approach, but the result indicates the (smeared) number of eigenvalues in the vicinity to point ω, rather than the inverse distance to the nearest eigenvalue.

EDIT: A better performing alternative for computing the above quantity is to compute Chebyshev moments (via similar stochastic evaluation as above) and then reconstruct the spectral density from them. This requires neither matrix inversions nor separate computations for each ω. See http://theorie2.physik.uni-greifswald.de/downloads/publications/LNP_chapter19.pdf and references therein.


0

See the paper "On Sampling-based Approximate Spectral Decomposition" by Sanjiv Kumar, Mehryar Mohri & Ameet Talwalkar (ICML 2009.). It uses sampling of columns of your matrix.

Since your matrix is symmetric you should do the following:

Let A be your n*n matrix. You want to reduce the computation of the eigenvalues of an n*n matrix to the computation of the eigenvalues of an k*k matrix. First choose your value of k. Let's say you choose k=500, since you can easily compute the eigenvalues of a 500*500 matrix. Then, randomly choose k columns of the matrix A. Contruct the matrix B that keeps only these columns, and the corresponding rows.

B = A(x,x) for a random set of k indexes x

B is now a k*k matrix. Compute the eigenvalues of B, and multiply them by (n/k). You now have k values which are approximately distributed like the n eigenvalues of A. Note that you get only k values, not n, but their distribution will be correct (up to the fact that they are an approximation).


-1

You can always use the Gershgorin circle Theorem bounds to approximate the eigenvalues.

If the off-diagonal terms are small, the diagonal itself is a good approximation of the spectrum. Otherwise if you end up with an approximation of the eigenspace (by other methods) you could try to express the diagonal entries in this system. This will lead to a matrix with smaller off-diagonal terms and the new diagonal will be a better approximation of the spectrum.


Gerschgoring gives no aprroximations but error bounds, so is irrelevant here. Moreover, using your method on a sparse matrix would require a dense eigenvector matrix, which is impossible to store for the OPs problem.
Arnold Neumaier

As I said, the diagonal is itself an approximation of the spectrum with the error bounds given by the Gershgorin circle theorem, of course Gershgorin error bounds are not approximations. The diagonal will be a good approximation if the off-diagonal terms are small, wich I believe is the case since OP said that matrix is sparse.
FKaria

5
Most sparse matrices arising in practice have some significant off-diagonal elements in each row and column, which makes the diagonal very poor approximations (e.g., for a Laplacian of a regular graph the diagonal is constant), and the error bounds useless.
Arnold Neumaier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.