저는 python/pandas/numpy/sklearn에 콘텐츠 기반 추천 시스템을 구축하려고합니다.sklearn 또는 numpy가있는 콘텐츠 기반 추천 시스템
여기에 관련된 행렬과 그 크기 :
X : n_customers * n_features
은 Y가 (각 고객의 특징을 포함) n_customers *이 n_products는 (각 제품 각 고객에 의해 주어진 점수를 포함을)
시타 : n_features * n_products
목적은 모든 제품 (X * 세타)에 고객에 의해 주어진 점수를 예측할 수 있도록하기 위해 시타를 배우는 것입니다. 사실, Y는 희소 행렬이며 고객 점수는 전체 제품 수량 중 매우 작은 비율입니다. 이것이 Y가 많은 NaN 값을 포함하고있는 이유입니다.
이 많은 대상과 회귀 문제 (여기 = 제품 대상)입니다 :
여기 내 문제입니다. 그러나 Null 값에 대해서만 회귀를 수행하려고합니다. NaN의 수가 제품마다 다르므로 어떻게 벡터화 할 수 있습니까?
각각 1000 개의 제품과 100,000 개의 고객이 있고 각 제품마다 20 개의 기능이 있다고 가정합니다.
각 제품에 대해 Null 값에 대한 회귀 분석이 필요합니다. 따라서 벡터화가 없으면 길이가 20 인 Theta 벡터를 각각 1000 개의 회귀 변수로 학습해야합니다.
가능한 경우이 문제를 sklearn으로 해결하고 싶습니다. 예를 들어 능선 회귀는 여러 대상 (매트릭스로 Y)을 고려합니다.
충분히 명확하길 바랍니다.
도움 주셔서 감사합니다.
null 값이있는 이유는 모르겠지만'scipy.sparce' 행렬은 누락 된 값을 0으로 나타냅니다. 또한, 얼마나 많은 제품 기능이 있는지 모릅니다. 맞습니까? – Akavall
사실 Y는 팬더의 피벗 명령으로 만든 DataFrame입니다. 저는 스파 스라는 용어를 사용하여 1000 개 이상의 제품이있는 동안 각 고객이 몇 가지 제품 (예를 들어 2에서 6)만을 평가한다는 사실을 강조했습니다. 나는 각 고객을위한 기능을 가지고있다. 이것은 X DataFrame (n_customers * n_features)에 표시됩니다. 고객에 관한 모든 기능은 알려진 바입니다. – user2195252
문제가 발생한 것부터'sklearn.linear_model.ridge' 회귀 객체를 사용하지 않는 것이 좋습니다. 예, 멀티 타겟입니다. 그러나 현재로서는 이러한 타겟을 통해 어떤 방식 으로든 정보를 연결하거나 공유 할 수 없습니다. 공분산 행렬. 문제에는 많은 누락 값이 있기 때문에 대상 제품간에 공유되는 정보를 암시 적 또는 명시 적으로 사용하는 것이 중요합니다. 매트릭스 완성 기술을 살펴 보셨습니까? 이것은 정확하게 당신이하려고하는 것이 아니지만 도움이 될 수 있습니다. 예를 들어 X와 Y를 수평으로 붙이면 누락 된 값을 대체하려고 할 수 있습니다. – eickenberg