2013-01-16 16 views
5

punktem odniesienia jest dla kraba (http://www.slideshare.net/marcelcaraciolo/crab-a-python-framework-for-building-recommender-systems strona-37)krab: dlaczego użytkownik krab UserBasedRecommender jest taki wolny?

 
Benchmarks Pure Python w/ Python w/ Scipy Dataset dicts and NumpyMovieLens 100k 15.32 s 9.56 s http://www.grouplens.org/node/73 Old Crab New Crab 

Jednak moim sprawa, muszę zająć więcej niż 30 minut, aby to zrobić, nie wiem powód

mój kod jest

model = MatrixPreferenceDataModel(recommend_data.data) 
similarity = UserSimilarity(model, pearson_correlation) 
recommender = UserBasedRecommender(model, similarity, with_preference=True) 
recommender.recommend("6") 

moje dane są NumpyMovieLens 100k, który zawiera ocen 100.000 z 1000 na 1700 użytkowników kino.

Odpowiedz

1

Kiedy ostatnio patrzyłem na Kraba nieco ponad rok temu, używało ono gęstych tablic, w których powinno używać się sparse matrices (np. scipy.sparse). To sprawiało, że był strasznie powolny, podobnie jak wieza pamięci. Właśnie rzuciłem okiem i wygląda na to, że Crab nie był aktualizowany przez prawie rok, więc sytuacja prawdopodobnie nadal jest taka sama.

+0

Więc znasz lepiej python UserBasedRecommender lib? – Tinyfool

+0

@ Tinyfool: nie, ale możliwe jest zhakowanie rzadkiej macierzy w Crab. Scipy ma rzadkie SVD ('scipy.sparse.linalg.svds'); scikit-learn ma k-NN z pewnym wsparciem dla rzadkich macierzy. –

1

Krab jest przeprojektowany. Manipulacja danymi będzie bardziej wydajna i mniej zależna od zewnętrznych bibliotek. Samo API zostanie uproszczone. Chcemy wkrótce wydać stabilną wersję, aby społeczność mogła być zaangażowana. Celem jest stworzenie ramy do wypełnienia tej luki w Pythonie. Projekt jest hostowany pod adresem https://github.com/python-recsys/crab.

Pomoc i sugestie są bardzo mile widziane.