달력

08

« 2017/08 »

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
2010.08.13 17:54

Apache Mahout Taste-Web 설치하기 Mahout2010.08.13 17:54


이전글에서 했던 환경을 그대로 이용해서, 가상의 데이터를 넣고 추천 테스트를 해보자. 원문 참조는 https://mahout.apache.org/taste.html 에서 볼수 있다.

1. 먼저 사용할 가상의 데이터가 필요한데, 여기 http://www.grouplens.org/node/73 에서 받는다. 원하는 크기를 받아서 하면되는데, 나는 1M Ratings Data Set (.tar.gz) 를 다운 받았다.

2. 압축을 풀면, movies.dat, ratings.dat, users.dat 파일이 있다. 모두 복사해서, /trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens 에붙여 넣는다. (아마, java 소스가 이미 있을 것이다.)

3. trunk 폴더로 이동후 'mvn install' 명령을 실행한다. 


4. 빌드가 성공하면, cd taste-web 이동후, cp ../examples/target/grouplens.jar ./lib 으로 복사한다.

5. 설정파일인, recommender.properties에 방금 생성한 Recommender를 마지막 라인에 추가한다.(만약 지난번에 주석을 풀었다면, 그대로 둔다)

recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommender

6. 현재 폴더인 /trunk/taste-web 에서 패키징 한다. 'mvn package' 빌드가 성공되면 war 파일이 생성된다.

7. 현재 디랙토리에서, war 파일을 실행한다. 'mvn jetty:run-war' 또는 'mvn tomcat:run-war' 으로 실행한다. 성공적으로 실행되었다면, 브라우저에서 http://localhost:8080/mahout-taste-webapp/RecommenderServlet?userID=1&debug=true 를 접근해 본다.


userID 값을 바꿔가며, 확인할수 있다.

9. Next?
아마도 여기까지 했으면, Mahout 환경을 설정하고, 예제를 돌리는 정도로 끝났다. 앞으로 봐야 할것은 본 예제에서 사용된 Recommender는 무엇이 있으며(User-based Recommender, Item-based Recommender, Slope-One Recommender), 사용된 알고리즘은 어떤 것이고, 또 그 알고리즘이 얼마나 우수한 것인지, 더 낳은것은 없는지, 또는 다른 알고리즘은 없는지, 어떤 환경에 어떤것이 더 적합한지, 관련 알고리즘엔 무엇이 있는지 등이 궁굼해 질것이다. 그리고 왜 이따위들이 필요한지도...

문서에 나온 소스를 보니, 알고리즘 이해 없이도 쓸수 있겠끔 잘 만들어진것 같다. 어떤 예측이나 통계적 결과는 적절한 Data 와 적합도를 위한 기준변수 산출이 중요한데, 생각보다 잘 작성되어 진것 같다. 물론 실무에 적용하려면, 이런 여러가지 환경적인 변수를 여러번 테스트해야만 하겠지만, 본 소스는 참조가 많이 될듯...:)

신고
Posted by summerwars
2010.08.13 17:53

Apache Mahout 설치하기 Mahout2010.08.13 17:53

