Tag Archives: 넷플릭스

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

마이크로 서비스 아키텍쳐(Micro Service Architecture)는 줄여서 MSA라고 부르며 서비스를 기능별로 작게 쪼개는 서버 아키텍쳐의 디자인 패턴으로, 기본 컨셉은 하나의 서비스는 한가지 일에 초점을 맞춘다는 것입니다. 또 다른 서비스와의 연계는 API로 구현합니다.

마이크로 서비스 아키텍쳐 구현 프로세스는 크게 4단계로 나눌 수 있는데, 구체적인 처리 절차는 다음과 같습니다.

STEP 1. 기능별로 서비스 어플리케이션 구분

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

STEP 2. 서비스 이미지 개발

– 이때 각각의 서비스 어플리케이션은 수샙, 수백여개의 서비스들로 구성되며, 각 서비스는 적절한 CPI, Memory, I/O리소스를 제공받아야 하고, 배포는 빠르고 효율적이어야 함. 참고로 배포 방법은 서버마다 전체 서비스를 적용하는 방법, 서비스를 VM위에 적용하는 방법, 서비스를 도커 콘테이너 위에 적용하는 방법 등이 있습니다.

– 서버별로 서비스를 적용하면 배포 및 서비스의 시작속도가 빠르다는 장점이 있습니다. 그러나 한 서비스 인스턴스가 CPU와 메모리를 모두 사용하는 문제점이 있습니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

– 서비스를 VM에 적용하면 서비스별로 고정된 자원을 사용할 수 있고 클라우드 인프라 기능을 활용할 수 있다는 장점이 있습니다. 반면에 의도 해던 기능 외의 다른 VM의 기능은 낭비된다는 단점이 있고, 또 VM 자체를 관리해주어야 하는 오버해드를 가지고 있습니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

– 마지막으로 서비스를 도커 콘테이너에 적용하는 방법이 있는데, 이는 VM의 장점을 거의 포함하면서 VM 보다는 가볍다는 잇점이 있습니다. 반면에 VM보다는 다소 기능이 떨어 질 수 있습니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

STEP 3. 클라이언트에서 필요한 서비스 선택

– 실제 서비스 설계시 클라이언트에서 어떤 기능을 필요로 하는지 모델링을 할텐데, 이때 기능에 중복성을 없애면서 통신을 최소 하는 방향으로의 설계가 바람직합니다.

– 최적화 된 클라이언트의 구현 방법으로 API Gateway와 IPC(Inter-process Communiation)의 두가지 방법이 있습니다.

– API Gateway는 내부 시스템 아키텍쳐를 캡슐화 해서 클라이언트에 적합한 API를 제공하는 방식인데, 이는 주로 Netty, Vert.x, Node.js, Nginx와 같은 비동기, 논블로킹 I/O를 지원하는 플랫폼으로 개발됩니다. 또 통신 규격의 다양화로 이중 가장 효율적인 것을 선택할 수 있다는 장점이 있으며, Auto Scaling 및 IP 주소 변경에 유연하게 대응할 수 있다는 장점이 있습니다. 마지막으로 서비스 오류 핸들링을 용이하게 할 수 있다는 장점이 있는데, 넷플릭스의 Hystrix가 바로 그 예입니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

– IPC(Inter-process Communication)은 서비스-클라이언트, 서비스-서비스간 통신 구현 방식인데, 구현 방법에 따라 동기적(request)/비동기적(message-based) 방식으로 나뉩니다. 주로 HTTP Rest나 Thrift 프로토콜을 많이 사용하며, 서비스 오류 핸들링이 용이하다는 장점이 있습니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

STEP 4. 인스턴스 선택/관리

– 서비스가 가상화되먄 여러 인스턴스로 실행 시킬 수 있습니다. 이때 Auto Scaling 혹은 장애 등으로 IP 주소가 변화될 수 있습는데, 장애를 막기 위해 서비스 레지스트리에 자신의 상태를 전달합니다. 이때 상태 전달을 hearbeat이라고 호칭합니다.

마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법

 

마이크로 서비스 아키텍쳐의 장점을 요약하면 다음과 같습니다.

  • 빠른 복구
  • Scaling
  • 서비스 확장 용이
  • 대규모 장애 확률 감소
  • 협업 용이

 

반면에 마이크로 서비스 아키텍쳐의 단점은 다음과 같습니다.

  • 복잡함
  • 트렌잭션 관리 어려움
  • 다중 테스트
  • 소규모 장애 확률 증가

 

 

