공동 작업 필터링은 단순히 유사한 관심사와 일반적인 경험을 가진 그룹의 선호도를 사용하여 사용자가 관심있는 정보를 추천합니다. 개인 개인은 협력 메커니즘을 통해 정보에 상당한 정도 (등급)에 응답하고 다른 사람들을 필터링 할 수 있도록 필터링 목적을 달성하기 위해이를 기록합니다. 응답이 반드시 특히 관심이있는 정보의 기록으로 제한되는 것은 아니며, 특히 관심이없는 정보의 기록도 매우 중요합니다.
협업 필터링은 등급 또는 소셜 필터링으로 나눌 수 있습니다. 협업 필터링은 우수한 속도와 견고성으로 글로벌 인터넷 분야에서 매우 인기가 있습니다.
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.scanner; import java.util.set;/** a ac be a ac c cde * a abd b be a ac cde *. @Author 관리자 * */public class usercf {public static void main (string [] args) {/** * enter inter-> 항목 항목 하나 사용자는 여러 항목에 해당합니다 * 사용자 ID ID 모음 * A abd * b ac * c be * d cde */scanner (system.in); system.out.println (전체 사용자 번호 : // Scanner.nextInt (); int [] [] sparsematrix = new int [n] [n]; // 사용자 유사성 계산을위한 사용자 스파스 매트릭스 만들기 [유사성 매트릭스] map <문자열, integer> useritemlength = new Hashmap <> (); // 각 사용자 eg에 해당하는 총 다른 항목의 저장 <string >> news <string >> news <string >> hashmap <> (); // 항목에서 사용자에게 반전 된 테이블을 만듭니다 : ab 세트 <string> 항목 = new Hashset <> (); // auxiliary storage item collection map <string, integer> userid = new Hashmap <> (); // auxiliary storage userid map <integer, string> iDuser = new Hashmap <>); System.out.println ( "입력 사용자-확인 맵핑 정보 : <eg : a ab d>"); scanner.nextline (); for (int i = 0; i <n; i ++) {// space 간격으로 순서대로 사용자 입력 데이터 [] user_item = scanner.nextline (). 분할 ( "). user_item.length; useritemlength.put (user_item [0], longth-1); // eg : a userId.put (user_item [0], i); // 사용자 ID와 스파스 매트릭스 IDUSER.put (i, user_item [0]) 사이에 해당 부호를 만듭니다. ++) {if (items.contains (user_item [j])) {// 해당 항목이 포함 된 경우 사용자 맵이 포함 된 경우 해당 사용자 itemusercollection.get (user_item [j]). add (user_item [0]);} else {// 해당 항목 사용자 수집 맵을 만듭니다. items.add (user_item [j]); itemusercollection.put (user_item [j], new Hashset <string> ()); // 항목 생성-사용자 리버스 관계 itemusercollection.get (user_item [j]). add (user_item [0]);}}}} system.out.println (itemusercperction.toScrelection.toString) [sparse] set <eTtry <string, set <string >>> reptrySet.EntrySet (); iterator <string, set <string >>> iterator = rettricset.iterator (); commonUsers) {if (user_u.equals (user_v)) {계속;} sparsematrix [userId.get (user_u)] [userId.get (user_v)] += 1; v}}}}}}}}}}} system.out.println (useritemlength.toString ()); system.out.println ( "추천 : <eg : a>"); string 추천서 = scanner.nextline (); System.out.out.Println (userInd.get); userId.get (int j = 0; J <sparsematrix.length; j ++) {if (j! = 권장 사항) {system.out.println (iduser.get (costomuserid))+"-"+iduser.get (j)+"유사성 :"+sparsematrix [costeden duserid] [j] /math.sqrt (useritemlength.get (iduser.get (costomuserid))*useritemlength.get (iduser.get (j)));}} // 계산 (문자열 항목 : 항목) {// 각 항목 세트 <string> 사용자 = itemusercollection.get (item); // 현재 항목을 구매하기 위해 모든 사용자 컬렉션을 얻는다 (! users.contains (권장 사항)) user : user) {itemrecommendDegree+= sparsematrix [userId.get] [userId.get (user)]/math.sqrt (useritemlength.get (costomuser)*useritemlength.get (user)); // 추천 학위 계산} system.out.println ( "+item+"for "+iter+"for "+item+" 정도 : "+itemrecommendDegree);}} scanner.close ();}}결과:
총 사용자 번호를 입력 : 6input user-items 매핑 정보 : <EG : ab d> aassddjshgjh2415231424dsjkj dklsjf ladkjsfdf8g78dfg78 8787 48787 sdfasd {dklsjf = [dsjkj], sdfasd = [4878 8787 = [df8g78dfg78], ladkjsf = [dsjkj]} {aassdd = 0, df8g78dfg78 = 1, 48787 = 1, 2415231424 = 0, djshgjh = 0, dsjkj = 2} 사용자가 입력합니다. 권장 사항 : <eg : a> aassdd0aassdd-djshgjh 유사성 : nanaassdd--2415231424 유사성 : nanaassdd-dsjkj 유사성 : nanaassdd-df8g78dfg78 유사성 : nanaassdd--48787 유사성 : nantsdd의 권장 사항 : nantsjf for aassdd의 유사성 : AASSDD의 권장 학위를위한 항목 sdfasd : AASSDD의 권장 학위에 대한 항목 8787 : AASSDD의 권장 학위를위한 NANTTHE ITEM LADKJSF : NAN요약
위의 것은 사용자 기반 협업 필터링 권장 알고리즘 코드 예제를 구현하기위한 Java 프로그래밍에 대한이 기사의 전체 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!