A filtragem colaborativa simplesmente usa as preferências de um grupo com interesses semelhantes e experiência comum para recomendar informações sobre as quais os usuários estão interessados. Os indivíduos respondem às informações em um grau considerável (como classificação) por meio de mecanismos cooperativos e a registra o objetivo de filtrar para ajudar outras pessoas a filtrar informações. A resposta não se limita necessariamente aos registros de informações particularmente interessados, e os registros de informações particularmente desinteressados também são muito importantes.
A filtragem colaborativa pode ser dividida em classificação ou filtragem social. A filtragem colaborativa é muito popular no campo da Internet global, com sua excelente velocidade e robustez.
A idéia principal do UserCF é simular a similaridade vetorial com base nos dados do usuário. Com base nessa semelhança, encontramos usuários semelhantes do usuário especificado e, em seguida, recomendamos coisas que usuários semelhantes compraram, mas não comprados pelo usuário especificado para o usuário especificado. O grau de cálculo da recomendação também combina a semelhança entre usuários semelhantes e o usuário especificado com o usuário especificado. Observe que padrão o comportamento de feedback oculto do usuário, portanto o fator de influência de cada item é 1 por padrão.
pacote cn.csu.cfutils; importar java.util.hashmap; importar java.util.hashset; importar java.util.iterator; importar java.util.map; import java.util.map.entry; import java.util.ScaNner; importTa.util.Map.Entry; import Java.util.scanner; @Author Administrator * */public class UserCf {public static void main (String [] args) {/** * Digite o usuário-> entrada de item Um usuário corresponde a vários itens * Coleção de Id Id ID do usuário * a abd * b ac * c be * d cde */scanner scanner = new scanner (System.in); = scanner.NextInt (); int [] [] sparsematrix = new int [n] [n]; // cria uma matriz esparsa do usuário para cálculo de similaridade do usuário [matriz de similaridade] mapa <string, string> itens (string> itens correspondentes a cada usuário do usuário = new Hashmap <> (); Hashmap <> (); // Crie uma tabela invertida de itens para usuários, por exemplo: um conjunto AB <String> itens = new HashSet <> (); // mapa de coleta de itens de armazenamento auxiliar <string, inteiro> userID = new; hashmap <> (); hasthM; System.out.println ("Usuário de entrada-Items Mapping Information: <EG: A AB D>"); SCANNER.NEXTLINE (); para (int i = 0; i <n; i ++) {// Processar dados de entrada do usuário na sequência com intervalos de espaço [] user_item = = scanner.Nextline (). user_item.length; userItemLength.put (user_item [0], comprimento-1); // por exemplo: um 3 userID.put (user_item [0], i); // Crie uma correspondência entre o usuário do usuário e o jejum; ++) {if (items.contains (user_item [j])) {// Se o item correspondente tiver sido incluído no mapa do usuário, adicione diretamente o usuário correspondente itemuserCollection.get (user_item [j]). Add (user_item [0]);} caso contrário items.add (user_item [j]); itemuserCollection.put (user_item [j], novo hashset <string> ()); // crie item-user relation relationscollection.get (user_item [j]). add (user_item [0); [SPARSE] SET <ENTRADA <String, Set <String>>> EntrySet = ItemuserCollection.EntrySet (); Iterator <Entrada <String, Set <String>>> iterator = EntrySet.iterator (); while (iterator.hasNext ()) {set <tring> Commonusers = iterator.Next (). getValue (); para (string user_u: Commonusers) {for (string user_v: Commonusers) {if (user_u.equals (user_v)) {continuação;} sparsematrix [userid.get (user_u)] [userid.get.get (user_v)] += 1; v}}}} system.out.println (useritemLength.toString ()); System.out.println ("Insira o usuário para recomendação: <eg: a>"); stringsUser = scanner.NextLine (); System.out.println (userId.get.getUser); userID.get (RecomendUser); for (int j = 0; j <sparsematrix.length; j ++) {if (j! = RecomenduserId) {System.out.println (iDUSER.get (RecomenduserId)+"-"+iDuser.get (j)+"similaridade:"+Sparsematrix [Recomenden DuserID] [j] /math.sqrt (useritemlength.get (iDUSER.get (RecomenduserId))*useritemlength.get (iDUSER.get (j))));}}} // calcular O grau de recomendação do item do usuário especificado recomendou (string item: itens) {// transtrair cada conjunto de itens <string> usuários = itemuserCollection.get (item); // obtenha todas as coleções de usuários para compra do item atual, se o item de setor de uso do item. Para (String User: Usuários) {ItemRecommendDeree+= Sparsematrix [UserId.get (Recomenduser)] [UserID.get (User)]/Math.sqrt (UserItemLength.get (RecomendUser)*Useritemlength.get (User); // Cálculo da Recomendação+System.out.Println (User); grau: "+itemRecommendDegree);}} scanner.close ();}}resultado:
Entrada o número total de usuários: Usuário de 6 input-Items Mapping Information: <EG: A AB D> AASSDDDJSHGJH2415231424DSJKJ DKLSJF LADKJSFDF8G78DFG78 8787 48787 SDFASD {DKLSJF sdfasd = [48787], 8787 = [df8g78dfg78], ladkjsf = [dsjkj]} {aassdd = 0, df8g78dfg78 = 1, 48787 = 1, 2415231424 = 0, djshdnhkdnhkdnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhnhds Recomendação: <EG: A> AASSDD0AASSDD-DJSHGJH Semelhança: Nanaassdd-22415231424 Similaridade: Nanaassdd-dsjkj similaridade: Nanaassdd-df8g78dfg78 AMATHDENTIMEnTHD: NANASSDD-4SDD-DF8G78DFG7STH: Item sdfasd para o grau recomendado de AASSDD: Nantthe Item 8787 para o grau recomendado de AASSDD: Nantthe Item Ladkjsf para o grau recomendado do AASSDD: NANResumir
O exposto acima é o conteúdo inteiro deste artigo sobre a programação Java para implementar exemplos de código de algoritmo recomendados por filtragem colaborativa baseada no usuário. Espero que seja útil para todos. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!