Совместная фильтрация просто использует предпочтения группы с аналогичными интересами и общим опытом, чтобы рекомендовать информацию, в которой заинтересованы пользователи. Люди реагируют на информацию в значительной степени (например, рейтинг) с помощью кооперативных механизмов и записывают ее для достижения цели фильтрации, чтобы помочь другим фильтровать информацию. Ответ не обязательно ограничивается записями информации, которая особенно заинтересована, и записи информации, которая особенно не заинтересована, также очень важны.
Совместная фильтрация может быть разделена на рейтинг или социальную фильтрацию. Совместная фильтрация очень популярна в глобальной области интернета с ее превосходной скоростью и надежностью.
Основная идея USERCF заключается в моделировании сходства вектора на основе пользовательских данных. Основываясь на этом сходстве, мы находим аналогичных пользователей указанного пользователя, а затем рекомендуем вещи, которые аналогичные пользователи купили, но не купили указанный пользователь указанному пользователю. Расчет степени рекомендации также объединяет сходство между аналогичными пользователями и указанным пользователем с указанным пользователем. Обратите внимание, что по умолчанию мы по умолчанию с скрытым поведением пользователя, поэтому коэффициент влияния каждого элемента по умолчанию составляет 1.
Пакет cn.csu.cfutils; import java.util.hashmap; import java.util.hashset; import java.util.iterator; импорт java.util.map; импорт java.util.map.entry; импорт java.util.scanner; import java. @author Administrator * */public class usercf {public static void main (string [] args) {/** * Введите пользователь-> Ввод элемента Один пользователь соответствует нескольким элементам * Коллекция идентификатора идентификатора пользователя * a abd * b ac * c be * d cde */scanner scanner = new Scanner (System.in); System.out.out.println («Входные пользователи number umbers umbers uptre-пользователи:"); scanner.nextint (); int [] [] sparsematrix = new int [n] [n]; // Создать пользовательскую Sparse Matrix для расчета сходства пользователей [Матрица сходства] карта <строка, Integer> userItemlength = new Hashmap <> (); // хранилище общее число различных элементов, соответствующих каждому пользователю: a 3 Map <string >> sticeRection >> sticeRection >> sticeRection >> sticeRection >> sticeRection >> sticeRectece sticeRectection >>. Hashmap <> (); // Создать инвертированную таблицу из элементов к пользователям, например: a ab set <string> items = new hashset <> (); // Сборник элементов вспомогательного хранения <строка, Integer> userId = new HashMap <> (); // Map Map Ships Sulty Sanyser = newSer = newhmap <> (););););) System.out.println («Пользователь пользователя ввода-items Информация о отображении: <EG: a ab d>»); scanner.nextline (); for (int i = 0; i <n; i ++) {// Процесс n входные данные пользователя в последовательности с пространственными интервалами string_item = scanner.nextline (). user_item.length; useritemlength.put (user_item [0], length-1); // Например: a 3 userId.put (user_item [0], i); // Создать переписку между идентификатором пользователя и редкой матрицей Matrix Maduser.put (i, user_item [0]); // create uSer in inemed table for for (int j = 1; ++) {if (item.contains (user_item [j]))) {// Если соответствующий элемент была включена, напрямую добавьте соответствующую пользователь itemusercollection.get (user_item [j]). Добавить (user_item [0]);} els items.add (user_item [j]); itemusercollection.put (user_item [j], новый хэшсет <string> ()); // Создать emet-user обратное отношение itemusercollection.get (user_item [j]). Добавить (user_item [0]);}}} system.out.println (itemusercollection.toString); [SPARSE] SET <entry <string, set <string >>> intrintSet = itemuserCollection.EntrySet (); iterator <entry <string, set <string >>> iterator = intrentset.iterator (); while (iterator.hasnext ()) {set <string> commanduresers = iterator.next (). getValue (); for (string user_u: usdaysers) {for (string user_v: commonurecers) {if (user_u.equals (user_v)) {продолжение;} sparsematrix [userId.get (user_u)] [userId.get (user_v)] += 1; // Рассчитайте общее количество элементов, которые имеют положительную подачу от обоих пользователей u и пользователя). v}}}} system.out.println (useritemlength.tostring ()); System.out.println («Введите пользователь для рекомендации: <EG: a>»); строка Рекомендовать = Scanner.Nextline (); System.out.println (пользовательский иуправляющий (рекомендуется); userId.get (рекомендации); for (int j = 0; j <sparsematrix.length; j ++) {if (j! = ReverseUserid) {System.out.println (uduser.get (ReverseUserid)+"-"+uduser.get (j)+"searnity:"+sparsematrix [Рекомендуется duserid] [j] /math.sqrt (useritemlength.get (uduser.get (recumentUserid))*useritemlength.get (iduser.get (j))));}} // Вычисление Степень рекомендации по рекомендации указанного пользователя для рекомендации пользователя для (String Item: элементы) {// Transraight Каждый набор элементов <string> users = itemusercollection.get (item); // Получить все коллекции пользователей для покупки текущего элемента, если (! users.contains (Рекомендователь)) {// Если рекомендуемый пользователь не покупает текущий элемент, вычисляющий рекомендации DoubleDemeRem. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.. Для (String пользователь: пользователи) {itemRecommendDegree+= sparsematrix [userId.get (reculeSer)] [userId.get (user)]]/math.sqrt (useritemlength.get (regreaterUser)*userItemlength.get (пользователь)); // Рекомендации по степени recordation} system.out.println ("iteme item); // Рекомендация"+Рекомендация "+Рекомендация"+Рекомендация "+Рекомендация"+Рекомендация "+"+Рекомендация "+"+Рекомендация "+"+Рекомендация ". Степень: "+itemrecommenddegree);}} scanner.close ();}}результат:
Введите общий номер пользователей: 6-input Пользователь-Информация о картировании ITEMS: <EG: A AB D> AASSDDDJSHGJH2415231424DSJKJ DKLSJF LADKJSFDF8G78DFG78 8787 48787 SDFASD {DKLSJF = [DSJKJ], SDFASD = SDFASD = SDFASD = SDFASD = SDFASD {DKLSJF = [DSJKJ], SDFASD {DKLSJF = [DSJKJ], SDFASD {DKLSJF = [DSJKJ]. 8787 = [df8g78dfg78], ladkjsf = [dsjkj]} {aassdd = 0, df8g78dfg78 = 1, 48787 = 1, 2415231424 = 0, djshgjh = 0, dsjkj = 2} Пользователь для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для пользователя для Рекомендация: <EG: A> AASSDD0AASSDD-DJSHGJH Сходство: NANAASSD-2415231424 Сходство: NANAASSDD-DSJKJ Сходство: NANAASSDD-DF8G78DFG78 Сходство: NANAASSDD-48787 Сходство: NANTTHE. DKLSJF. Предмет SDFASD для рекомендуемой степени AASSDD: NANTTHE ITEM 8787 для рекомендуемой степени AASSD: NANTTHСуммировать
Выше приведено все содержание этой статьи о программировании Java для реализации совместной фильтрации на основе пользователя. Рекомендуемые примеры кода алгоритма. Я надеюсь, что это будет полезно для всех. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!