List of usage examples for org.apache.mahout.cf.taste.impl.recommender.svd FilePersistenceStrategy FilePersistenceStrategy
public FilePersistenceStrategy(File file)
From source file:org.plista.kornakapi.core.config.FactorizationbasedRecommenderConfig.java
License:Apache License
@Override public KornakapiRecommender buildRecommenderFromConfig(Configuration conf, DataModel persistentData) throws IOException, TasteException { String name = this.getName(); File modelFile = new File(conf.getModelDirectory(), name + ".model"); PersistenceStrategy persistence = new FilePersistenceStrategy(modelFile); if (!modelFile.exists()) { createEmptyFactorization(persistence); }//from ww w . j av a 2s . c om CandidateItemsStrategy allUnknownItemsStrategy = new CachingAllUnknownItemsCandidateItemsStrategy( persistentData); FoldingFactorizationBasedRecommender svdRecommender = new FoldingFactorizationBasedRecommender( persistentData, allUnknownItemsStrategy, persistence); return svdRecommender; }
From source file:org.plista.kornakapi.core.training.FactorizationbasedInMemoryTrainer.java
License:Apache License
@Override protected void doTrain(File targetFile, DataModel inmemoryData, int numProcessors) throws IOException { try {// w w w . j a v a 2 s .com if (inmemoryData.getNumItems() >= 5 && inmemoryData.getNumUsers() >= 10) {//preventing matrix singularity ALSWRFactorizer factorizer = new ALSWRFactorizer(inmemoryData, conf.getNumberOfFeatures(), conf.getLambda(), conf.getNumberOfIterations(), conf.isUsesImplicitFeedback(), conf.getAlpha(), numProcessors); long start = System.currentTimeMillis(); Factorization factorization = factorizer.factorize(); long estimateDuration = System.currentTimeMillis() - start; if (log.isInfoEnabled()) { log.info("Model trained in {} ms", estimateDuration); } new FilePersistenceStrategy(targetFile).maybePersist(factorization); } } catch (Exception e) { throw new IOException(e); } }
From source file:org.plista.kornakapi.web.servlets.BaseServlet.java
License:Apache License
protected void createRecommenderForLabel(String label) throws IOException, TasteException { Configuration conf = getConfiguration(); List<FactorizationbasedRecommenderConfig> factorizationbasedConfs = conf .getFactorizationbasedRecommenders(); FactorizationbasedRecommenderConfig factorizationbasedConf = factorizationbasedConfs.get(0); String name = factorizationbasedConf.getName() + "_" + label; if (conf.getMaxPersistence()) { storages().put(label, new CandidateCacheStorageDecorator( new MySqlMaxPersistentStorage(conf.getStorageConfiguration(), label, getDataSource()))); } else {//from w w w. j av a 2 s . c o m storages().put(label, new CandidateCacheStorageDecorator( new MySqlStorage(conf.getStorageConfiguration(), label, getDataSource()))); } File modelFile = new File(conf.getModelDirectory(), name + ".model"); PersistenceStrategy persistence = new FilePersistenceStrategy(modelFile); if (!modelFile.exists()) { createEmptyFactorization(persistence); } DataModel persistenData = storages().get(label).recommenderData(); CandidateItemsStrategy allUnknownItemsStrategy = new CachingAllUnknownItemsCandidateItemsStrategy( persistenData); FoldingFactorizationBasedRecommender svdRecommender = new FoldingFactorizationBasedRecommender( persistenData, allUnknownItemsStrategy, persistence, conf.getFactorizationbasedRecommenders().get(0).getNumberOfThreadsForEstimation()); setRecommender(name, svdRecommender); setTrainer(name, new FactorizationbasedInMemoryTrainer(factorizationbasedConf)); String cronExpression = factorizationbasedConf.getRetrainCronExpression(); if (cronExpression == null) { scheduler().addRecommenderTrainingJob(name); } else { scheduler().addRecommenderTrainingJobWithCronSchedule(name, cronExpression); try { scheduler().immediatelyTrainRecommender(name); } catch (SchedulerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (factorizationbasedConf .getRetrainAfterPreferenceChanges() != RecommenderConfig.DONT_RETRAIN_ON_PREFERENCE_CHANGES) { ((DelegatingPreferenceChangeListenerForLabel) preferenceChangeListener()) .addDelegate(new InMemoryPreferenceChangeListener(scheduler(), name, factorizationbasedConf.getRetrainAfterPreferenceChanges()), label); } log.info("Added FactorizationBasedRecommender [{}] using [{}] features and [{}] iterations for label: {}", new Object[] { name, factorizationbasedConf.getNumberOfFeatures(), factorizationbasedConf.getNumberOfIterations(), label }); }