본문 바로가기

TIL/8월

TIL: 200826 (추천 시스템, Elasticsearch)

추천 시스템

  • Item CF 계산하는 방법 (Coursera)
    • 정규화(Normalization) 여부에 따라서 다름
    • 정규화를 하지 않은 경우. 사용자 u가 아이템 i에 대해 내린 평가 r(u, i)에서 아이템 i의 평균 평가를 빼야 한다.
    • Item CF는 사용자가 평가한 아이템들을 기준으로 아이템 간 유사도를 계산한다. 각 아이템 유사도 벡터는 사용자의 내린 아이템에 대한 평가를 가중치로 붙는다.
  • 추천 시스템을 위한 데이터 파이프라인
    • Kafka(분산 메세징 시스템) -> Spark(분산 처리 엔진) -> Elasticsearch(검색 엔진이자 NoSQL 데이터베이스)
    • Kafka에서 이벤트를 주기적으로 받아서 Spark로 전달한다. Spark는 데이터를 Elasticsearch에 저장한다. 나아가 Elasticsearch에서 데이터를 가져와서 분석(Spark MLib)하고 그 결과를 다시 Elasticsearch에 저장할 수 있다.
    • 추천 시스템 데이터 파이프라인은 궁극적으로 상용 추천 시스템이 "많은" 데이터를 "실시간"으로 처리하기 위함이다.

Elasticsearch

  • Elasticsearch를 VirtualBox 환경에서 Ubuntu에 설치
    • JDK 설치 필요 (OpenJDK 사용 가능) 
    • Elasticsearch deb 파일을 다운로드한 이후 dpkg로 설치
  • Elasticsearch를 호스트에서 접속하기 위해서는 설정 파일 변경 필요
    • /etc/elasticsearch/elasticseacrh.yml의 network.host 속성을 0.0.0.0으로 설정한다.
    • 또한 /etc/elasticsearch/elasticsearch.yml의 cluster.initial_master_nodes: ["node-1", "node-2"] 부분에 대한 주석을 해제한다.
  • Elasticsearch는 REST API(HTTP를 사용한 데이터 관리)를 사용해서 데이터에 대한 CRUD 처리
    • curl 명령으로 HTTP Request를 Elasticsearch Server에 보낸다.
    • XGET, XPUT, XPOST, XDELETE를 사용한다
    • XPOST를 사용하는 경우 Header 정보(Content-Type)를 반드시 같이 사용한다.

'TIL > 8월' 카테고리의 다른 글

TIL: 20200824  (0) 2020.08.24