SVD를 공동 필터링 문제에 적용하면 어떻게됩니까? 둘의 차이점은 무엇입니까?


21

협업 필터링에는 값이 채워지지 않은 값이 있습니다. 사용자가 영화를 보지 않았다고 가정하면 'na'를 넣어야합니다.

이 행렬의 SVD를 가져 오려면 0을 말합니다. 이제 행렬을 분해하면 비슷한 사용자를 찾는 방법이 있습니다. 감소 된 차원 공간). 그러나 사용자가 항목에 대해 예상하는 기본 설정 자체는 0입니다. (알 수없는 열에 입력 한 것이기 때문에).

그래서 협업 필터링과 SVD의 문제에 갇혀 있습니다. 그것들은 거의 동일 해 보이지만, 그렇지는 않습니다.

이들의 차이점과 SVD를 공동 필터링 문제에 적용하면 어떻게됩니까? 나는 그랬고, 근처의 사용자를 찾는 관점에서 결과가 수용 가능한 것처럼 보였습니다.

답변:


25

SVD를 말할 때 잘린 SVD 에 대해 이야기 하는 것 같습니다 ( 가장 큰 특이 값을 유지 합니다). 행렬의 잘린 SVD를 보는 두 가지 방법이 있습니다. 하나는 표준 정의입니다.k

Xn×m=Un×nΣn×mVTm×mUVΣkkXX~=U~n×kΣ~k×kV~Tk×m

kk

엑스~=에이아르 자형나는:아르 자형에이케이()=케이나는,j(엑스나는j나는j)2

케이케이

케이엑스나는j엑스~나는j


3

결 측값을 처리하는 방법에 대한 많은 접근 방식이있는 것 같습니다. 1.3 절에서 검토 한 다음 논문 이 좋은 출발점이 될 수 있습니다.


0

Stumpy Joe Pete의 답변에 대해 더 많은 평판이 필요하므로 답변으로 게시하십시오.

약간의 설명이 필요하다고 생각하지만 대답에 대한 고마움. 특히 나는이 문장을 의미한다 :

기본적으로 원래 행렬의 알려진 항목에서 요소 별 평균 제곱 오차를 최소화하는 k- 랭크 행렬을 찾고 있습니다.

첫째, 최고 순위가 항상 이것을 최소화하지 않습니까? 아니면 실제로 원래 X 행렬을 재구성합니까? 둘째-왜 알려진 항목 만 가져가겠습니까? 직관적으로 의미가 있지만 절차는 실제로 자리에 적당한 숫자로 대체되었습니다.

내 접근 방식은 교차 유효성 검사와 같은 것을 수행하는 것입니다.

  1. 빈 곳을 0이나 수단 또는 다른 합리적인 숫자로 채우십시오.
  2. n 개의 알려진 요소 중 하나를 0 또는 적절한 숫자로 바꿉니다.
  3. 랭크 k의 SVD 재구성 수행
  4. 알려진 재구성 된 요소 의 값을 확인하십시오 .
  5. 알려진 모든 요소에 대해 반복 하고 MSE를 계산하십시오.
  6. 가능한 모든 k에 대해 반복하고 MSE가 가장 낮은 것을 선택하십시오.

1. 과적 합을 피하기 위해 낮은 X를 선택하려고합니다 (X의 치수보다 훨씬 낮음). 이것은 기본적으로 선형 회귀가 6 점의 데이터 세트를 맞추기 위해 quintic보다 더 나은 선택과 같은 이유입니다. 2. 알려지지 않은 항목이 무엇인지 알지 못 하므로 "요소 별 MSE"를 측정 할 수 없습니다. 내 절차는 알려진 값에 대한 오류를 최소화하고 (매트릭스가 낮은 순위이어야 함을 제한하여) 파생 된 숫자로 누락 된 값을 채 웁니다.
Stumpy Joe Pete
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.