mahout: 시스템 입문 학습 추천 (1)

5618 단어 Mahout
다음으로 이동: http://blog.chinaunix.net/uid-26711636-id-3085923.html
 
최근 에 회사 프로젝트 의 수요 로 인해 mahout 에 관 한 학습 에 들 어 갔 습 니 다. hadop 포럼 에서 입문 급 의 학습 자 료 를 찾 았 습 니 다. 각 포럼 에서 mahout 판 에 대한 소개 가 상당히 적 고 잡담 을 많이 하지 않 으 며 바로 본론 으로 들 어 갔습니다.
     Mahout Hadoop 을 바탕 으로 각종 기계 학습 과 데이터 발굴 을 실현 하 는 알고리즘 라 이브 러 리 로 Lucene 의 몇 가지 코드 기여 자 에 의 해 설립 되 었 고 전체 프로젝트 는 Taste 라 는 프로젝트 에서 발 전 된 것 이다. 현재 Mahout 은 0.6.0 최신 버 전 을 발표 하여 분포 식 협동 여과, 집합, 분류 등 알고리즘 을 실현 하여 Hadoop 과 통합 되 었 다.강력 한 분포 식 데이터 발굴 도구 가 되다.
    코드 를 실현 하고 실행 하려 면 apache 공식 에서 mahout 패 키 지 를 다운로드 하고 이 클립 스 자바 프로젝트 에 가 져 와 야 합 니 다. 다운로드 주 소 는: http://labs.mop.com/apache-mirror//mahout/0.6/ 이 고 apache mahout 홈 페이지 주 소 는: http://mahout.apache.org/ 입 니 다.
아래 코드 는 본인 이 mahout 를 배 우 는 과정 에서 처음으로 작성 한 프로그램 이 고 첨부 파일 이 있 으 며 데이터 배열 형식 에 도 설명 이 있 습 니 다.이것 은 간단 한 실례 이다. 실제 추천 시스템 의 훈련 데이터 세트 는 모두 대량의 것 이기 때문에 기계 학습 을 통 해 더욱 신뢰 할 만 한 결 과 를 얻 을 수 있다.
 
1,101,5.0     //       ID,      ID,                 

1,102,3.0    // 1    ,5      ,   1--5

1,103,2.5



2,101,2.0

2,102,2.5

2,103,5.0

2,104,2.0



3,101,2.5

3,104,4.0

3,105,4.5

3,107,5.0



4,101,5.0

4,103,3.0

4,104,4.5

4,106,4.0



5,101,4.0

5,102,3.0

5,103,2.0

5,104,4.0

5,105,3.5

5,106,4.0


  
 package com.loogn.chart02;



import org.apache.mahout.cf.taste.impl.model.file.*;//FileDataModel



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



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.neighborhood.*;



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



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



import java.io.*;



import java.util.*;



public class RecommenderIntro {



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



        DataModel model = new FileDataModel(new



File("E:\\my own task\\mahout\\intro.csv")); //A



/**



         * A       



         */



        UserSimilarity similarity = new PearsonCorrelationSimilarity(model);



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



        Recommender recommender = new GenericUserBasedRecommender(



                model,neighborhood,similarity); // B       



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



/**



         * C   1,      



         */



for(RecommendedItem recommendation : recommendations) {



System.out.println(recommendation);//  mapreduce /           



}



}



}

 
마지막 실행 결 과 는 다음 과 같 습 니 다.
RecommendedItem[item:104, value:4.257081]
RecommendedItem[item:106, value:4.0]
이 운행 결 과 를 분석 한 결과 사용자 에 게 1 추천 item 107 을 주지 않 은 것 은 사용자 1 의 역사 구 매 기록 과 사용자 4, 사용자 5 와 더 높 은 싱크로 율 을 가 진 것 을 고려 한 것 으로 107 호 물품 은 사용자 3 만 선 호 했 고 과거 취향 으로 볼 때 사용자 1 과 3 에 큰 차이 가 있 음 을 고려 하여 4.0 과 4.5 수 치 를 가 진 item 104 를 선택 했다.추천 되 는 우선 순위 가 106 보다 높 은 것 도 알 수 있다.

좋은 웹페이지 즐겨찾기