5

python scikit-learn을 사용하여 내 데이터 집합에 NMF를 적용하려고합니다. 내 데이터 집합에 0 값과 누락 값이 있습니다. 그러나 scikit-learn은 데이터 매트릭스에서 NaN 값을 허용하지 않습니다. 일부 게시물은 누락 된 값을 0으로 대체합니다.python scikit에서 누락 된 값을 처리하는 방법 NMF

내 질문은 : 나는 제로로 값 누락 교체 할 경우

  • , 어떻게 알고리즘이 누락 된 값과 실제 0 값을 알 수 있습니까?

  • 누락 된 값을 처리 할 수있는 다른 NMF 구현이 있습니까?

  • 다른 행렬 인수 분해 알고리즘이있는 경우 누락 값 예측을 수행 할 수 있습니까?

+0

와 제로 - 값 누락의 교환 (또는 평균 열 또는 행 또는 평균 ...)의 분류에 의해 알려져 있지 않다. 이 수치는이 수치를 다른 수치로 취급 할 것입니다 (우리는 항상 이러한 방법으로 낮은 순위의 모델이 있다고 가정합니다)./일반적으로, 실종 값을 사용하지 않고 행렬의 낮은 순위 분해를 찾는 것과 비교할 때 실종 값 예측은 (더 강한 가정이 필요한) 더 어려운 문제라고 말할 수 있습니다. 대안 : 일부 일반적인 nmf 문제에 대한 SGD 기반 최적화 도구 작성 (및 알려진 값만 샘플링 가능) – sascha

+1

감사합니다. SGD를 적용 할 때 누락 된 값을 무시하는 것처럼 보입니다. –

+0

같은 문제가 있습니다. 직접 SGD 구현을 작성 했습니까? 그렇다면 어떻게 실행합니까? 지금까지 NMF와 비슷한 성능을 얻을 수 없었습니다. – silentser

답변

1

SGD는 여기에서 작업하지만 scikit-learn에는 작업에 적용 할 수있는 권한이 없습니다. 자신의 글을 쓰는 것은 일을 할 것이지만 이 실제로이 될 것입니다. 매트릭스 분해를 SGD와 직접 병렬 처리 할 수 ​​없기 때문에 느립니다. 확인 분산 된 SGD 알고리즘은 here입니다. 구현하기가 그리 어렵지 않고 작업 속도가 크게 향상됩니다.

+0

좋은 지적, thanks :) –

0

scikit-learn github에는이 문제에 관한 스레드가 있고 주 코드에는 사용 가능하지만 아직 커밋되지 않은 버전이 있습니다.

https://github.com/scikit-learn/scikit-learn/pull/8474

+1

자세한 정보를 추가하십시오. 링크가 만료되었습니다. – empty