mahout 를 이용 하여 추천 엔진 demo 1 실현

5314 단어 Mahout
다음으로 이동: http://woshiwzy.iteye.com/blog/898115
==========================================================
이런 고 급 스 러 운 것들 을 배 우 는 것 은 때때로 정말 어떻게 운행 하 는 지도 모 르 고 코드 만 있다.
이 실험 을 하려 면 eclipse 에서 자바 프로젝트 를 만 든 다음 자바 파일 을 쓰 고 src 에서 mahout 을 만 듭 니 다.data. txt 데이터 파일 (코드 에서 지정 한 경로).그리고 mahout 버 전. tar. gz 압축 해제 디 렉 터 리 에 있 는 jar 패 키 지 를 가 져 오 면 실 행 됩 니 다.
실행 할 때 run as - > 자바 application 을 선택 하면 로 컬 디 렉 터 리 에 결과 파일 을 생 성 합 니 다. run as - > run on hadop 을 선택 하면 hdfs 에서 파일 을 생 성 합 니 다.
 
이 예 는 mahout in action 의 2.2.1 장 에 상세 하 게 소개 되 어 있다.제 블 로그 mahout in action 중국어 버 전에 있 을 거 예요. 먼저 보고 이 걸 하 는 게 좋 을 것 같 아 요.
==========================================================
필요 한 메타 데이터: (이 메타 데 이 터 는 보통 로그 파일 에서 나 와 야 합 니 다. 수량 이 많 을 수 있 습 니 다. 가끔 은 클 러 스 터 처리 가 필요 할 수도 있 습 니 다. 시간 이 있 으 면 다시 토론 하 겠 습 니 다.) 이 데 이 터 를 모 인터넷 서점 의 추천 엔진 으로 생각하면 첫 번 째 열 데 이 터 는 사용자 ID 로, 두 번 째 열 은 책 ID 로, 세 번 째 열 은 취향 정도 로 이해 할 수 있다.추천 엔진 은 메타 데 이 터 를 학습 하여 추천 능력 을 달성 하 는 것 입 니 다. 구체 적 으로 프로 그래 밍 에서 바로 DataMode 입 니 다. DataMode 에 대한 분석 을 통 해 합 리 적 인 결 과 를 얻 었 습 니 다. mahout 자체 에 복잡 한 통계학, 인공 신경 망, 기계 학습 관련 알고리즘 을 밀봉 하 였 습 니 다! 가설 C: \ \ \ mahoutdata. txt 의 내용 은 다음 과 같 습 니 다. 이 데 이 터 는 이번 데모 의 메타 데이터 입 니 다. 1,101,5.0 1,102,3.0 1,103,2.5 2,101,2.0 2,102,2.0 2,103,5.0 2,104,2.0 3,101,2.5 3,104,4.4 3,105,4.5 3,107,5.0 4,101,5.0 4,102,3.0 4,103,4.5 4,105,4.0 5,101,4.0 5,102,4.0 5,103,2.0 5,104,4.0 5,105,4.5 5,106,4.0 다음은 코드. 
import org.apache.mahout.cf.taste.impl.model.file.*; 

import org.apache.mahout.cf.taste.impl.neighborhood.*; 

import org.apache.mahout.cf.taste.impl.recommender.*; 

import org.apache.mahout.cf.taste.impl.similarity.*; 

import org.apache.mahout.cf.taste.model.*; 

import org.apache.mahout.cf.taste.neighborhood.*; 

import org.apache.mahout.cf.taste.recommender.*; 

import org.apache.mahout.cf.taste.similarity.*; 

import java.io.*; 

import java.util.*; 



class RecommenderIntro { 

   public static void main(String[] args) throws Exception { 

      DataModel model = new FileDataModel(new   File("C:\\mahout_data.txt")); //

   UserSimilarity similarity = new PearsonCorrelationSimilarity(model);//     /   ,         

      UserNeighborhood neighborhood =new NearestNUserNeighborhood(2, similarity, model); 

      Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); //   、、 recommender 

         List<RecommendedItem> recommendations =recommender.recommend(1, 1); // ID 1        

        for (RecommendedItem recommendation : recommendations) { 

        System.out.println(recommendation); 

         } 

     } 

} 

 
프로그램 출력 결과 2011-1-27 11:41:21 org.slf4j.impl.JCLLoggerAdapter info 정보: 파일 에 대한 FileDataModel 만 들 기 C: \ mahoutdata.txt 2011-1-27 11:41:21 org.slf4j.impl.JCLLoggerAdapter info 정보: 파일 정보 읽 기... 2011-1-27 11:41:21 org.slf4j.impl.JCLLoggerAdapter info 정보: Read lines: 21 2011-1-27 11:41:21 org.slf4j.impl.JCLLoggerAdapter info 정보: 파일 정보 읽 기... 2011-1-27 11:41:21 org.slf4j.impl.JCLLoggerAdapter info 정보: Read lines: 21 2011-1-27 11:41:21 org.slf4j.impl.JCLLoggerAdapter info 정보: 처 리 된 5 명의 사용자 RecommendedItem[item:104, value:4.257081]         결 과 는 마지막 문장 을 읽 어야 합 니 다. 다른 것 은 로그 정보 입 니 다. 1 에 id 104 의 책 을 추 천 했 습 니 다. 추천 도 는 value: 4.257081 입 니 다. 여러분 은 이곳 이 추천 하 는 의 미 를 알 아야 합 니 다.       전체 과정 은 이렇게 이해 할 수 있다. 이곳 의 추천 은 분명히 다른 사람 에 게 그들 이 접촉 하지 않 은 것 을 소개 하 는 것 이다. 그러나 어떻게 추천 하 는 지, 그 와 같은 취 미 를 가 진 사람들 이 어떤 책 을 읽 었 는 지, 그 와 같은 취 미 를 가 진 사람들 이 읽 은 책 을 보 는 것 이 야 말로 추천 의 미 를 가진다. mahout 에서 추천 하 는 과정 은 아마 이렇게 설명 할 것 이다. 물론 이것 은 추천 하 는 방식 일 뿐이다.

좋은 웹페이지 즐겨찾기