Die kollaborative Filterung verwendet lediglich die Vorlieben einer Gruppe mit ähnlichen Interessen und gemeinsamen Erfahrung, um Informationen zu empfehlen, an denen Benutzer interessiert sind. Einzelpersonen reagieren auf die Informationen in beträchtlicher Ausmaß (z. B. Bewertung) durch kooperative Mechanismen und zeichnen Sie auf, um den Zweck der Filterung zu erreichen, um anderen Informationen zu filtern. Die Antwort ist nicht unbedingt auf die besonders interessierten Informationen beschränkt, und die besonders uninteressierten Informationen sind ebenfalls sehr wichtig.
Die kollaborative Filterung kann in Bewertung oder soziale Filterung unterteilt werden. Die kollaborative Filterung ist im globalen Internetfeld mit hervorragender Geschwindigkeit und Robustheit sehr beliebt.
Die Kernidee von UserCF besteht darin, die Vektorähnlichkeit basierend auf Benutzerdaten zu simulieren. Basierend auf dieser Ähnlichkeit finden wir ähnliche Benutzer des angegebenen Benutzers und empfehlen dann Dinge, die ähnliche Benutzer vom angegebenen Benutzer dem angegebenen Benutzer gekauft, aber nicht gekauft haben. Die Berechnung des Empfehlungsabschlusses kombiniert auch die Ähnlichkeit zwischen ähnlichen Benutzern und dem angegebenen Benutzer mit dem angegebenen Benutzer. Beachten Sie, dass wir standardmäßig zum versteckten Feedback -Verhalten des Benutzers standardmäßig sind, sodass der Einflussfaktor jedes Elements standardmäßig 1 ist.
Paket cn.csu.cfutils; import Java.util.hashMap; Import Java.util.hashset; Import Java.util.iterator; Import Java.util.map; Import Java.util.map.Entier; @Author Administrator * * */public class usercf {public static void main (String [] args) {/** * Benutzer eingeben-> Elementeintrag Ein Benutzer entspricht mehreren Elementen * Benutzer-ID-ID-Sammlung von Elementen * a ABD * b ac * c be * d cde */scanner scanner = new scanner (system.in). scanner.nextint (); int [] [] sparsematrix = new int [n] [n]; // Erstellen einer Benutzer -Sparse -Matrix für die Berechnung der Ähnlichkeitsähnlichkeit [Ähnlichkeitsmatrix] MAP <String, Integer> BenutzerItemLength = new Hashmap <> (); // Speichern Sie die Gesamtzahl der jeweiligen Elemente, die jeweils zu einer beliebigen Benutzern sind. HashMap <> (); // Erstellen Sie eine invertierte Tabelle aus Elementen an Benutzer, z. System.out.println ("Eingabebenutzer-iTems-Zuordneninformationen: <eg: a ab d>"); scanner.nextline (); für (int i = 0; i <n; i ++) {// Prozess n Benutzereingabedaten in Sequenz mit Space Intervals String [] user_item = scanner.nextline (). Aufteilung (");"); Int Länge = Länge = Länge = Länge =); Int Länge = Länge = Länge =); ");"); ");");); "););); user_item.length; userItemLength.put (user_item [0], länge-1); // z. ++) {if (items.contains (user_item [j])) {// Wenn das entsprechende Element die Karte enthalten wurde, fügen Sie direkt den entsprechenden Benutzer itemuSercollection.get (user_item [j]) hinzu. items.Add (user_item [j]); [spärlich] set <Eintrag <String, set <string >>> Einstieg = itemUserCollection. while (iterator.hasnext ()) {set <string> CommonUsers = iterator.next (). getValue (); für (String user_u: CommonUsers) {für (String user_v: CommonUsers) {if (user_u.equals (user_v)) {continual;} sparsematrix [userId.get.get (user_u)] [userId.get (user_v)] += 1; // Die Gesamtsumme von Elementen berechnen, die sowohl von us als auch user -user -user -user -user -user -user -user -nummer berechnet haben, und user u und user berechnen. v}}}} system.out.println (userItemLength.toString ()); System.out.println ("Eingeben Sie den Benutzer zur Empfehlung: <eg: a>"); String empfohleneuser = scanner.nextline (); System.out.println (userId.get. userID.get (Empfehlungser); für (int j = 0; j <sparsematrix.length; j ++) {if (j! = = Empfehlungen) {system.out.println (iduser.get (Empfehlungen)+"-"+iduser.get (j)+"Ähnlichkeit:"+sparsematrix [Empfehlung duserID] [j] /math.sqrt (userItemLength.get (iduser.get (Empfehlungen))*userItemLength.get (iduser.get (j))));}} // berechnen Der Elementempfehlungsgrad des empfohlenen Benutzers für (String -Element: Elemente) {// transpraight Jeder Element set <string> user = itemUserCollection.get (Element); // Alle Benutzersammlungen für den Kauf des aktuellen Elements erhalten, wenn (! Users.Containes (Empfehlungsempfehlung). Für (String -Benutzer: Benutzer) {itemRecommendDegree+= sparsematrix [userId.get (Empfehlung)] [userId.get (Benutzer)]/Math.sqrt (userItemLength.get (Empfehlungsempfehlung)*userItemLength.get (Benutzer); // Empfehlungsgrad -Calculation} system.out.println (The Itel "+Itsel++Itsel+-Rection} system} system. Grad: "+itemRecommendDegree);}} scanner.close ();}}Ergebnis:
Geben Sie die Gesamtnutzernummer ein: 6Input-Benutzer-ITEMS-Zuordnungsinformationen: <EG: A AB D> Aassdddjshgjh2415231424dsjkj dklsjf Ladkjsfdf8g78dfg78 8787 48787 Sdfasd {DKLSJF = [DSJKJ], Sdfasd {DKLSJF = [DSJKJ], Sdfasd = [48787). 8787=[df8g78dfg78], ladkjsf=[dsjkj]}{aassdd=0, df8g78dfg78=1, 48787=1, 2415231424=0, djshgjh=0, dsjkj=2}Input the user for Empfehlung: <eg: a> aassdd0aassdd-djshgjh Ähnlichkeit: Nanaassdd-2415231424 Ähnlichkeit: Nanaassdd-Ddjkj Ähnlichkeit: nanaassdd-df8g78dfg78 Ähnlichkeit: Nanaassdddddddddddddddddddh. SDFASD für einen empfohlenen Abschluss von Aassdd: Nantthe Artik 8787 für einen empfohlenen Abschluss von Aassdd: Nantthe ArtikZusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die Java-Programmierung zur Implementierung der empfohlenen Beispiele für die benutzerbasierte kollaborative Filterung des Algorithmus. Ich hoffe, es wird für alle hilfreich sein. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!