[upstream-challenge] [Anul 4] Apache Mahout 1156

Dan Filimon dfilimon at apache.org
Thu May 9 11:57:59 EEST 2013


Acest commit [1] rezolvă issue-ul [2] și este primul din seria
commit-urilor mai consistente care alcătuiesc proiectul meu de licență.

Acest patch adaugă clase pentru rezolvarea problemei determinării celor mai
apropiați k vecini (k-nearest-neighbor) folosind 3 algoritmi (1 brute
force, și 2 inteligenți).

Searcher și UpdatableSearcher sunt clasele abstracte de bază care definesc
ce face un nearest neighbor searcher.
- BruteSearcher implementează căutarea căutând prin toți vecinii și
determinând vecinul la distanță minima evaluând metrica de distanță de
fiecare dată.
- ProjectionSearcher și FastProjectionSearcher funcționează pe (aproape)
aceeași idee, implementată în două moduri.

Se bazează pe ideea proiecțiilor aleatoare: alegând un vector arbitrar și
proiectând toți vectorii pe acel vector (prin calculul produsului scalar),
inclusiv vectorul de căutat, punctele apropiate în spațiul original vor fi
apropiate și în spațiul proiectat.

Dar, punctele mai îndepărtate pot fi apropiate prea mult după proiecție și
de-aceea se folosec mai mulți vectori în "baza de proiecție" și se caută
printre produsele scalare binar (ele sunt doar numere reale).
Astfel, ne putem uita într-o vecinătate a proiecției vectorului căutat și
probabil vom găsi vectori apropiați și în spațiul orginal.

Diferența dintre abordări este că ProjectionSearch ține rezultatele
produselor scalare în mulțimi sortare (TreeMultisets) și
FastProjectionSearch ține rezultatele în vectori sortați.

[1]
https://github.com/apache/mahout/commit/873e3a05ce24e7e4f976ea679325f58712170130
[2] https://issues.apache.org/jira/browse/MAHOUT-1156
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rosedu.org/pipermail/upstream-challenge/attachments/20130509/5c6fcab3/attachment.html>


More information about the upstream-challenge mailing list