Le filtrage collaboratif utilise simplement les préférences d'un groupe ayant des intérêts similaires et une expérience commune pour recommander des informations que les utilisateurs sont intéressées. La réponse n'est pas nécessairement limitée aux enregistrements d'informations particulièrement intéressés, et les enregistrements d'informations particulièrement non intéressés sont également très importants.
Le filtrage collaboratif peut être divisé en notation ou filtrage social. Le filtrage collaboratif est très populaire dans le domaine mondial de l'Internet avec son excellente vitesse et sa robustesse.
L'idée principale de l'USERCF est de simuler la similitude des vecteurs en fonction des données utilisateur. Sur la base de cette similitude, nous trouvons des utilisateurs similaires de l'utilisateur spécifié, puis recommandons des choses que les utilisateurs similaires ont achetés mais pas achetés par l'utilisateur spécifié à l'utilisateur spécifié. Le calcul du degré de recommandation combine également la similitude entre les utilisateurs similaires et l'utilisateur spécifié à l'utilisateur spécifié. Notez que nous par défaut le comportement de rétroaction masquée de l'utilisateur, donc le facteur d'influence de chaque élément est 1 par défaut.
Package CN.CSU.CFUTILS; Importer Java.util.hashmap; Importer Java.util.hashset; Importer Java.util.iterator; Importer Java.util.map; Importer Java.util.map.entry; Importer Java.util.scanner; Importer Java.util.Set; / ** @Author Administrator * * / public class userF {public static void main (String [] args) {/ ** * Entrez l'utilisateur -> Entrée d'article Un utilisateur correspond à plusieurs éléments * Utilisateur ID Collection * Abd * b AC * c be * D cde * / scanner scanner = nouveau Scanner (System.in); System.out.println ("Entrée le numéro des utilisateurs totaux:"); Scanner.Nextint (); int [] [] SparsEmatrix = new int [n] [n]; // Créer une matrice clairsemée de l'utilisateur pour le calcul de la similitude de l'utilisateur [Matrix de similitude] Hashmap <> (); // Créer une table inversée à partir d'éléments aux utilisateurs, par exemple: un ensemble AB <string> items = new HashSet <> (); // Map de collection d'objets de stockage auxiliaire <String, Integer> userid = new hashmap <> (); // Auxiliary Storage Map UserId Map <Integer, String> idUser = newshmap <> (); // Assistant pour le stockage de la carte IDUSER = NEW HASHMAP <> (); // Assistant pour stocker le utilisateur pour les caractéristiques pour les utilisateurs pour être comprimé pour être comprimé pour être en correspondance pour les utilisateurs pour le porte-à-dire pour le porte-à-dire pour les utilisateurs pour le porte-à-dire pour les utilisateurs pour les utilisateurs pour les utilisateurs pour être à utiliser pour un IDSH pour le commentaire pour les utilisateurs pour les utilisateurs pour les utilisateurs pour les utilisateurs pour les utilisateurs pour le portefeuille pour les utilisateurs pour le porte-lin System.out.println ("Informations sur le mappage des éléments de l'entrée: <EG: A AB D>"); Scanner.NextLine (); pour (int i = 0; i <n; i ++) {// Process n Données d'entrée utilisateur en séquence avec des intervalles d'espace [] user_item = scanner.nextline (). user_item.length; userItemLength.put (user_item [0], longueur-1); // eg: a 3 userId.put (user_item [0], i); // Créer une correspondance entre l'ID utilisateur et la matrice clairsemée idUser.put (i, user_item [0]); // créer un tableau inverté par élément pour (int j = 1; j <j <j <j <j <j <j <j <j <j; j <j <j <j; j <j <j <j <j <j <j <j <j <j <j <j <j; j <j <j <j <j <j; j <j <j <j <j; j <j <j; j <j <j <j; j <j <j; j <j <j <J ++) {if (items.Contains (user_item [j])) {// Si l'élément correspondant a été inclus-user map, ajoutez directement le user userUserAnerllection.get (user_item [j]). Add (user_item [0]);} else {// sinon créer le Map correspondant de la collection de collecte de la collection de collection de mappes. items.add (user_item [j]); itemUserCollection.put (user_item [j], new hashset <string> ()); // Créer un élément - Utiliser la relation inverse itemUserOllection.get (user_item [j]). Add (user_item [0]);}}} [SPARSE] SET <Entrée <String, SET <String >>> EntrySet = itemUserCollection.EntrySet (); iterator <entrée <String, set <string >>> iterator = entryset.iterator (); while (iterator.hasnext ()) {set <string> CommunUsers = iterator.next (). getValue (); pour (String user_u: Commonusers) {for (String user_v: Commonusers) {if (user_u.equals (user_v)) {continu;} sparsematrix [userrid.get (user_u)] [userrid.get (user_v)] + = 1; // calculer le nombre total d'éléments qui ont une rétroaction positive de l'utilisateur et de l'utilisateur) + = 1; // calculer le nombre total d'éléments qui ont une rétroaction positive à la fois US et User et User)] + = 1; // Calculez le nombre total d'articles qui ont une rétroaction positive à la fois US et User et User)] v}}}} System.out.println (userItemLength.ToString ()); System.out.println ("Entrez l'utilisateur pour recommandation: <par exemple: a>"); String recommandeser = scanner.nextline (); System.out.println (userrid.get (recommandée)); // Calculer la similitude entre les utilisateurs [Cosine similitude]. userId.get (RecomderUser); pour (int j = 0; j <sparsematrix.length; j ++) {if (j! = RecommanderUserId) {System.out.println (iDuser.get (RecomderUserid) + "-" + idUser.get (J) + "Similité:" + SparsEmatrix [recommander DUSERID] [j] /math.sqrt (userItemLength.get (idUser.get (RecomderUserId)) * UserItemLength.get (idUser.get (j))));}} // calculer Le degré de recommandation de l'article de l'utilisateur spécifié de l'utilisateur recommandé pour (String Item: items) {// Transtraight chaque jeu d'éléments <string> utilisateurs = itemUserCollection.get (article); // Obtenez toutes les collections d'utilisateurs pour acheter l'article actuel si (! Users.Contains (recommandUser)) {// Si l'utilisateur recommandé n'achète pas l'élément actuel, le diplôme de recommandation est effectué un élément doublé DoubleReCredDeder = 0. Pour (String User: Users) {itemRecomMendDegree + = SparsEmatrix [userid.get (recommander)] [userId.get (user)] / math.sqrt (userItemLength diplôme: "+ itemRecomMendDegree);}} scanner.close ();}}résultat:
Entrez le nombre total d'utilisateurs: 6input utilisateur - INFORMATIONS DE MAPPAGE ITEMS: <EG: A AB D> AASSDDDJSHGJH2415231424DSJKJ DKLSJF LADKJSFDF8G78DFG78 8787 48787 SDFASD {DKLSJF = [DSJKJJ] 8787 = [df8g78dfg78], ladkjsf = [dsjkj]} {aassdd = 0, df8g78dfg78 = 1, 48787 = 1, 2415231424 = 0, djshgjh = 0, dsjkj = 2} Entre l'utilisateur pour Recommandation: <par exemple: a> aassdd0aassdd - djshgjh similitude: nanaassdd - 2415231424 similitude: nanaassdd - ddjkj similitude: nanaassdd - df8g78dfg78 similitude: nanaassdd - 48787 similitude: nant the item dklsjf for aash's recommande: SDFASD pour le diplôme recommandé d'AassDD: Nanthe Article 8787 pour le diplôme recommandé d'Aassdd: Nanthe Article Ladkjsf pour le diplôme recommandé d'AassDD: NANRésumer
Ce qui précède est l'intégralité du contenu de cet article sur la programmation Java pour implémenter des exemples de code d'algorithme collaboratif basé sur l'utilisateur. J'espère que ce sera utile à tout le monde. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!