共同フィルタリングは、同様の関心と一般的な経験を持つグループの好みを使用して、ユーザーが関心を持っている情報を推奨するだけです。応答は、特に興味のある情報の記録に必ずしも限定されておらず、特に興味のない情報の記録も非常に重要です。
共同フィルタリングは、評価またはソーシャルフィルタリングに分けることができます。コラボレーションフィルタリングは、優れた速度と堅牢性を備えたグローバルインターネットフィールドで非常に人気があります。
USERCFの中心的なアイデアは、ユーザーデータに基づいてベクトルの類似性をシミュレートすることです。この類似性に基づいて、指定されたユーザーの同様のユーザーを見つけ、同様のユーザーが購入したが、指定されたユーザーが指定されたユーザーに購入していないものを推奨します。推奨学位の計算は、同様のユーザーと指定されたユーザーの類似性を指定されたユーザーと組み合わせます。デフォルトでユーザーの隠されたフィードバック動作を行うため、各アイテムの影響要因はデフォルトで1になることに注意してください。
パッケージcn.csu.cfutils; import java.util.hashmap; import java.util.hashset; import java.util.iterator; import java.util.map; import java.util.map.entry; Import java.util.canner; import java.util.util.set; @author Administrator * */public class usercf {public static void main(string [] args){/** * enterユーザー - >アイテムエントリは複数のアイテムに対応します *ユーザーIDアイテムIDコレクション * a abd * b ac * c be * d cde */scanner scanner = new scanner(system.in); syste。 scanner.nextint(); int [] [] [] sparsematrix = new int [n] [n]; //ユーザーの類似性計算のためにユーザースパースマトリックスを作成します[類似性マトリックス]マップ<文字列、integer> useritemlength = new hashmap <>(); hashmap <>(); // hashmap <string> items = new Hashset <>(); // AB set <string>アイテムコレクションコレクションマップ<文字列> userid = new Hashmap <>(); // AuxiliaryストレージUserid Map Map <Integer、String> Iduser = new Hasmap <> sporting <>( System.out.println( "入力ユーザー - 項目マッピング情報:<eg:a ab d>"); scanner.nextline(); user_item.length; useritemlength.put(user_item [0]、length-1); // eg:a 3 userid.put(user_item [0]、i); // user idとスパースマトリックスiduser.put(i、user_item [0]); ++){if(items.Contains(user_item [j]))){//対応するアイテムが含まれている場合、対応するユーザーitemususercollection.get(user_item [j])。 items.add(user_item [j]); itemusercollection.put(user_item [j]、new hashset <string>()); // create item - user ructure resultion itemusercollection.get(user_item [j])。 [sparse] set <entry <string、set <string >>> entryset = itemusercollection.entryset(); iterator <entry <string、set <string >>> iterator = entryset.iterator(); while(iterator.hasnext()){set <string> commolusers = iterator.next()。getValue(); for(string user_u:commosursers){for(string user_v:commolusers){if(user_u.equals(user_v)){continue;} sparsematrix [userid.get(user_u)] [userid.get(user_v)] += 1; // v}}}} system.out.println(useritemlength.tostring()); system.out.println( "推奨事項のユーザーを入力:<eg:a>"); string busmenturuser = scanner.nextline(); system.out.println(userid.get(busmentionid); userid.get(adminceUser); for(int j = 0; j <sparsematrix.length; j ++){if(j!= adminceduserid){system.out.println(iduser.get(bedumentuserid)+" - "+iduser.get(j)+"類似性:"+sparsematrix [bosmeren duserid] [j] /math.sqrt(useritemlength.get(iduser.get(bedumentuserid))*useritemlength.get(iduser.get(j)));}} //計算指定されたユーザーの推奨の程度(文字列項目:項目)の推奨度{//各アイテムセット<string> users = itemusercollection.get(item); //現在のアイテムを購入するためのすべてのユーザーコレクションを取得するif(!users.contains(bedenceUser)){// for(string user:users){itemrecommenddegree+= sparsematrix [userid.get(bedumentuser)] [userid.get(user)]/math.sqrt(useritemlength.get(busementuser)*useritemlength.get(user)(user)(user)(user)(user)(user)(user));程度: "+itemRecomMendDegree);}} scanner.close();}}結果:
総ユーザー番号を入力します:6INPUTユーザー - アイタムマッピング情報:<eg:aassdddjshgjh2415231424dsjkj dklsjf ladkjsfdf8g78dfg78 8787 48787 sdfasd {dklsjf = [dsjkj7] 8787 = [df8g78dfg78]、ladkjsf = [dsjkj]} {aassdd = 0、df8g78dfg78 = 1、48787 = 1、2415231424 = 0、djshgjh = 0、dsjkj = 2}ユーザーの入力ユーザーの入力ユーザーの入力推奨事項:<eg:a AASSDDの推奨学位のためのSDFASD:nantthe item8787 aassddの推奨度:nantthe item ladkjsf for aassddの推奨程度:nan要約します
上記は、ユーザーベースの共同フィルタリング推奨アルゴリズムコードの例を実装するためのJavaプログラミングに関するこの記事の内容全体です。私はそれが誰にでも役立つことを願っています。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!