본문 바로가기
Machine Learning

45. 빅데이터 대응하기 : 스트림형 데이터 처리하기 (Online learning)

by 대소니 2016. 9. 6.


이번에 배울 알고리즘은 Online learning 입니다.

데이터가 지속적으로 흘러가는 것을 처리하기 위한 모델로서 stream 형태의 데이터들을 통해서 학습하는데 유용하게 사용되고 있습니다. 기본적인 아이디어는 stochastic gradient descent와 비슷합니다. 다만 다른 점은 데이터가 고정된 dataset이 아니라는 점일 뿐입니다.


많은 웹사이트 회사에서 지속적으로 유입되는 사용자들의 정보들을 Online learning과 비슷한 방식으로 학습하여 시시각각 변하는 사용자들의 선호도를 조사하고 웹사이트 개선에 이를 반영하기 위해서 널리 사용되고 있습니다.


아래는 배달 서비스를 예제로 하여 설명하고 있습니다.
유저는 배달 서비스가 내위치로 부터 목적지까지 배달이 가능한지 문의하게 됩니다. 그러면 배달 서비스 업자는 배달 비용에 대해서 전달을 하게 됩니다. 이를 보고 유저는 배달 서비스를 이용할 것인지 여부를 판단하여 결정을 합니다. (이용하면 y=1, 그렇치 않고 그냥 가면 y=0)


여기서 유저에게 제공되는 배달 비용을 최적화 하기 위한 알고리즘을 구성한다고 생각해보겠습니다. 먼저 유저에 대한 정보가 필요하고 물건의 출발지와 목적지 정보가 필요할 것입니다. 이 정보들이 features가 되겠네요. 이 정보들을 토대로 서비스 이용 가능성을 판단하기 위해서 logistic regression 이나 Neural network를 이용할 수 있는데 여기서는 logistic regression을 이용하도록 하겠습니다.


이 알고리즘이 계속적으로 수행이 되는 과정을 살펴보면,
유저가 배달 서비스 웹사이트에 접속을 하게 됩니다. 이때 유저 정보와 출발지, 도착지 정보와 배달 비용등이 x feature가 됩니다. 그리고 배달 서비스를 이용하기로 결정했는지 여부에 따라서 결과 y 데이터를 얻게 됩니다. 이 정보들을 토대로 하여 parameter 세타를 편미분하여 gradient descent 를 수행하게 됩니다. (공식은 아래 그림의 파란색 공식과 같습니다.)


이때 x, y는 한번 학습에 사용되고는 버려집니다. 저장되지 않으며 다시 사용되지 않고 흘러가게 됩니다. 때문에 x(i), y(i)가 의미가 없어지는 것이지요. 그냥 현재 시점에 입력된 x,y만 존재하게 됩니다. 이렇게 하여 유저들의 선호도를 학습하면서 보다 좋은 결정을 하기 위한 분석이 되는 것이지요


이렇게 지속적으로 학습을 하고 있게 되기 때문에 전체적으로 보면 시간이 흘러갈수록 아주 많은 데이터들을 학습할 수 있게 됩니다. 그리고 거의 실시간으로 변화하는 유저들의 선호도에 적응하게 되는 시스템이 되는 것이지요. 그래서 이러한 시스템들은 dynamic 하게 되어집니다.


또 다른 예제로 상품을 검색하는 것에 적용할 수 있습니다. 검색하는 것을 학습하게 되는 것이지요.

아래 예제는 핸드폰을 검색할때 검색어를 통해서 100개의 상품중에서 관련된 10개의 상품을 추천해서 보여주는 서비스에 대한 것입니다. 이때의 x features는 핸드폰의 특성들, 검색어가 폰의 이름이나 설명과 매칭되는 단어 수등으로 만들수 있습니다. 그렇게 하여 선별된 10개의 폰의 링크가 클릭되어 유저가 관심을 보이면 y=1, 그렇치 않으면 y=0으로 결과 데이터를 만들수도 있습니다.


이렇게 생성된 x, y에 대한 가능성 p(x)을 학습하는 것이지요. 이와 같은 클릭 성공율에 대한 것을 CTR (click through rate) 라고 합니다. CTR을 예측하여 높은 클릭 가능성이 있는 링크(상품)을 보여주도록 하고 실제로 유저가 클릭한 상품수를 통해서 다시 예측 성능을 평가할수도 있겠습니다.


그외에도 유저에게 특별하게 제공되는 서비스에 적용이 되거나 유저가 흥미를 보이는 관심 뉴스나 정보를 보여주는 서비스에도 활용이 가능합니다. 또 상품 추천 서비스에도 이용할 수 있겠습니다. 이러한 알고리즘은 사실 기본적인 기술력으로도 충분히 구현이 가능합니다만 보다 나은 학습을 하기 위해서는 엄청 많은 데이터가 필요할 수 있습니다.

댓글