본문 바로가기

카테고리 없음

[데이터마이닝] 9.추천 시스템(recommendation system) 9.3절 연습문제 (Exercise 9.3)

연습문제 9.3.1

ㅕㄴ

a) 다목적 행렬을 불린(Boolean)라 가정하고, 각 사용자 쌍들의 자카드 거리를 계산하라. 

빈칸은 어떻게 처리할 것인가?

A=c(1,1,0,1,1,0,1,1)
B=c(0,1,1,1,1,1,1,0)
C=c(1,0,1,1,0,1,1,1)

#A,B
sum( A & B ) / sum(A|B)

#B,C
sum( B & C ) / sum( B | C ) 

#C,A
sum( C & A ) / sum( C | A )

b)코사인 거리로 a)를 반복하여라

sum(A * B) / ( sqrt(sum(A^2)) * sqrt(sum(B^2)) )

sum(C * B) / ( sqrt(sum(C^2)) * sqrt(sum(B^2)) )

sum(A * C) / ( sqrt(sum(A^2)) * sqrt(sum(C^2)) )

C) 순위 3,4,5를 1로 처리하고 순위 1,2와 빈칸을 0으로 처리하라

A = c(1,	1,	0,	1,	0,	0,	1,	0)
B = C(0,	1,	1,	1,	0	,0,	0,	0)
C = (0,	0,	0,	1,	0,	1,	1,	1)
#A,B
sum( A & B ) / sum(A|B)

#B,C
sum( B & C ) / sum( B | C ) 

#C,A
sum( C & A ) / sum( C | A )

d) 코사인 거리로 C)를 만복하여라

e)빈칸이 아닌 각 성분에서 해당 사용자의 평균값을 뺌으로써 행렬을 정규화하라.

A = c(4,5,5,1,3,2)
B = c(3,4,3,1,2,1)
C = c(2,1,3,4,5,3)
A = A-mean(A)
B = B-mean(B)
C = C-mean(C)
A
B
C

이게 아니지 ...빈칸을 0으로 놓고 평균을 구하면 안되지!

A = c(0.6666667,	1.6666667,	0,	1.6666667,	-2.3333333,	0,	-0.3333333,	-1.3333333)
B = c(0,	0.6666667,	1.6666667,	0.6666667,	-1.3333333,	-0.3333333,	-1.3333333,	0)
C = c(-1,	0,	-2,	0,	0,	1,	2,	0)
sum(A * B) / ( sqrt(sum(A^2)) * sqrt(sum(B^2)) )
sum(C * B) / ( sqrt(sum(C^2)) * sqrt(sum(B^2)) )
sum(A * C) / ( sqrt(sum(A^2)) * sqrt(sum(C^2)) )

f) e)에서정규화된 행렬을 사용해 각 사용자 쌍들의 코사인 거리를 계산하여라

연습문제 9.3.2 이 연습문제에서는 그림 9.8에 등장하는 항목들을 클러스터링한다. 다음 단계를 따르라.

(a) 8개의 항목들을 계층적으로 클러스터링해 4개의 클러스터를 만들어라. 

sol) 계층적으로 클러스터링 하라는 것은 a,b  c,d  e,f  g,h 이렇게 클러스터링 하라는 뜻인듯. 

1. 클러스터링 하기 위해서 먼저 모든 3,4,5를 1로 1,2를 0으로 치환한다. 

2. 그 이후 클러스터링 한다. 

 

자카드 거리를 사용해 그 결과 열 벡터들 사이의 거리를 계산하라

자카드 거리는 다음과 같다.