매뉴얼
http://www.libfm.org/libfm-1.42.manual.pdf
깃허브
https://github.com/srendle/libfm
매트릭스 디콤포지션
https://en.wikipedia.org/wiki/Matrix_decomposition
MCMC란?
http://blog.daum.net/dataminer9/209
무비렌즈 데이터 받기
http://grouplens.org/datasets/movielens/
전치행렬
http://blog.naver.com/lcuh11/220428510832
전치행렬이 자주 등장하는 이유는 열방향 벡터로 표현된 행렬을 행방향으로 벡터로 전환하여 연산하는 경우가 많기 때문이다.
libsvm
이전에 더 많이 쓰던 매트릭스 팩토라이즈
http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/
xgboost
주목받는 추천기인듯
https://github.com/dmlc/xgboost/tree/master/demo/rank
xgboost 설명 슬라이드
http://www.slideshare.net/ShangxuanZhang/xgboost
캐글등 경연용 오픈소스 현황
http://www.slideshare.net/odsc/owen-zhangopen-sourcetoolsanddscompetitions1
LightGBM
https://github.com/Microsoft/LightGBM/tree/master/examples/lambdarank
MS에서 만들었다고 하며, 어썸하다고..
캐글 : 캐글 수련으로 도사가 된다음 원하는 곳에 취업하라는데 1도 모르겠다.
https://www.kaggle.com/competitions?sortBy=deadline&group=all&page=1&segment=allCategories
컨벡스 팩토라이제이션 머신
http://www.mblondel.org/publications/mblondel-ecmlpkdd2015.pdf
모르겠다..
libfm 테스트 결과들
http://arogozhnikov.github.io/2016/02/15/TestingLibFM.html
결론 : 파이썬 구현은 대용량에서 문제가 있다. 느리고, 죽는다. libFM이 fastFM보다 근소하게 결과도 속도도 좋다.
BPR / 베이지언 개인화 랭킹 알고리즘
https://arxiv.org/pdf/1205.2618.pdf
brp 깃허브
https://github.com/fabiopetroni/libfm_with_BPR
libFM with bpr 매뉴얼
http://www.fabiopetroni.com/Download/manual_libFM_with_BPR_extension.pdf
매트릭스 팩토라이제이션과 low rank matrix 등 공부 자료
http://sanghyukchun.github.io/73/
MF 추천기 현황이 가장 잘 나와있는 듯
http://www.slideshare.net/irecsys/matrix-factorization-in-recommender-systems
low rank 근사
http://nlp.stanford.edu/IR-book/html/htmledition/low-rank-approximations-1.html
머신러닝 앤드류 교수 코세라 강의 요약
https://wikidocs.net/7179
이정윤 박사와의 질답
이박사님 날쎄~ 질문좀 할께요 libfm 가지고 놀아보는 중이에요. 편의상 음슴체로 할께.
조건 : train과 test가 있고, item 10, user10이 있어요.
그룹 파일(-meta)에 대해 : 행렬에 user와 item이 구분없이 들어가는데 그룹파일로 구분지어주면 맞나요? BS extention에 대해 : train, test, group(meta) 패키지 일 뿐 다른 건 아닌가요?
test에 대해 : – 입력(train) 데이터가 5 – 0:1 1:2 (평점 – 사용자 번호 – 아이템 번호) 이렇게 들어갔어요 – test 데이터에 0 – 0:2 1:2 이렇게 넣으며 0으로 넣은 평점을 추정하여 출력 주는게 맞나요? – test 데이터에 1 – 0:2 1:2 이렇게 넣으면 내가 넣은 평점 1은 그냥 버려지는지 뭔가 의미하게 되는지.. 즉슨 train 셋트와 연산을 하여 새로운 train 컨텍스트를 만들어버리는 것인지..
– test 데이터에 train 데이터에 있는 사용자 정보를 그대로 넣어도 유사할 뿐 passthrough 되지는 않는 것 같은데 맞나요? 아마도 패쓰쓰루되면 알스퀘어 1이고 잔차 0인 완전 오버핏이라고 해석될 수도 있겠네..
추천기에 대해: 전체 아이템에 대해 추천을 시행해서 상위 10만 뽑는다 치면 test 데이터에 전체 아이템을 넣는 것이 맞나요?
증분(incremental) 방식 train은 불가능할까요? 예를 들어 train 된 상황에서 추가 데이터를 더 넣어서 기존 train 된 컨텍스트를 유지하며 데이터를 넣는 일.. 그리고 이 때 데이터가 추가됨에 따라 train 컨텍스트의 용량이 증가한다면 이것은 못 써먹을 것 같고 (메모리 넘쳐서) train 컨텍스트의 용량이 어느정도 수렴해 간다면 그냥 써도 될 것 같고.. 증분 방식이 아예 불가능하다면 증분 방식은 포기하는 것이 맞을 것 같고..
매번 도움 감사합니다. 동생님아~
해피 뉴이얼! REPLY Jeong-Yoon Lee says: 12-27-2016 at 17:23
그리고 libFM의 brp 익스텐션은 이미 멀티쓰레드를 지원하고 있어요. http://www.fabiopetroni.com/Download/manual_libFM_with_BPR_extension.pdf / brp은 베이지안 개인화 랭킹이라는데 논문은 이해못하겠고 -_-; 여튼 추천/랭킹에서 써먹을 수는 있는 듯..
http://arogozhnikov.github.io/2016/02/15/TestingLibFM.html 이건 libFM의 파이썬 구현은 대용량에서 느리고, 죽는다는 결론이 포함된 내용.
이박사도 새해 복 많이 받아요~!