넷플릭스 서비스 오토스케일링 아키텍쳐

글로벌 비디오 서비스 강자인 넷플릭스는 아마존 AWS를 운영환경으로 사용합니다.

그들이 온라인 비디오 시장에서 티격태격하면서 경쟁하고 있지만, 아이러니하게도 넷플릭스는 아마존과 끈끈한 관계를 유지하고 있습니다. 아마도 아마존은 넷플릭스덕분에 그들의 아마존 프라임 비디오 서비스를 위한 환경 구축을 북미 전역에 쉽게 얻었을 것이라는 생각을 하게 만듭니다. 

서비스 트래픽에 따라 서버 인스턴스를 늘렸다 줄였다 하는 오토스케일링(AWS Auto Scaling)을 기본으로 쓰고 있는데, 이는 다른 서비스 아키텍쳐와 다를 바가 없습니다.

다만, 트래픽이 증가한다고 무작정 오토스케일링을 하지 않고, 그들의 정책에 따라 EC2나 DynamoDB등의 키 컴포넌트를 스케일인, 스케일아웃을 한다는 것이 특징이라고 할 수 있습니다. 아래 그림에서는 Titus Control Plane이라 불리우는 넷플릭스 자체 시스템이 그러한 정책을 관리합니다.

넷플릭스 서비스 오토스케일링 아키텍쳐

또 하나 눈여겨 볼 것은 모바일/텔레비젼과의  통신은 Open API를 통해서 하지만, 자체구축하지 않고 Amazon API Gateway를 사용했습니다. 그럼으로 인해서 비용절감 및 보안(Security)을 해결하는 일타이피( ? ) 전략을 구사하고 있습니다.

참고로 위의 스핀네이커(Spinnaker)는 node.js 기반으로 동작하는 넷플릭스의 CDS(Continuous Delivery System)입니다.

넷플릭스(Netflix)의 글로벌 가격 전략 – 가격변화 없이 미국 외 시장에서 얼마나 살아 남을 것인지 궁금해

넷플릭스(Netflix)가 2016년 1월 CES에서 글로벌 가격 전략을 발표했을 때 많은 사람들이 놀랐습니다.

넷플릭스(Netflix)는 전세계 130개국에서 8불에 HD급 화질의 비디오를 사용할 수 있도록 하겠다고 했습니다. 참고로 두대 이상의 기기에서 사용하는 경우는 월 12불 이상을 지불해야 합니다.

이 요금은 선진국에서는 합리적이지만, 그렇지 않은 나라에서는 적절하지 않은 가격으로 보입니다. 따라서 가격은 가까운 미래에 조정 될 가능성이 높지만, 현재로서  유료TV 대비 높은 비중으로 표시됩니다. 아래 그래프를 보면 인도는 유료TV에 비해 2.5배 이상 비싼 돈을 주고 넷플릭스(Netflix)를 봐야 한다는 결론에 이르게 됩니다.

넷플릭스(Netflix)의 글로벌 가격 전략 - 가격변화 없이 미국 외 시장에서 얼마나 살아 남을 것인지 궁금해

반대로 호주는 유료TV 대비 9%의 돈만 내면 넷플릭스(Netflix)를 즐길 수 있으니… 그들 입장에서는 괜찮은 조건임에 틀림 없습니다. 신기하게도 브라질과 맥시코의 경우도 나름 괜찮은 가격으로 보입니다.

다른 한편으로는 지상파 TV를 즐겨 보는 일본의 경우, 유료TV 대비 21%의 가격이라는 진입장벽이 유효할지… 이 부분은 약간 의문이 듭니다.

마지막으로 한국의 경우 넷플릭스 월 구독료가 착하다고 받아 들여질런지… 이 부분 또한 새로운 관전포인트입니다. 한국의 경우 케이블TV 사용료가 STB 없이 쓸 경우 평균 월 7,000원이고, IPTV의 경우 사람들이 제일 많이 사용하는 결합요금 평균요금이 10,000원입니다. 혹자는 15,000원이 평균이라 할 사람이 있겠지만… 그렇다 하더라도 VOD가 지상파TV 방송의 예능프로그램이나 드라마 인기를 능가하기는 어렵다고 생각합니다. 

넷플릭스(Netflix)가 한국시장에서 살아남을 수 있을런지… 살아 남는다면 현재의 가격구조로 괜찮을지… 3개월 후의 상황이 궁금합니다.

