작성
·
454
0
안녕하세요. 강사님.
강의 초반에 임의 행렬 R로 예측행렬을 구하는 부분에서, R 행렬에 데이터를 추가해서 예측 평점이 어떻게 변하는지 실습해봤습니다.
아래처럼 마지막에 list 하나 추가해주었습니다.
그리고 나머지 과정을 모두 동일하게 하여 Matrix 분해 후 재결합 하였는데 아래와 같이 음수값이 나옵니다.
피쳐 값이 모두 양수인데 내적으로 구한 예측 행렬에 음수 값이 나올 수 있는지요?
그럼 답변 부탁드립니다.
감사합니다.
답변 3
0
말씀하신 의미 보다는 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
답변 감사합니다. 강사님.
제가 아래처럼 이해한 것이 맞는지요?
'P와 Q를 dot product로 R에 근사해가는 과정 |P||Q|cos = R 은 P와 Q에 절대값을 씌우기 때문에,
P와 Q의 내적 연산은 R행렬과 절대값만 유사하게 근사하면 된다. 그래서 최초 P, Q 내에 음수값이 있으면 학습 후에도 음수값이 나올 수 있다'
감사합니다.
0
네, 나올 수 있습니다.
최초 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))