(원문 https://cwiki.apache.org/MAHOUT/quickstart.html를 참조하여 설정하는 과정을 기록했다)

인터넷을 잘 뒤져 보면, 기계학습관련된 알고리즘 구현체가 꽤 많이 있다. 이런 알고리즘은 수학적으로는 이해하기 힘들지 모르지만, 프로그래밍되어 있는건 상대적(?)으로 이해가 쉬운편이다. 아마 수학이라는 또다른 언어를 배우는 과정이 쉽지 않아서 그럴수 있겠다. 어쨌든 오픈소스를 비롯해서 많이 존재 하는데, 그중 하나가 바로 Mahout 프로젝트이다. 굳이 대량의 데이터를 테스트 하지 않더라도, 그 가능성이 가장 좋아 보여서 이걸로 테스트 하기로 했다.


1. 환경 설정하기

1.1 기본 빌드 환경 : JDK1.6 + Maven 2.0.9 이상

1.2 Subversion에서 소스 체크아웃 받기
     - svn co http://svn.apache.org/repos/asf/mahout/trunk
     - 또는 릴리즈 버전 받기(http://www.apache.org/dyn/closer.cgi/mahout/) 

1.3 컴파일 : mvn install
여기서 주의할께 있다. 반약 윈도우를 사용해서 설치한다면, 도스창에서 메이븐 명령을 실행할텐데, 이럴경우 대부분 에러를 발생시킨다. 이놈도 결국 Cygwin를 통해서 설치해야 한다. (이부분이 까다롭다고 나와 있는데, 난 언제 설치했는지 모를 Cygwin이 있어서 그냥 잘 설치할수 있었다. 메뉴얼엔 이것저것를 참조해서 Cygwin를 설치하라고 나왔는데, 차라리 구글링해서, 한글문서를 참조하는게 좋을수도 있겠다.)  


또한, 윈도우 계정에 특수문자(공백같은)가 있어도 오류를 발생시킬수 있다고 한다.(나는 다행히 없었다.) 여기까지 되었다면, Mahout Core와 몇가지 예제를 빌드할 준비가 잘된 것이다. 이제 Core와 예제들을 빌드해 보자.

1.4 Install Core
core 디렉토리로 이동 후, mvn compile (compile 대신 mvn install 해도 된단다.)

1.5 Compile Examples
examples 디렉토리 이동 후, mvn compile (반드시 '14번 Install Core'을 해야 메이븐 모듈 의존성이 인식된다)

1.6 Compile Taste Web(Taste는 일종의 예제 프로젝트)
taste-web 디렉토리 이동 후, recommender.properties 파일 제일 하단에 주석을 하나 풀어라, (아마도 추천자(Recommender.java)클래스를 구현 했다면, 해당 클래스를 연결시키면 될것이지만, 지금은 구현한게 없으니, 예제 것을 그대로 쓴다.) 그리고, mvn package를 실행한다.

그러니까, 앞으로 구현체를 만들어 jar로 lib 디랙토리에 추가하고, recommender.properties에 한줄 추가해주고, mvn package를 실행하면, war로 빌들되어 테스트해볼수 있다는 말이 된다.


2. 예제실행하기

이미 빌드된 taste-web의 target 디렉토리에 mahout-taste-webapp-0.4-SNAPSHOT.war라는 war파일이 생성되어 있고, 적당한 서버(tomcat 같은)에 넣어서 예제를 실행시켜 볼수 있다. 아마 위와 같이 따라 했아면, http://localhost:8080/mahout/RecommenderService.jws 으로 접근할수 있다. WSDL 형태로, Recommender를 학습시키고, 그 결과를 볼수 있는 것 속성들로 구성되어 있다.(mvn jetty:run-war 또는 mvn tomcat:run-war 해도 된다)



3. 이클립스로 보기

체크아웃 받은 /trunk를 이클립스에서 Import 시키면 간단히 이클립스에서 볼수 있다.


4. Next?

https://cwiki.apache.org/MAHOUT/quickstart.html 에 보면, 각종 알고리즘을 구현한 예제와 Tip들이 있다. 내가 관심 있는 GA는 구현된것 같은데 예제엔 없는것 같다. https://cwiki.apache.org/confluence/display/MAHOUT/Algorithms 를 보면, EA와 GA에 대해서 개발중에 있고, SVM도 보인다, 관련 문서가 빈약하긴 한데, 있는것만으로도 감지덕지다. 관련해서 https://cwiki.apache.org/MAHOUT/mahout-wiki.html 를 보면, 읽을만한게 꽤 있다. 관심있으면, 봐 두자.

신고
TAG Mahout, 설치
Posted by summerwars
2010.08.13 16:49

MongoDB Maven Dependency MongoDB2010.08.13 16:49

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>2.0</version>
</dependency>
신고
TAG maven, MongoDB
Posted by summerwars
2010.08.13 16:41

Java환경에서 MongoDB 설정(사용)하기 MongoDB2010.08.13 16:41

'초간단, Window에 MongoDB 설치하기' 에서 MongoDB 설정을 했다면, 이제 java에서 해당 DB에 접속해서, 사용할수 있어야 한다. 방법은 환경설정 만큼이나 간단하다.

1) Java Driver 다운로드
http://github.com/mongodb/mongo-java-driver/downloads 에서 가장 최신 driver인 jar파일을 다운 받아 알맞은 classpath 또는 lib 폴더에 넣는다.

2) Connection Test 하기
아래와 같이 Unit Test를 작성하고 테스트 한다. 통과되면, 정상적으로 DB와 연결된 것이다.
@RunWith(JUnit4.class)
public class MongoConnectionTest {

@Test
public void getConnection(){
Mongo m = null;
try {
m = new Mongo( "localhost" , 27017 );
} catch (UnknownHostException e) {
System.out.println("UnknownHostException");
e.printStackTrace();
} catch (MongoException e) {
System.out.println("MongoException");
e.printStackTrace();
}

Assert.assertEquals("2.0", m.getVersion());
System.out.println("=================================");
System.out.println(m.getVersion());
System.out.println("=================================");
DB db = m.getDB("test");
Assert.assertEquals("test", db.getName());
System.out.println("=================================");
System.out.println(db.getName());
System.out.println("=================================");
}
}
나의경우 아래와 같이 잘 통과 되었다.


