3

저는 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)을 고려합니다.

충분히 명확하길 바랍니다.

도움 주셔서 감사합니다.

+0

null 값이있는 이유는 모르겠지만'scipy.sparce' 행렬은 누락 된 값을 0으로 나타냅니다. 또한, 얼마나 많은 제품 기능이 있는지 모릅니다. 맞습니까? – Akavall

+0

사실 Y는 팬더의 피벗 명령으로 만든 DataFrame입니다. 저는 스파 스라는 용어를 사용하여 1000 개 이상의 제품이있는 동안 각 고객이 몇 가지 제품 (예를 들어 2에서 6)만을 평가한다는 사실을 강조했습니다. 나는 각 고객을위한 기능을 가지고있다. 이것은 X DataFrame (n_customers * n_features)에 표시됩니다. 고객에 관한 모든 기능은 알려진 바입니다. – user2195252

+0

문제가 발생한 것부터'sklearn.linear_model.ridge' 회귀 객체를 사용하지 않는 것이 좋습니다. 예, 멀티 타겟입니다. 그러나 현재로서는 이러한 타겟을 통해 어떤 방식 으로든 정보를 연결하거나 공유 할 수 없습니다. 공분산 행렬. 문제에는 많은 누락 값이 있기 때문에 대상 제품간에 공유되는 정보를 암시 적 또는 명시 적으로 사용하는 것이 중요합니다. 매트릭스 완성 기술을 살펴 보셨습니까? 이것은 정확하게 당신이하려고하는 것이 아니지만 도움이 될 수 있습니다. 예를 들어 X와 Y를 수평으로 붙이면 누락 된 값을 대체하려고 할 수 있습니다. – eickenberg

답변

0

나는 당신이 일을하고 피어슨의 공동을 사용하기 전에 당신이 널 (필드를 작성해야 -relation 협업 필터링 기술의 사용이

을 달성 할 수 있도록 중심 코사인 유사성/피어슨 corelation를 사용할 수 있다고 생각하는 이제는 pearson co 관계가 0에 가까운 유사도 행렬을 중심에 두어 최적의 추천을 제공합니다.