ich eine der Stärken der lightfm erinnern ist, dass das Modell nicht von Kaltstartproblem leidet, sowohl Benutzer und Artikel Kaltstart: lightfm original paperLightfm: Handhabung Benutzer und Artikel Kaltstart
Allerdings habe ich noch don verstehe nicht, wie man lightfm benutzt, um das Kaltstartproblem zu lösen. Ich trainierte mein Modell auf user-item interaction data
. Wie ich es verstehe, kann ich nur eine Vorhersage für Profil-IDs treffen, die in meinem Datensatz vorhanden sind.
def predict(self, user_ids, item_ids, item_features=None,
user_features=None, num_threads=1):
"""
Compute the recommendation score for user-item pairs.
Arguments
---------
user_ids: integer or np.int32 array of shape [n_pairs,]
single user id or an array containing the user ids for the
user-item pairs for which a prediction is to be computed
item_ids: np.int32 array of shape [n_pairs,]
an array containing the item ids for the user-item pairs for which
a prediction is to be computed.
user_features: np.float32 csr_matrix of shape [n_users, n_user_features], optional
Each row contains that user's weights over features.
item_features: np.float32 csr_matrix of shape [n_items, n_item_features], optional
Each row contains that item's weights over features.
num_threads: int, optional
Number of parallel computation threads to use. Should
not be higher than the number of physical cores.
Returns
-------
np.float32 array of shape [n_pairs,]
Numpy array containing the recommendation scores for pairs defined
by the inputs.
"""
self._check_initialized()
if not isinstance(user_ids, np.ndarray):
user_ids = np.repeat(np.int32(user_ids), len(item_ids))
assert len(user_ids) == len(item_ids)
if user_ids.dtype != np.int32:
user_ids = user_ids.astype(np.int32)
if item_ids.dtype != np.int32:
item_ids = item_ids.astype(np.int32)
n_users = user_ids.max() + 1
n_items = item_ids.max() + 1
(user_features,
item_features) = self._construct_feature_matrices(n_users,
n_items,
user_features,
item_features)
lightfm_data = self._get_lightfm_data()
predictions = np.empty(len(user_ids), dtype=np.float64)
predict_lightfm(CSRMatrix(item_features),
CSRMatrix(user_features),
user_ids,
item_ids,
predictions,
lightfm_data,
num_threads)
return predictions
alle Vorschläge oder Hinweise, um mein Verständnis zu helfen würde wirklich geschätzt werden. danke
hi @Maciej Kula danke für die Erklärung, jetzt verstehe ich, dass das Kaltstart-Problem für einen Benutzer oder ein Element kann durch die Einbeziehung der Funktionen des Modells gelöst werden. Es ist mir jedoch immer noch unklar, wie ich das machen soll. Also würde ich einem neuen Benutzer eine neue Feature-Matrix für diesen Benutzer erstellen und dann 1) sollte ich eine Funktion erstellen, um ähnliche Benutzer nach dieser Feature-Matrix zu finden? oder 2) Kann ich das von mir trainierte Modell direkt verwenden, um eine Empfehlung für diesen neuen Benutzer zu generieren? Nochmals vielen Dank – bohr
Sie würden eine Feature-Matrix (eine Zeile, wirklich) für den neuen Benutzer erstellen und direkt in den 'model.predict' Methoden verwenden. Ein Teil der Verantwortung des Modells besteht darin, diese Ähnlichkeit automatisch für Sie zu modellieren. –
ah habe es, aber für die 'ids'-Parameter, was soll ich setzen? – bohr