데이터가 아래와 같이 준비됐다고 가정하자.
이때 데이터의 양이 A <<<<< B 인 상황이다.
소스 A와 B를 합쳐서 사용자 유사도를 구하는 문제가 있다. 이러면 당연히 B의 정보가 많이 겹치므로 A 데이터의 영향도는 유사도에 영향을 미치지 못한다. 자카드를 쓰든 코사인을 쓰든 마찬가지가 된다. 결국 유사도를 각각 구해서 지분율로 합성해야 할 수도 있다.
비슷한 문제다. 유사도를 구함에 있어서 컨텍스트를 반영하지 않는다고 가정한다. 모든 데이터에는 날짜, 시간, 요일 데이터도 들어있다. 이런 경우 무차별적인 유사도를 구하면 어떻게 될까. 결국 날짜, 시간, 요일의 유사도가 실제 판별하고 싶은 컨텍스트 유사도를 이기는 결과가 나올 수가 있다. 특히 희소행렬에서는 유사도를 만들어내는 데이터 겹칩의 확률이 현저하게 작기 때문에 시간 정보가 유사도의 핵심 팩터가 되는 잘못된 결과를 낳을 수 있다. ALS나 libFM 돌릴 때 컬럼군 정보 없이 무차별적으로 넣을 때 생기는 문제와 비슷한 것 같다.
그렇다면 각 데이터의 컬럼 별로 각기 계산해서 엔트로피 개념을 동원해서 합성할 필요가 생긴다. 엔트로피가 작은 컬럼은 유사도의 지분률이 작아야 한다. 점점 더 머신러닝 문제처럼 됐다. 으으으.
컬럼 군을 직접 살펴보고 나눈다고 하면 그것은 사람의 개입이다. 정확한 예측과는 멀어지기 시작한다.
컬럼에 시간정보와 컨텍스트가 관련있다고 가정해보자. 이러면 또다른 문제다. 예를 들어 심야시간에 게임 아이템을 많이 사는 경향이 있는 데이터다. 그래서 시간정보가 같이 찍히는 아이템 구매 이력은 시간정보와 묶어서 해석해야 한다. 단순히 시간 문자열을 더해서는 퉁치면 안 된다. 중간 처리 과정에서 해시를 돌리든 뭘 하든 이런 문자열은 1만 틀려도 다른 값이 된다. 사람의 인사이트를 개입시키면 시간값을 가중치 변수로 해석할 수도 있지만, 어쩌면 이 문제는 word2vec 문제로 해석 할 수 있을지도 모른다. 즉, 동시 등장하는 컨텍스트는 연관도가 높다. 시간+아이템 구매 이력이라면 그렇게 해석할 수 있겠다. 그런데 이게 날짜라면 이야기가 또 다른 이야기 될 것 같다.
졸리다.