# Research on Hybrid Recommendation Model for Personalized Recommendation Scenarios
## 3 NRH Recommendation Model
### Hybrid Forecast
Construct a static history portrait of the user: (a) initialize user static history vector: user_static_profile = initialize_embeddings(embedding_dimension) (b) for user in click_history. for item in click_history [user]. item_embedding = v2 [item] user_static_profile [user] + = item_embedding user_static_profile [user] = user_embeddings[user] - cold_item_embedding 4. User preference propagation: (a) Initialize the user dynamic preference profile: user_dynamic_profile = [] (b) Update the profile according to user preference propagation: user_dynamic_profile, v1 = RippleNet(user_static_profile, v2, click_history) (c) User profile construction: user_embeddings = User_profile_construction(user_static_profile, user_dynamic_profile) (d) Item portrait update: item_embeddings = Item_portrait_fusion(v1,v2)
```  
**Algorithm 1** NRH algorithm ```
5. Predict preference scores. (a) initialize recommendation score: recommendation_scores = {} (b) for user in user_embeddings. for item in item_list. if item not in click_history[user]. user_embedding = user_embeddings[user] item_embedding = item_embeddings[item] score = compute_score(user_embedding, item_embedding) recommendation_scores[(user, item)] = score
6. Generate recommendation results. (a) Sort by recommendation score: recommendation_list = sort_recommendations(recommendation_scores)
7. Return the recommendation results recommendation_list. ```

**Algorithm 1**_Cont_. ## 4 Experiments

### Dataset

In the experiments of this paper, as shown in Table 1, the following three public datasets, namely, MovieLens-1M, Book-Crossing, and Last.FM, were utilized, and the item knowledge graph constructed in the datasets was used. MovieLens-1M is a public dataset on movie recommendations, which includes 1,000,209 rating data from 6040 users and 3706 movies. The corresponding knowledge graph contains 1,241,995 triples with 182,011 entities and 12 relationships. Book-Crossing is a public dataset on book recommendations, including 1,149,780 ratings data from 105,283 users and 340,555 books. The corresponding knowledge graph contains 151,500 triples with 77,903 entities and 25 relationships. Last.FM is a public dataset on music recommendations, including 92,834 rating data from 1892 users and 17,632 artists, and the corresponding knowledge graph contains 15,518 triples with 9366 entities with 60 relations. ### Experimental Environment and Evaluation Index

The operating system used for the experiments was ubuntu, version Ubuntu 22.04.2 LTS, and the experimental environment used included cuda10.2, python3.8.13, torch1.10.1 + cu102, numpy1.23.5, etc. The values of the NRH model parameters are given in Table 2, where d denotes the vector dimension, H represents the Hop count, lr indicates the learning rate, \(\lambda_{1}\) denotes the weight of the l2 regularization term, \(\lambda_{2}\) denotes the weight of the KGE term, \(\lambda_{2}^{\prime}\) denotes the weight of the Node2 vec-side term, and \(\alpha\) denotes the weight of the mixed recommendation mode module. In this paper, each dataset was processed. Each dataset was divided into three parts, namely, training set, validation set, and test set, and the optimal results were selected after conducting five experiments. \begin{table}
\begin{tabular}{c c c c c c c} \hline \hline
**Dataset** & **\#Users** & **\#Items** & **\#Interaction** & **\#Triples** & **\#Entities** & **\#Relationship** \\ \hline MovieLens-1M & 6036 & 2445 & 753,772 & 1,241,995 & 182,011 & 12 \\ Book-Crossing & 17,860 & 14,967 & 139,746 & 151,500 & 77,903 & 25 \\ Last.FM & 1872 & 3846 & 42,346 & 15,518 & 9366 & 60 \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Basic statistical information of the dataset. The recommendation accuracy comparison experiment used ACC (accuracy) and AUC (area under curve) as evaluation metrics. Among them, ACC denotes the accuracy rate of recommendation, and AUC indicates the area under the ROC curve with the coordinate axes, taking values between 0.5 and 1.