테스트한 이클립스 프로젝트를 통째로 압축해서 올린다.


보통 RDB에서는 Connection시 인증을 사용한다. Mongo도 db.authenticate(myUserName, myPassword) 로 인증기능이 가능하나, 대부분의 사용자들은 인증없이 사용한다.

 

신고
TAG MongoDB
Posted by summerwars
2010.08.13 16:41

초간단, Window에 MongoDB 설치하기 MongoDB2010.08.13 16:41

MongoDB에 대한 기본 정보는 홈페이지인, http://www.mongodb.org 에서 얻길 바라고, 관심이 있으면 아래와 같이 간단히 설치하고 테스트 할수 있다.

1) 다운로드
http://www.mongodb.org/downloads 에서 가장 최신 버전을 다운 받는다. 나는 Windows32-bit 1.6.0 버전을 다운 받았다.

2) 설치
다운 받은 zip 파일을 원하는 디렉토리에 압축을 푼다. [ ex) D:\MongoDB\mongodb-win32-i386-1.6.0]

3) Data를 저장할 디렉토리 만들기
설치가 되었다면, Data를 저장할 디렉토리를 만든다. [ ex) D:\MongoDB\DATA\DB]

4) DB 실행하기
Dos창에서 압축을 푼, 디렉토리의 bin 폴더로 이동하여, mongod.exe를 실행시킨다. 이때, Data저장소를 따로 지정했다면, dbpath 옵션으로 실행시킨다. 
ex)
d:\MongoDB\mongodb-win32-i386-1.6.0\bin>mongod --dbpath d:\MongoDB\DATA\DB



5) DB 접속하기
DB 실행하기처럼 bin 디렉토리로 이동후, mongo를 실행하면, 콘솔창으로 접속할수 있고, 이후 원하는 작업이 가능하다.
ex)
d:\MongoDB\mongodb-win32-i386-1.6.0\bin>mongo


만약 MySQL Window zip 버전을 사용해본 경험이있다면, 상당히 유사함을 느낄것 같다. 서버를 실행시킨 다음, 콘솔이나 툴로 접속하여 테스트 하는 방법 말이다. MongoDB도 그와 유사하게 간단히 설치하여 사용할수 있다.

6) Window Service에 등록하여 자동으로 실행하기
mongod.exe 는 --install(추가), --remove(삭제) 옵션으로 간편히 윈도우 서비스에 추가하거나 삭제 할수 있다. 
ex)
mongod --bind_ip 127.0.0.1 --logpath D:\MongoDB\logs\logs --logappend --dbpath D:\MongoDB\DATA\DB --directoryperdb --install

복잡한 옵션들이 있는데, mongod는 많은 옵션들이 있다. 'mongod --help'로 확인 할수 있다. 

더보기



신고
TAG Mongo
Posted by summerwars


티스토리 툴바