Penyaringan kolaboratif hanya menggunakan preferensi grup dengan minat yang sama dan pengalaman umum untuk merekomendasikan informasi yang diminati pengguna. Individu menanggapi informasi tersebut pada tingkat yang cukup besar (seperti peringkat) melalui mekanisme kerja sama dan mencatatnya untuk mencapai tujuan penyaringan untuk membantu orang lain menyaring informasi. Responsnya tidak selalu terbatas pada catatan informasi yang sangat tertarik, dan catatan informasi yang sangat tidak tertarik juga sangat penting.
Penyaringan kolaboratif dapat dibagi menjadi peringkat atau penyaringan sosial. Penyaringan kolaboratif sangat populer di bidang internet global dengan kecepatan dan kekokohannya yang sangat baik.
Gagasan inti USERCF adalah untuk mensimulasikan kesamaan vektor berdasarkan data pengguna. Berdasarkan kesamaan ini, kami menemukan pengguna serupa dari pengguna yang ditentukan, dan kemudian merekomendasikan hal -hal yang telah dibeli oleh pengguna serupa tetapi tidak dibeli oleh pengguna yang ditentukan kepada pengguna yang ditentukan. Perhitungan gelar rekomendasi juga menggabungkan kesamaan antara pengguna serupa dan pengguna yang ditentukan dengan pengguna yang ditentukan. Perhatikan bahwa kami default untuk perilaku umpan balik tersembunyi pengguna, sehingga faktor pengaruh setiap item adalah 1 secara default.
Paket cn.csu.cfutils; impor java.util.hashmap; impor java.util.hashset; impor java.util.iterator; impor java.util.map; impor java.util.map. @Author Administrator * */kelas publik userCf {public static void main (string [] args) {/** * masukkan pengguna-> entri item Satu pengguna sesuai dengan beberapa item * koleksi ID ID Pengguna * A ABD * B AC * C Be * D CDE */Pemindai Pemindai = Pemindai New (System.in); System. = scanner.nextInt (); int [] [] sparseMatrix = int new [n] [n]; // Buat matriks jarang pengguna untuk perhitungan kesamaan pengguna [matriks kesamaan] peta <string, integer> UserItemlength = new HashMap <> (); // penyimpanan jumlah total item yang berbeda dengan setiap pengguna = hashmap: a 3 (); // penyimpanan jumlah total item yang berbeda dengan setiap pengguna = hashmap: () (); // penyimpanan jumlah total item yang berbeda dengan setiap pengguna = EG: a 3 HashMap<>();//Create an inverted table from items to users eg: a AB Set<String> items = new HashSet<>();//Auxiliary storage item collection Map<String, Integer> userID = new HashMap<>();//Auxiliary storage userID map Map<Integer, String> idUser = new HashMap<>();//Assisted to store the user map corresponding to each ID System.out.println ("Input Pengguna-Informasi Pemetaan ITEM: <EG: A AB D>"); Scanner.nextLine (); untuk (int i = 0; i <n; i ++) {// Proses N Data Input Pengguna Sequence dengan Space Intervals String [] USER_ITEM = SCANNER.NEXTINE (). SPLITE (");"); user_item.length; useritemlength.put (user_item [0], length-1); // mis: a 3 userid.put (user_item [0], i); // Buat korespondensi antara ID Pengguna dan IDUSER SPARSE IDUSER.put (i, User_Item [0]); // Buat item-user-user.put (i, User_Item [0]);/Buat item-user-user.put (i, User_Item [0]);/Buat item-user-user.put (i, User_Item [0]); ++) {if (items.contains (user_item [j])) {// Jika item yang sesuai telah disertakan-pengguna peta, langsung tambahkan pengguna yang sesuai itemusercollection.get (user_item [j]). Tambah (user_item [0]);} else {// Sebaliknya membuat koleksi item-pengguna yang sesuai. item.add (user_item [j]); itemusercollection.put (user_item [j], hashset baru <string> ()); // buat item-pengguna reverse reverse itemusercollection.get (user_item [j]). Tambah (user_item [0]);}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} [jarang] Set <entri <string, atur <string>> entryset = itemUserCollection.entryset (); iterator <entry <string, atur <string>> iterator = entryset.iterator (); while (iterator.hasnext ()) {set <string> commonAsers = iterator.next (). getValue (); untuk (string user_u: commonAsers) {for (string user_v: CommonAsers) {if (user_u.equals (user_v)) {lanjutan;} sparsematrix [userid.get (user_u)] [userid.get (user_v)] += 1;/ v}}}} System.out.println (useritemlength.toString ()); System.out.println ("Masukkan pengguna untuk rekomendasi: <mis. userid.get (rekomendasi); untuk (int j = 0; j <sparsematrix.length; j ++) {if (j! = RecomentaredUserId) {System.out.println (idUser.get (RecommendUserId)+"-"+IDUser.get (j)+"Kesamaan:"+sparsematrix [Rekomendasi DuserId] [j] /Math.sqrt (useritemlength.get (idUser.get (RecommendUseSerId))*useritemlength.get (idUser.get (j))));}} // Hitung Tingkat Rekomendasi Item dari Pengguna Rekomendasi yang Ditentukan untuk (Item String: Item) {// Transtraight Setiap item set <string> user = itemUserCollection.get (item); // Dapatkan semua koleksi pengguna untuk membeli item saat ini (! Users.contains (Rekomendasi) {// Jika pengguna yang direkomendasikan tidak membeli item saat ini, yang direkomendasikan, The Recommree (The Recommree (The Recomened) {// Jika pengguna yang direkomendasikan tidak membeli item saat ini, The Recommre = The Recommreation (The RecommRETasi (The Recommred) {( untuk (string user: user) {itemRecommendDegree+= sparseMatrix [userid.get (rekomendasi)] [userid.get (user)]/math.sqrt (useritemlength.get (rekomendasi)*UserIteMlength.get (user)); // Rekomendasi Gelar Perkalau} System.out.printlen. " Gelar: "+itemRecommendDegree);}} scanner.close ();}}hasil:
Masukkan nomor total pengguna: 6 input-Informasi pemetaan item: <mis: A ab d> aassdddjshgjh2415231424dsjkj dklsjf ladkjsfdf8g7878 = [sdfasd {dklsjf = [sdfasd {dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = [dklsjf = 8787=[df8g78dfg78], ladkjsf=[dsjkj]}{aassdd=0, df8g78dfg78=1, 48787=1, 2415231424=0, djshgjh=0, dsjkj=2}Input the user for Rekomendasi: <EG: A> AASSDD0AASSDD-DJSHGJH Kesamaan: Nanaassdd-2415231424 Kesamaan: Nanaassdd-DSJKJ Kesamaan: Nanaassdd-DF8G78DFG78 Kesamaan: nanaassdd-nanaassdd: nanAs-nant. Item SDFASD untuk gelar AASSDD yang direkomendasikan: nantthe item 8787 untuk gelar AASSDD yang direkomendasikan: nantthe item ladkjsf untuk gelar AASSDD yang direkomendasikan: NANMeringkaskan
Di atas adalah seluruh konten artikel ini tentang pemrograman Java untuk mengimplementasikan contoh kode algoritma yang disarankan kolaboratif berbasis pengguna. Saya harap ini akan membantu semua orang. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!