Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Forma eficiente de manejar arrays de 10'000.000 cuadrados (https://www.clubdelphi.com/foros/showthread.php?t=35622)

mamcx 15-09-2006 18:43:40

Forma eficiente de manejar arrays de 10'000.000 cuadrados
 
Tengo,o mejor dicho, quiero manejar un algoritmo llamado SVD (singular value decomposition),al cual le necesito descargar una cantidad de tranquilamente 10' o mas millones de columnas por otros 10' o mas millones de filas. No estoy bromeando.

El codigo que he visto carga todo en memoria y euna chiquita de 10.000 por 10.000 se arrastra 500 MB de RAM, o sea,no me sirve.

Es para el buscador de MUTIS, generar cluster.

Estaba pensando en usar firebird con tablas pero no se si hay una mejor manera, obviamente que implique almacenaje porque en memoria es imposible.

Solo necesito almacenar decimales, nada mas.

La matriz es para operaciones de matrices (matematicas) que implica sumar, multiplicar, cosenos y demas...

seoane 15-09-2006 18:55:53

:eek: Si los datos a almacenar fueran bytes 10^14 son mas 90 TB de información, aun usando el almacenamiento en disco el volumen de datos es considerable. Espero que alguien te ayude, el problema parece interesante y me gustaría saber como solucionarlo :)

dec 15-09-2006 19:15:31

Hola,

Seoane sabe más que yo del tema y ha dado los datos precisos, pero, lo primero que me ha pasado por la cabeza ha sido eso: son tantos datos que, estén donde estén, ocuparán no poco... en memoria o donde sea...

Creo que habría que especificar un poco más. ¿Se trata de datos que van a estarse quietecitos? ¿Hay que "moverlos"? ¿Cada cuánto tiempo? En fin... voy a parar aquí y dejar a los expertos, no sea que meta la pata... :)

mamcx 15-09-2006 19:49:39

Lo que quiero al final es un sistema que genere clustering automatico, como en www.clusty.com (denle una busqueda)

Uno de los algoritmos mas prometedores es:

http://www.knowledgesearch.org/lsi/lsa_explanation.htm

Miren la explicacion.....

La trampa es que se hace una matriz de palabras VS documentos y se pone un valor que puede ser el numero de veces que aparece o un dato que lo da MUTIS.

Sobre ese valor, se corre SVD, que da una matriz lista. Sobre ella se corre la busqueda de palabra y luego se saca un top 10 de cluster.

Porque tan grande?

MUTIS es el fundamento de un buscador para LAN. Mi meta es poder indexar hasta 50 computadores con sus archivos, base de datos, correos, todo eso.

Supongamos que hay 50.000 archivos con informacion de texto x 50 computadores eso da unos 2'500.000 de documentos y que cada documento tenga unas 50 palabras (despues de quitarles las stop words y reducir los fonemas) 50*50.000*50 = 12'500.000.

Es muy bravo, lo se. El problema es que llevo como mas de 1 año buscando como hacer esto... pero todo el codigo que consigo es de cientificos que a) No se entiende b) Es absurdamente ineficiente, cuando se entiende... c) Otros frameworks me salen en Java que son muy monstruosos o de soluciones que no me convencen.

Hay un tipo frances que me remitio una tipa de MS del grupo de research del motor de busqueda de MS que dice tiene una solucion escalable y me mando algo de codigo en C y Perl, pero todavia no le veo como es que funciona...

En fin, la solucion ideal es un algoritmo que genere clusters, automaticos. O algo que me permita moler esa informacion...

mamcx 15-09-2006 19:55:03

Adicionalmente tengo la sensacion que hay una via mas simple... despues de leer sobre SVD y sus variantes, k-means y bayesian, pero carezco de la habilidad matematica para llegar a algo... es como una piquiña en la punta de la lengua pero no logro visualizar la solucion...

droguerman 15-09-2006 20:12:30

has revisado el algoritmo de Huffman creo te podria ayudar bastante

mamcx 15-09-2006 21:01:12

No veo como.

La "magia" de SVD es que autodescubre las asociaciones entre las palabras... leiste el articulo?

O si piensas que si aplica, como?


La franja horaria es GMT +2. Ahora son las 09:55:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi