패션 아이템의 특성 태그 기반 유사도 측정 #가중치

이전 글에 이어서 가중치에 대해 적어보고자 한다.

부모를 따라서 트리를 올라갈 때 가장 먼저 만나는 '목차' 노드의 높이를 기준으로 가중치를 상대적으로 매긴다고 앞서 얘기했는데, 그 방법은 다음과 같다.

우선 정의 하나를 한다.
 - 부모를 따라갈때 가장 먼저 만나는 '목차' 노드의 높이를 0 이라고 한다.

1. 가중치의 '기준 값' 은 두 상품이 겹치는 leaf 노드로 부터  '목차' 노드까지의 거리로 한다.
2. leaf 노드에서 '목차' 노드까지 올라가면서 각각의 노드는, 1 / (가중치의 기준 값 (기준 값 - 해당 노드의 높이)) 로 하는 가중치를 갖는다.
3. 즉 가중치 H 는 기준 값 n 을 받아 다음과 같이 계산된다.




다시 밑의 그림을 보면서 따라가 보자.




만약 두 상품이 겹치는 leaf 노드가 '32' 이고 이를 통해 태그 트리 root 까지 그린 것이 위 이미지와 같다고 할 때,

위 경우에서 '사용자' 태그,  루트 노드 가  '목차' 노드라고 한다면, 
'32' 태그의 기준 값은 4, 높이는 4가 되고, 
'중반' 태그의 기준 값은 4, 높이는 3가 되고, 
'30대' 태그의 기준 값은 4, 높이는 2가 되고, 
'연령대' 태그의 기준값은 4, 높이는 1이 되고,
'사용자' 태그의 기준값은 4, 높이는 0가 된다.

이때 '32' 태그의 가중치는 1/ (4+(4-4)) = 1/4
'중반' 태그의 가중치는 1/ (4+(4-3)) = 1/5
'30대' 태그의 가중치는 1/ (4+(4-2)) = 1/6
'연령대' 태그의 가중치는 1/ (4+(4-1)) = 1/7
사용자 태그의 가중치는 1/ (4 + (4-0)) = 1/8 이 된다. 

leaf 노드의 깊이가 깊어질 수록, 그 부모들의 가중치의 값은 느리게 감소하게 된다.

결국 32 태그의 가중치는 1/4 + 1/5 + 1/6 + 1/7 + 1/8 이 되고 이 값은 0.7416 이다.

만약 기준 값이 3인 태그가 있다면
(1/3 + 1/4 + 1/5 + 1/6 = 0.95) 이 나오게 된다.

간추리면
 - 기준값의 크기에 비례하여 가중치가 커지는 부분이 존재한다.
 - 기준 값의 크기에 반비례 하여 가중치가 작아지는 부분이 존재한다.

이 두가지 속성이 공존한다.

이 결과로

 - 기준값이 작은 leaf 노드의 경우('목차' 노드에서 가까울 경우)  높은 가중치를 받는다. 
 - 기준값이 큰 leaf 노드의 경우('목차' 노드에서 멀 경우)  낮은 가중치를 받는다. 
 - 하지만 가중치가 보정되어 있다.

왜 저게 좋은 것일까?

이것도 가정이긴한데, '목차' 노드가 아닌 노드들은 모두 상품의 특성과 관계가 있다. 그렇기 때문에 leaf 노드의 기준값이 커질 수록 아주 세부적인 특성으로 들어가게 된다. 즉, 상품간의 전반적인 유사를 판단하기에 해당 leaf 노드의 힘이 너무 세지면 안되는 것이다)

이는 앞의 글에서 말했던
그러나 트리의 깊이가 깊어질 수록 상품의 '상세' 특성에 가까워진다고 가정할 때, 깊이에 따라 공통되는 태그의 가중치를 달리해야한다는 결론이 나온다(A,B 두 상품 모두 연령대 태그를 가지고 있기 때문에 연령대, 사용자 부모 태그가 겹친다.). 하지만 깊이가 깊은 leaf 노드가 겹친다고 해서 이 것이 상품의 전반적인 '느낌' 이나 유저의 전반적인 '취향' 을 대변한다고 볼 수는 없다.
의 연장선으로,
상세 특성을 너무 강조해서 전반적인 느낌을 나타내는 ('목차' 노드와 가까운 노드들) 노드의 가중치가 희생당하지 않는 것을 가능케한다.



가중치는 기준값이 1일 때 1/1 + 1/2 = 1.5 로 가장 크게 되며, 기준값이 무한대일때 0.5 로 수렴한다. 기준 값이 충분히 커진다면 그 leaf 노드는 너무 trivial 한 속성이라서 작은 가중치를 받는 다고 생각하면 된다.


다음 글에서는 두 상품의 유사도를 구하는 내용을 쓴다.







댓글