Skip to content

Pre-train Embedding in LightFM Recommender System Framework

Notifications You must be signed in to change notification settings

rahmanidashti/pretrain-lightfm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Pre-train LightFM

Pre-train embedding in LightFM recommender system framework

How to use

When you install LightFM package, you will replace the lightfm.py with the original one. Here, we just implement the Item Embedding but you can follow the structure and implement the User Embedding. You can use a .txt file that each row shows the item embedding.

Method

def __init__(self, no_components=10, k=5, n=10,
                 learning_schedule='adagrad',
                 loss='logistic',
                 learning_rate=0.05, rho=0.95, epsilon=1e-6,
                 item_alpha=0.0, user_alpha=0.0, max_sampled=10,
                 random_state=None, user_pretrain= False, user_pretrain_file=None,
                 item_pretrain=False, item_pretrain_file=None)

If you set the item_pretrain = True then the pre-train item embedding will be considered as follows:

# Pre-train item embedding
if self.item_pretrain:
  print("Pre-Train Item Embedding Lunch.")

  Item_Embeddings_File = self.item_pretrain_file
  Item_Embeddings = open(Item_Embeddings_File, 'r').readlines()
  item_embeddings = np.ndarray((no_item_features, no_components)).astype(np.float32)

  Item = 0
  for eachline in Item_Embeddings:
    ItemVectorElements = eachline.split()
    for element in range(0, no_components):
      item_embeddings[Item][element] = ItemVectorElements[element]
    Item = Item + 1

  self.item_embeddings = item_embeddings

  print("Pre-Train Item Embedding Finished.")

else:
  self.item_embeddings = ((self.random_state.rand(no_item_features, no_components) - 0.5) / no_components).astype(np.float32)

About

Pre-train Embedding in LightFM Recommender System Framework

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages