Popis: |
U ovom radu opisani su sustavi preporučivanja, njihova upotreba, podskupine kao i metoda matrične faktorizacije koja predstavlja jedan od načina implementacije. Na početku rada je objašnjena problematika koja je dovela do potrebe za sustavima preporučivanja, a zatim su opisani osnovni tipovi samih sustava i postupci kojim se generiraju preporuke. Nakon toga je objašnjena metoda matrične faktorizacije koja upotrebom latentnih faktora gradi vektore sklonosti korisnika i predmeta prema određenim značajkama i tako smanjuje dimenzionalnost matrice korisnosti. Opisana je matematička podloga te metode uz objašnjenje procesa stohastičkog gradijentnog spusta i uporaba regularizacije u modelima. Na kraju teoretskog dijela, opisane su metode validacije kao što je unakrsna validacije i mjere točnosti poput RMSE i MAE. Zatim je objašnjena implementacija sustava koja se temelji na Python Surprise knjižnici, a ostvarena je u programskom jeziku Java. Također je opisan MovieLens skup podataka koji je sustav koristio pri radu. Na kraju su uspoređeni rezultati implementacije opisane u radu i sustava implementiranog u Surprise knjižnici. This paper describes recommendation systems, their use, subgroups as well as the method of matrix factorization, which is one of the ways of implementation. At the beginning of the paper, the problem that led to the need for recommendation systems is explained, and then the basic types of the systems themselves and the procedures by which recommendations are generated are described. After that, the method of matrix factorization is explained, which uses latent factors to build vectors of preferences of users and items according to certain characteristics and thus reduces the dimensionality of the utility matrix. The mathematical basis of this method is described with an explanation of the stochastic gradient descent process and the use of regularization in models. At the end of the theoretical part, validation methods such as cross-validation and accuracy measures such as RMSE and MAE are described. Then, the implementation of the system based on the Python Surprise library, which was realized in the Java programming language, is explained. The MovieLens data set used by the system in its operation is also described. Finally, the results of the implementation described in the paper and the system implemented in the Surprise library are compared. |