Big Data Landscape 2016 – 빅데이터로 먹고 사는 업체들과 그 기술들을 분야별로 총망라하여 정리한 바이블

빅데이터(Big-Data)는 사용 성향을 분석하여 여기서 인사이트를 발굴하여 이익증가 내지는 사용성 개선을 하는데 많은 도움을 주었습니다.

실제로 이를 개발하는 사람은 이렇게 멋들어지는 일을 노가다성 업무로 하는 것이 사실입니다. 간단해 보이는 이 업무를 하기 위해 대량의 데이터를 다룰 수 있는 시스템을 구축해야 하고, 이를 분석해야 하고, 모델을 만들어야 하고, 여기서 인사이트를 도출해야 하고, 때로는 여기서 추천 내지는 대안까지도 제시해야 합니다. 심지어 요즘은 빅데이터를 통해 머신러닝(Machine Learning)까지 하죠. 이 외에도 연관 업무가 수를 셀 수 없이 많습니다.

이런 빅데이터(Big-Data)를 발판으로하여 성장한 회사가 바로 구글, 페이스북, 트위터, 넷플릭스, 아마존 같은 공룡들입니다.

2006년 하둡(Hadoop)이 소개된 이래로 빅데이터(Big-Data)는 그야말로 이 바닥의 핫한 키워드로 자리매김 했습니다. 또한, 빅데이터(Big-Data)라는 이름을 빌어 먹고 사는 업체들이 늘어나고 있고, 또한 이와 연관된 기술들도 마치 벌집처럼 복잡도가 늘어가고 있습니다.

First Mark Capital에서 일하고 있는 Matt Turck은 이 바닥의 핫한 리더들을 하나의 그림으로 그리는 귀염을 토했습니다.

Matt은 Enterprise Technology를 Hard work이라 정의했는데요, 저 또한 이 정의에 동의합니다. 복잡도가 높아지고 기술이 좋아질수록 개발 환경이 좋아져야 하는데, 왠지 소프트웨어 개발자가 해야 할 일 또한 비례해서 늘어나네요. 누군가는 이를 단순화하여 제공하는 틈새시장을 공략하는 일 또한 벌어지리라 생각하지만, 지금은 그 몫이 SI(System Integration)하는 사람들의 몫으로 보입니다. 참고로 SI는 System Integration: 즉, 한국어로 시스템 통합을 의미합니다. 다른 말로 개발을 대신 해주는 외주 용역업체들 몫이라는 의미입니다. 그런데, 아이러니 하게도 한국의 경우 소위 빅데이터 전문 업체라고 하는 국내 중소업체들이 생기기도 했지만, 거꾸로 많이 도산하기도 했습니다. 이들이 자신들의 제품을 만들었으나, 시장의 호응을 얻는데는 실패 했고, SI를 했으나 주 계약자가 개발된 소프트웨어/서비스의 가치를 느끼지 못해 계약이 지속적으로 유지 되지 못하여 기업의 생명이 지속되지 못했기 때문으로 이해 됩니다.

아래는 Matt이 만든 Big Data Landscape 2016입니다.

Big Data Landscape 2016 - 빅데이터로 먹고 사는 업체들과 그 기술들을 분야별로 총망라하여 정리한 바이블

참고: 본 이미지를 별도로 저장하시거나, 이미지만 새로운 윈도우에서 오픈하시면 자세한 내용을 보실 수 있습니다.

왠지 빅데이터(Big-Data)를 하려면 위의 업체들을 모두 알아야 할것 같지만, 사실은 이 중 일부는 용도에 따라 불필요할 수도 있는 것 같습니다. 너도나도 빅데이터 시장에서 한껀 건지려는 노력으로 이런 저런 기술들을 내놓고 있으니… 그야말로 이 분야는 풍년입니다.

2016년 이후 빅데이터(Big-Data) 업계의 현란한 전쟁은 순탄해 보이지 않습니다. 신나게 제품은 만들었지만, 써주는 사람을 찾기 어려운… 또 그 제품에 비용을 기꺼이 지불할 고객님을 찾기 어려운 현실. 누가 이 시장을 선도할지… 누가 이 기술을선도할지… 같은 업계에 종사하는 사람의 한사람으로써…. 피부로 느껴보렵니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning – TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

2015년 11월, 구글은 머신러닝(Machine Learning)이라는 기술을 공개했습니다.

