강의

멘토링

커뮤니티

Inflearn Community Q&A

thinking9862's profile image
thinking9862

asked

[Revised Edition] The Complete Guide to Python Machine Learning

Implementation of matrix factorization based on gradient descent using Python code and implementation of movie recommendation based on latent factor collaborative filtering

예측 행렬 음수값 문의

Written on

·

524

0

안녕하세요. 강사님.

강의 초반에 임의 행렬 R로 예측행렬을 구하는 부분에서, R 행렬에 데이터를 추가해서 예측 평점이 어떻게 변하는지 실습해봤습니다.

아래처럼 마지막에 list 하나 추가해주었습니다.

그리고 나머지 과정을 모두 동일하게 하여 Matrix 분해 후 재결합 하였는데 아래와 같이 음수값이 나옵니다.

피쳐 값이 모두 양수인데 내적으로 구한 예측 행렬에 음수 값이 나올 수 있는지요?

그럼 답변 부탁드립니다.

감사합니다.

통계python머신러닝 배워볼래요?

Answer 3

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Instructor

말씀하신 의미 보다는 P, Q 내에 초기화 시 행렬 값에 - 값이라던가, 이렇게 되어 있을 경우에 경사하강법으로 최대한 분해해도 - 값이 나오는 경우가 발생하는 것 같습니다.

그래서 P, Q 행렬 초기화를 RANDOM하게 하되, - 값이 상대적으로 덜 나오게 loc=1.0(즉 평균이 1) 로 한것입니다.

P = np.random.normal(loc=1.0, scale=1, size=(num_users, K))
Q = np.random.normal(loc=1.0, scale=1, size=(num_items, K))

0

Abraham님의 프로필 이미지
Abraham
Questioner

답변 감사합니다. 강사님.

제가 아래처럼 이해한 것이 맞는지요?

'P와 Q를 dot product로 R에 근사해가는 과정 |P||Q|cos = R 은 P와 Q에 절대값을 씌우기 때문에,

P와 Q의 내적 연산은 R행렬과 절대값만 유사하게 근사하면 된다. 그래서 최초 P, Q 내에 음수값이 있으면 학습 후에도 음수값이 나올 수 있다'

감사합니다.

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Instructor

네, 나올 수 있습니다.

최초 P, Q 값을 보시면 -값이 많이 포함되어 있습니다. - 값을 덜 나오게 하시려면 P, Q값을 아래와 같이 조절해 보십시요.

P = np.random.normal(loc=1.0, scale=1, size=(num_users, K))
Q = np.random.normal(loc=1.0, scale=1, size=(num_items, K))

thinking9862's profile image
thinking9862

asked

Ask a question