인프런 커뮤니티 질문&답변

Abraham님의 프로필 이미지

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

파이썬 코드를 이용한 경사하강법 기반의 행렬 분해 구현과 잠재요인 협업 필터링 기반 영화 추천 구현 실습

예측 행렬 음수값 문의

작성

·

455

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

Abraham님의 프로필 이미지
Abraham
질문자

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

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

'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))

Abraham님의 프로필 이미지

작성한 질문수

질문하기