사실 머신러닝은 구글이 최초로 만든 기술은 아닙니다, 구글이 그들의 소프트웨어를 공개하면서, 그들의 제품 이름이 아닌 대중이 알아듣기 좋은 적절한 이름으로 이미 업계에서 통용되고 있는 단어(머신러닝;Machine Learning)를 사용했습니다.

구글 머신러닝은 텐서플로(TensorFlow)라는 이름으로 오픈소스로 공개되었습니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

구글의 머신러닝은 공부한 시간을 데이터로 인풋(input)하면 컴퓨터는 성적이라는 결과를 아웃풋(output)으로 도출하게 되는데, 이 과정의 상관관계를 학습시키는 것이라고 합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

구글은 머신러닝을 쉽게 이해시키기 위해 로켓도 동원했는데, “머신러닝은 로켓엔진과 비슷하다”면서 “로켓엔진의 중간 부분이 머신러닝이며 로켓의 연료가 데이터, 뿜어져 나오는 연기는 그 결과물”이라고 설명했는데, 아래의 로켓 엔진은 위에 그려진 머신 러닝 컨셉 다이어그램과 유사합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

또한 구글은 인공지능 소프트웨어 시스템인 ‘텐서플로(TensorFlow)’를 무상으로 공개한다고 발표했는데, “이를 통해 개발자들은 CPU, GPU, 모바일 등 실제 제품에 접목할 수 있다”면서 “머신러닝의 표준화를 통해 미래제품 출시에도 도움이 된다”고 강조하면서 머신러닝의 보급에 최우선 순위를 두고 있다는 뜻을 내비쳤습니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

이 머신러닝 적용 사례로는 구글검색, 구글포토, 구글번역, 지메일(Gmail) 등 자사 제품이 있습니다. 구글앱을 통해 음성검색을 이용하면 그 음성을 인식한 뒤 분석한 내용을 바탕으로 검색어를 생성한다고 합니다. 또 구글 포토를 이용하면 스마트폰으로 찍은 사진을 인물, 장소, 사물별로 분류해 저장하고, 클라우드에 보관된 위치 정보가 없는 사진도 촬영 장소의 특징을 분석해 그 위치를 찾아낸다고 합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

슈미트 회장은 “내가 볼 때 구글은 이 분야(머신러닝)에서 월드 리더다”라고 강조하면서 “구글은 머신러닝을 통해 더욱 스마트해질 것”이라고 언급했다고 합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

텐서플로(TensorFlow)는 오픈소스로 공개되어졌으며, 다음의 URL에서 관련 정보를 얻으실 수 있습니다.

http://tensorflow.org/

 

참고로 텐서플로(TensorFlow) 외에도 아파치 머하웃(Apache Mahout)이라는 Scalable Machine Learning기술이 예전부터 공개되어져 있었고, 이 기술은 글로벌한 소프트웨어/서비스 기업에서 사용 중인데요, 관련정보는 http://mahout.apache.org/ 에서 얻으실 수 있습니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

 

마지막으로 머신러닝의 응용 사례에 대해 언급해보고자 합니다.

1) 넷플릭스는 머신러닝을 활용하여 개인화된 페이지를 구성하였습니다. (출처: 넷플릭스 블로그)

이를 통해 고객의 선호를 만족시키고 동시에 다양한 콘텐츠를 구매할 수 있도록 유도하는 전략을 펼쳤습니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

참고로 CF 알고리즘이 적용되었습니다.

 

2) 페이스북은 머신러닝을 활용하여 이미지 분석 진행

98%의 정확성을 가지고 있고, 8억건의 사진을 5초 이내에 확인할 수 있었다고 합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

참고로 구글포토에서도 비슷한 기술이 적용되어져 있다고 합니다.

 

3) 구글은 스팸메일 필터시 메일의 패턴을 학습시켜 스팸메일을 거르는 확률을 높였다고.

 

이제 서비스를 전제로 하는 소프트웨어는 보다 많은 빅 데이터를 쌓아 이를 응용하여 미래를 예측하는 기술을 전보다 더 많이 활용하게 될 것으로 보입니다. 보다 편리하고 살기 좋은 미래… 어떻게 다가 올지 궁금합니다.

집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 – 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

오늘은 Collaborative Filtering에 대해 간단히 정리해보려고 합니다. 업무상 이와 관련된 내용을 자주 접하지만, 어딘가 정리를 해서 놓을 필요가 있다는 생각이 들어 블로그에 올려봅니다. 참고로 이는 전혀 새로운 알고리즘이나 방법이 아니며, 이미 학술적으로도… 또한 업계에서도 널리 응용되고 있는 방법입니다.

