0

예측에 음수가 아닌 행렬 인수 분해 및 음수가 아닌 2 진을 사용하고 데이터의 양에 따라 예측이 얼마나 좋은지 평가하고 싶습니다. 주어진. 예를 들어 원래의 데이터불완전한 데이터로부터 예측을 평가하는 방법 모든 데이터가 완전하지 않은 경우

original = [1, 1, 0, 1, 1, 0] 

이었다 그리고 지금은 주어진 데이터가 불완전 때 원래의 데이터를 재구성하는 방법을 잘보고 싶어 :

incomplete1 = [1, 1, 0, 1, 0, 0], 
incomplete2 = [1, 1, 0, 0, 0, 0], 
incomplete3 = [1, 0, 0, 0, 0, 0] 

그리고 나는 모든 예를 들어이 작업을 수행 할 수 큰 데이터 세트에서. 이제 문제는 원본 데이터의 양이 양수 데이터의 양이 다르다는 것입니다. 위의 원본은 4이지만 데이터 세트의 다른 예는 더 많거나 적을 수 있습니다. 4 개의 포지티브로 평가 라운드를한다고 가정 해 봅시다. 그러나 데이터 세트의 절반은 4 개의 포지티브를 가지고 나머지 절반은 5, 6 또는 7을가집니다. 4 개의 포지티브로 절반을 제외해야합니까? "예측"이 훨씬 나아 졌나요? 다른면에서 나는 데이터를 제외하면 trainingset을 바꿀 것이다. 내가 무엇을 할 수 있을지? 아니면이 경우 4로 평가해서는 안됩니까?

편집 :

은 기본적으로 내가 입력 행렬을 재구성 할 수있는 방법을 잘보고 싶어요. 간단히 말하면, "원본"은 4 개의 영화를 본 사용자를 나타냅니다. 그리고 나는 사용자가 예민하게 보았던 단지 1 개의 영화를 기반으로 각 사용자를 얼마나 잘 예측할 수 있는지 알고 싶습니다. 나는 많은 영화에 대한 예측을 얻는다. 그런 다음 ROC 및 Precision-Recall 곡선 (예측의 top-k 사용)을 그립니다. 그리고 나는이 모든 것을 사용자가 실제로 본 n 개의 영화로 반복 할 것입니다. 매 n마다 내 플롯에서 ROC 곡선을 얻을 것입니다. 예를 들어 내가 사용하는 지점으로 올 때. 사용자가 실제로 본 영화 4 편을보고 그가 본 모든 영화를 예언했지만 그는 그 4 편만을 보았고 그 결과는 너무 좋아졌습니다.

내가 이것을하는 이유는 내 시스템이 합리적인 예측을하기 위해 얼마나 많은 "감시 영화"를 볼 수 있는지를 보는 것입니다. 이미 3 개의 영화가 시청 중일 때 좋은 결과 만 반환한다면 제 신청서에는 그렇게 좋지 않을 것입니다.

답변

1

나는 당신이 측정하려고하는 것이 무엇인지, 당신의 의견이 무엇인지 명확히하는 것이 중요하다고 생각합니다.

입력 행렬을 재구성하는 기능을 실제로 측정하고 있습니까? 협업 필터링에서 입력 행렬 자체는 본질적으로 매우 불완전합니다. 추천인의 전체 업무는 일부 공백을 채우는 것입니다. 입력을 완벽하게 재구성하면 아무런 답을주지 못할 것입니다. 일반적으로 평가 메트릭은 협업 필터링에 NNMF를 사용할 때 상당히 다릅니다.

FWIW 매트릭스 분해를 기반으로 한 CF - 정확히으로 상업화했습니다. 그것은 Mahout에서의 저의 작업을 기반으로합니다. tests like Area under curve (AUC) in the product에 대한 기본 지원에 대한 문서를 이미 읽을 수 있습니다.

여기에서 "원본"은 입력 행렬에서 한 사용자의 한 행에 대한 예입니까? 반에 관해 이야기하고 제외 할 때, 어떤 훈련/테스트 분열을 언급하고 있습니까? 각 사용자 분할, 또는 사용자간에 부분 집합 가져 오기? 당신은 재구성 오류를 측정하는 것에 대해 이야기하고있는 것 같기 때문에 아무것도 제외 할 필요가 없습니다. 행렬 요소를 다시 곱하면 입력에 얼마나 가까운 지 알 수 있습니다. "닫기"는 낮은 L2/Frobenius 표준을 의미합니다.

하지만 AUC 나 정밀 호출과 같은 일반적인 권장 사항 테스트에서는 시간에 따라 데이터를 테스트/교육 (최신 데이터는 테스트 데이터) 또는 값 (가장 선호 또는 관련 항목은 테스트 데이터입니다).0을 입력 행렬의 누락 요소로 이해하면 실제로는 "데이터"가 아닙니다. 테스트 데이터가 처음부터 입력되지 않았기 때문에 테스트 데이터가 모두 0 인 상황은 없을 것입니다. 질문은 훈련을위한 1과 테스트를위한 1입니다.

+0

안녕하세요. 재구성이 얼마나 좋은지보고 싶습니다. 내 답변을 내 게시물에 수정으로 저장하려고합니다. – Puckl

+1

당신은 재구성 오류를 측정하고 싶지 않다고 생각합니다. 당신이 필요로하는 것은 정확히 ROC 곡선과 같은 것입니다 (이것은 AUC가 요약 한 것입니다). 질문에 답하기 위해 평소처럼 테스트를 실행하십시오. 그러나 열차 집합, 2 항목, 3 항목 등에서 단 하나의 항목 만 있었던 사용자에 대해서는 AUC를 별도로 계산하십시오. 성능이 등급과 함께 어떻게 변하는 지 명확한 그래프를 얻어야합니다. –

+0

고마워, 나는 이것을 시험 할 것이다! – Puckl

관련 문제