<div dir="ltr"><div style>Acest commit [1] rezolvă issue-ul [2] și este primul din seria commit-urilor mai consistente care alcătuiesc proiectul meu de licență.</div><div style><br></div><div style>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).</div>
<div style><br></div><div style>Searcher și UpdatableSearcher sunt clasele abstracte de bază care definesc ce face un nearest neighbor searcher.</div><div style>- 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ă.</div>
<div style>- ProjectionSearcher și FastProjectionSearcher funcționează pe (aproape) aceeași idee, implementată în două moduri.</div><div style><br></div><div style>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.</div>
<div style><br></div><div style>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).</div>
<div style>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.</div><div style><br></div><div style>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.</div>
<div style><br></div>[1] <a href="https://github.com/apache/mahout/commit/873e3a05ce24e7e4f976ea679325f58712170130">https://github.com/apache/mahout/commit/873e3a05ce24e7e4f976ea679325f58712170130</a><br><div>[2] <a href="https://issues.apache.org/jira/browse/MAHOUT-1156">https://issues.apache.org/jira/browse/MAHOUT-1156</a></div>
</div>