2016-04-04 34 views
5

R, Ben büyük bir matris (127 sütun 39.146166 satır) ile çalışıyorum ve üzerinde bir çok işlem ile bellek sorunları yaşıyorum. Matristeki girdilerin yaklaşık% 35'inin sıfırdan farklı olduğunu ve geri kalanların sıfır olduğunu belirledim. Bu seyrek, R'nin seyrek matris sınıflarından birini kullanarak bu matrisi temsil eden bir hafızayı kurtaracak kadar az mıdır? Bir matrisin ne zaman nadiren temsil edildiğini belirlemek için iyi bir başparmak kuralı nedir?Bir matrisin ne kadar seyrek olması, seyrek olarak temsil edilmeye değer mi?

+1

[Bu makale] (http://www.johnmyleswhite.com/notebook/2011/10/31/using-sparse-matrices-in-r/) yardımcı olabilir. – nrussell

cevap

2

Seyrek temsilin çok daha kompakt olacağını düşünmüyorum. Her sayısal öğe için örtük sıfır dışında üç sayıya ihtiyacınız var. Bu yüzden bunlardan ikisi 4 bayt tamsayı olsa bile, bellekteki alan "seri" depolama stratejisinden daha büyük olacaktır.

Bu gerekçeyle,% 50'nin üzerindeki herhangi bir şey daha fazla depolama alanı alacaktır, ancak SF Bay'ın altındaki bir iPhone'dan gönderiyorum, bu nedenle 'object.size' ile test edilemez.

+0

Bir dizi seyrek matris formatı vardır ve bunların hepsi sıfır olmayan giriş başına 3 sayı gerektirir. Örneğin, bu biçim benim durumum için yaklaşık 2 gerektirir: http://netlib.org/linalg/html_templates/node92.html –

+0

@RyanThompson: Bu biçim iki vektör gerektirir, iki değil –

+0

Yalnızca bu vektörlerin ikisinin her biri için bir girişi vardır. veri noktası. Son vektörün her bir sütun için yalnızca bir unsuru vardır, bu da benim durumumda göz ardı edilebilir. –