Salut communauté Mahout à SO!Comment faire en sorte que Mahout recommender fonctionne plus vite?
J'ai quelques questions sur l'accélération des calculs de recommandation. Sur mon serveur, Mahout est installé sans Hadoop. JRuby est également utilisé pour le script de recommandation. Dans la base de données j'ai 3k utilisateurs et 100k éléments (270k éléments dans la table de jointure). Ainsi, lorsque l'utilisateur demande des recommandations du script simple commence son travail:
D'abord, il établit une connexion db en utilisant PGPoolingDataSource
comme ceci:
connection = org.postgresql.ds.PGPoolingDataSource.new()
connection.setDataSourceName("db_name");
connection.setServerName("localhost")
connection.setPortNumber(5432)
connection.setDatabaseName("db_name")
connection.setUser("mahout")
connection.setPassword("password")
connection.setMaxConnections(100)
connection
Je reçois cet avertissement:
WARNING: You are not using ConnectionPoolDataSource. Make sure your DataSource pools connections to the database itself, or database performance will be severely reduced.
Toute idée comment fixer cette?
Après je crée des recommandations:
model = PostgreSQLJDBCDataModel.new(
connection,
'stars',
'user_id',
'repo_id',
'preference',
'created_at'
)
similarity = TanimotoCoefficientSimilarity.new(model)
neighborhood = NearestNUserNeighborhood.new(5, similarity, model)
recommender = GenericBooleanPrefUserBasedRecommender.new(model, neighborhood, similarity)
recommendations = recommender.recommend user_id, 30
Pour l'instant, il faut environ 5-10 secondes pour générer recommandation pour un utilisateur. La question est comment faire des recommandations plus rapidement (200ms serait bien)?
Sean, j'espérais obtenir votre réponse, merci beaucoup - ReloadFromJDBCDataModel était exactement ce dont j'avais besoin. Sans recharger cela prend 8 secondes pour un utilisateur et avec recharger j'ai traité 119 utilisateurs en 18 sec. Il est 53x accélérer! – makaroni4