본 포스트에서는 Collaborative Filtering에 대해 그 정의와 응용(Application)에 대해 간단히 소개하고자 합니다.

 

1. Collaborative filtering이란?

Collaborative filtering (CF; 이하는 CF로 줄여서 표기)은 추천 시스템에서 사용하는 기법 중 하나입니다.

 

CF는 여러 에이젼트, 뷰포인트, 데이터 소스와의 협업(콜레보레이션; Collaboration)을 포함하는 기술을 사용하여 정보 또는 패턴을 필터링하는 프로세스입니다. 뉴스나 드라마에서 콜라보(Collaboration의 줄임말)를 했다는 말을 종종 들으셨을 것입니다. 콜라보란 협업(Collaboration)을 했다는 의미인데, 이를 바탕으로 CF를 다시 정의하면, 사전적으로는 여러 소스를 참조하여 불필요한 정보를 차단한다는 의미인데, 다르게 해석하면 관심 있어할 정보만 찾아준다는 것으로 풀이할 수 있습니다.

 

CF 알고리즘은 빅데이터(Big-Data)를 기반으로 처리되는데, 다음과 같은 분야에 널리 이용되고 있습니다.

  • 다양한 센서를 이용한 광물 탐사
  • 신용카드사의 고객 행태분석
  • 사용자 데이터를 기반으로 한 서비스(쇼핑몰, VOD) 등

 

알고리즘 측면에서 CF를 다시 정의하면 CF는 다양한 사용자의 선호도를 수집하여 사용자의 관심 분야를 자동으로 예측하도록 하는 방법입니다. CF의 가장 흔한 접근 방법은 “당신이 구입한 제품을 구입한 다른 고객은 A라는 제품에도 관심을 보이셨습니다.”라는 방식의 접근입니다. 다른 사례로는 “명량”이라는 영화를 본 사람이 있다고 하면, 이 사람에게 “명량을 보신 고객분들 중 많은 분들이 해적도 보셨습니다”라고 추천을 해주는 것을 예로 들을 수 있습니다. 이는 서비스를 운영하는 사람의 관점에 있어서는 2차 구매를 유도하여 또 다른 수익을 내는 기회를 만들어낼 수 있다는 장점이 있습니다. 이러한 처리 기법은 아마존(Amazon)이나 알리바바(Alibaba) 같은 쇼핑몰은 물론 넷플릭스(Netflix)같은 VOD 서비스 업체에도 적용이 된 바 있습니다.

 

 

2. CF 방법론(Methodology)

1) User-based CF

: 일반적으로 가장 많이 이용되는 방법으로 Nearest Neighbor Algorithm이라고도 불리우며 그 처리 프로세스는 다음과 같습니다.

  • Step 1: 같은 패턴을 가지는 사용자를 찾는다. 예) A라는 아이템에 대해 별 5개를 준 고객이 있다고 할 경우, 이와 같은 등급을 부여한 B라는 고객을 찾는다.
  • Step 2: 같은 유형의 사람들이 했던 패턴을 예측(Prediction) 정보로 제공한다.

 

아래의 사례가 본 사례와 유사한 것 같습니다.

집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

 

2) Item-based CF

: 아마존(Amazon)이 이를 처음으로 사용한 것으로 알려져 있으며,  통상 “users who bought x also bought y”라는 형태로 많이 알려져 있습니다. 이 방식에 대한 처리 프로세스는 다음과 같습니다.

  • Step 1: 아이템에 대해 서로의 관계를 알 수 있는 매트릭스를 만든다.
    집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해
  • Step 2: 사용자와 일치하는 데이터를 찾아 매트릭스에 대입하여 현재 사용자의 선호도를 예측한다.
    집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

 

하나 주시해야 할 점은 별점(등급) 방식은 모든 사용자를 만족시키는 것이 아니라 평균적인 대중의 의견을 반영하는 것이므로 선호도나 관심도가 다양한 분야에 적용 시, 그 결과가 만족스럽지 않을 수 있습니다. 이런 경우 검색(Search)이나 Data Clustering같은 방법을 이용하는 편이 좋은 결과로 이어지는 경우가 많습니다.

 

 

3. CF 구현 방식

CF 구현방식에는 Memory-based CF, Model-based CF, Hybrid CF의 3가지 방식이 있습니다. CF 알고리즘을 적용하려고 계획하고 있다면, 그 용도와 Data Source의 Size에 대해 충분히 고민한 후 구현 방식을 정하는 것이 적절하다 판단됩니다.

 

1) Memory-based CF

Memory-based CF는 사용자의 선호도(Rating) 기반으로 사용자(User) 또는 아이템(Item)의 유사도를 계산하는 방법을 이용하는 것으로, 추천 솔루션 개발에 널리 이용됩니다. 쇼핑몰이나 VOD 서비스에서 제공하는 대다수의 추천 기술은 이 방식으로 서비스 되고 있습니다. 위에 기술했습니다만, Nearest Neighbor Algorithm이 널리 이용되고 있으며 아이템(Item)/사용자(User) 기반 top-N 추천 알고리즘 또한 널리 이용되고 있습니다.

이 방식의 단점은 다음과 같습니다.

  • 사람의 선호도(Rating) 의존적
  • 표본데이터 모수가 적으면 성능도 떨어짐. 이 때문에 새로운 사용자나 아이템이 추가되는데 따르는 확장성(Scalability)이 떨어짐.

    집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

 

2) Model-based CF

이는 Usage 데이터를 기반으로 Training을 하여 패턴을 발견하는 과학적인 기법입니다. 이는 보통 실제 Data에 대한 예측을 하는데 이용되는데, 일기예보 등이 이에 해당합니다. 여기에는 베이지안, 클러스터링, 시맨틱 등 수학적 모델을 기반으로 추천을 하는 다양한 알고리즘이 존재합니다.

Model-based CF는 Memory-based에 비해 적은 소스 모수를 사용하고 데이터가 크면 클수록 예측 퍼포먼스가 좋아 진다는 장점이 있으며, 반대로 모델을 만드는데 비용이 많이 소요되고, 데이터가 크면 클수록 퍼포먼스가 떨어진다는 단점이 있습니다.

집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

3) Hybrid CF

당연한 예측 결과겠지만, Memory-based CF와 Model-based CF를 혼용하면 적은 모수의 소스에 대해서도 대응이 가능하다는 장점이 있으나, 이에 따라 비용이 증가하고 구현 복잡도도 높아진다는 단점이 있습니다.

예를 들어 Google의 뉴스 추천 서비스가 이에 해당합니다.

 

 

4. CF의 문제점

1) 정확도

추천 시스템을 만드는 많은 과학자들이 “그래서 추천 정확도가 높아졌어?”라는 질문을 받습니다. CF만 가지고 개인화 추천의 선호도를 모두 맞추는 것은 불가능합니다, 다만 대중의 의견을 반영하였으므로 대개는 맞아떨어진다고 하는 것이 맞습니다.

2) 콜드스타트(Cold Start)

CF는 수집된 패턴을 근간으로 움직이므로, 새로운 사용자나 새로운 아이템이 등장했을 경우 사용 데이터 부족으로 인하여, 적절하게 추천되지 않을 가능성이 높습니다. 이런 경우라면 새로운 사용자의 경우에는 좋아하는 영화, 좋아하는 음식, 장르 등… 선호도를 미리 기초 데이터로 받아야 할 것이고, 새로운 아이템이 등장했을 경우에는 이것이 필요한 사람들에게 의도적으로 노출되게 하는 UI(User Interface)적 접근이 필요 할 것입니다.

집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

 

 

5. CF 알고리즘 적용 시 고려 사항

CF를 구현함에 있어, CF의 성능에 방해가 되는 여러 요인들이 있습니다. 하여 CF 구현 시 아래의 항목에 대한 대응 전략이 있는지… 미리 검토/고민 할 필요가 있습니다.

1) 소스 데이터의 분량(Data Sparsity)

2) 확장성(Scalability)

3) 유사품(Synonyms)에 대한 처리 정책

4) 검색봇(bot) 등 추천에 방해되는 인자(Grey sheep)에 대한 예외 처리 정책

5) 일부러 남의 경쟁자의 아이템에 대해 부정적인 Voting을 하고, 자기 아이템에 대해 긍정적인 Voting을 하는 Shilling attacks에 대한 대응 방안

6) 오래된 아이템(Long Tail)에 대한 Rating이 높아 새로운 아이템이 추천되지 못할 가능성에 대한 대응 방안: 신규 아이템은 별도 노출을 해주는 UI 구성 등.

 

이상 CF(Collaborative Filtering)에 대해 알아보았습니다.