PageRenderTime 36ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/lenskit-eval-balke/src/integration-test/matthias-balke-da.groovy

https://bitbucket.org/matthiasbalke/lenskit
Groovy | 180 lines | 132 code | 19 blank | 29 comment | 0 complexity | 7b7f0667c5a930e34a6cc0b0f8a7966e MD5 | raw file
Possible License(s): LGPL-2.1
  1. /*
  2. * LensKit, an open source recommender systems toolkit.
  3. * Copyright 2010-2011 Regents of the University of Minnesota
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU Lesser General Public License as
  7. * published by the Free Software Foundation; either version 2.1 of the
  8. * License, or (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful, but WITHOUT
  11. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  12. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  13. * details.
  14. *
  15. * You should have received a copy of the GNU General Public License along with
  16. * this program; if not, write to the Free Software Foundation, Inc., 51
  17. * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. */
  19. import org.grouplens.lenskit.ItemRecommender
  20. import org.grouplens.lenskit.RatingPredictor
  21. import org.grouplens.lenskit.baseline.BaselinePredictor
  22. import org.grouplens.lenskit.baseline.GlobalMeanPredictor
  23. import org.grouplens.lenskit.baseline.ItemMeanPredictor
  24. import org.grouplens.lenskit.baseline.ItemUserMeanPredictor
  25. import org.grouplens.lenskit.baseline.UserMeanPredictor
  26. import org.grouplens.lenskit.eval.data.crossfold.RandomOrder
  27. import org.grouplens.lenskit.eval.metrics.StatisticsMetric
  28. import org.grouplens.lenskit.eval.metrics.predict.CoveragePredictMetric
  29. import org.grouplens.lenskit.eval.metrics.predict.MAEPredictMetric;
  30. import org.grouplens.lenskit.eval.metrics.predict.RMSEPredictMetric
  31. import org.grouplens.lenskit.eval.metrics.recommend.DiversityRecommendMetric
  32. import org.grouplens.lenskit.eval.metrics.recommend.FScoreRecommendMetric
  33. import org.grouplens.lenskit.eval.metrics.recommend.DiversityRecommendMetric.DiversityType
  34. import org.grouplens.lenskit.knn.item.ItemItemRatingPredictor
  35. import org.grouplens.lenskit.knn.item.ItemItemRecommender;
  36. import org.grouplens.lenskit.knn.params.NeighborhoodSize
  37. import org.grouplens.lenskit.knn.params.SimilarityDamping
  38. import org.grouplens.lenskit.norm.BaselineSubtractingNormalizer
  39. import org.grouplens.lenskit.norm.VectorNormalizer
  40. import org.grouplens.lenskit.params.NormalizerBaseline
  41. import org.grouplens.lenskit.params.UserVectorNormalizer
  42. import org.grouplens.lenskit.rfrec.RFRecRatingPredictor
  43. import org.grouplens.lenskit.rfrec.RFRecRecommender
  44. import org.grouplens.lenskit.rfrec.parameters.DefaultItemWeight
  45. import org.grouplens.lenskit.rfrec.parameters.DefaultUserWeight
  46. import org.grouplens.lenskit.rfrec.parameters.Gamma
  47. import org.grouplens.lenskit.rfrec.parameters.Iterations
  48. import org.grouplens.lenskit.rfrec.parameters.Lambda
  49. import org.grouplens.lenskit.slopeone.SlopeOneRecommender;
  50. import org.grouplens.lenskit.slopeone.WeightedSlopeOneRatingPredictor
  51. import org.grouplens.lenskit.slopeone.params.DeviationDamping
  52. import org.grouplens.lenskit.svd.FunkSVDRatingPredictor
  53. import org.grouplens.lenskit.svd.FunkSVDRecommender;
  54. import org.grouplens.lenskit.svd.params.FeatureCount
  55. import org.grouplens.lenskit.svd.params.IterationCount
  56. def buildDir = System.getProperty("project.build.directory", ".")
  57. def ml1M = crossfold("ml1M") {
  58. source csvfile("${buildDir}/ml-1M/ratings.dat") {
  59. delimiter "::"
  60. domain {
  61. minimum 1.0
  62. maximum 5.0
  63. precision 1.0
  64. }
  65. }
  66. order RandomOrder
  67. holdout 10
  68. partitions 5
  69. train "${buildDir}/ml-1M/ml-1M.train.%d.csv"
  70. test "${buildDir}/ml-1M/ml-1M.test.%d.csv"
  71. }
  72. def netflix1M = crossfold("Netflix1M") {
  73. source csvfile("${buildDir}/Netflix-1M/Netflix-1M-dense.mldata.gz") {
  74. delimiter ","
  75. domain {
  76. minimum 1.0
  77. maximum 5.0
  78. precision 1.0
  79. }
  80. }
  81. order RandomOrder
  82. holdout 10
  83. partitions 5
  84. train "${buildDir}/Netflix-1M/Netflix-1M.train.%d.csv"
  85. test "${buildDir}/Netflix-1M/Netflix-1M.test.%d.csv"
  86. }
  87. def yahooMovies200k = crossfold("YahooMovies200k") {
  88. source csvfile("${buildDir}/YahooMovies-200k/YahooMovies-200k.mldata.gz") {
  89. delimiter ","
  90. domain {
  91. minimum 1.0
  92. maximum 13.0
  93. precision 1.0
  94. }
  95. }
  96. order RandomOrder
  97. holdout 0.3
  98. partitions 5
  99. train "${buildDir}/YahooMovies-200k/YahooMovies-200k.train.%d.csv"
  100. test "${buildDir}/YahooMovies-200k/YahooMovies-200k.test.%d.csv"
  101. }
  102. trainTest {
  103. depends ml1M
  104. dataset ml1M
  105. depends netflix1M
  106. dataset netflix1M
  107. depends yahooMovies200k
  108. dataset yahooMovies200k
  109. output "${buildDir}/eval-output/eval-output.csv"
  110. numRecs 5
  111. metric CoveragePredictMetric
  112. metric MAEPredictMetric
  113. metric RMSEPredictMetric
  114. metric new FScoreRecommendMetric()
  115. metric new DiversityRecommendMetric(DiversityType.HITS)
  116. metric new DiversityRecommendMetric(DiversityType.POPULARITY)
  117. metric new StatisticsMetric()
  118. // algorithm("UserUser") {
  119. // setComponent(RatingPredictor, UserUserRatingPredictor)
  120. // setComponent(PredictNormalizer, VectorNormalizer, MeanVarianceNormalizer)
  121. // setComponent(BaselinePredictor, ItemUserMeanPredictor)
  122. // setComponent(NormalizerBaseline, BaselinePredictor, UserMeanPredictor)
  123. // setComponent(UserVectorNormalizer, VectorNormalizer, BaselineSubtractingNormalizer)
  124. // setComponent(UserSimilarity, Similarity, CosineSimilarity)
  125. // set(SimilarityDamping, 100)
  126. // set(NeighborhoodSize, 30)
  127. // }
  128. //
  129. algorithm("ItemItem") {
  130. setComponent(RatingPredictor, ItemItemRatingPredictor)
  131. setComponent(ItemRecommender, ItemItemRecommender)
  132. setComponent(BaselinePredictor, ItemUserMeanPredictor)
  133. setComponent(UserVectorNormalizer, VectorNormalizer, BaselineSubtractingNormalizer)
  134. set(SimilarityDamping, 100)
  135. set(NeighborhoodSize, 30);
  136. }
  137. algorithm("WeightedSlopeOne") {
  138. setComponent(RatingPredictor, WeightedSlopeOneRatingPredictor)
  139. setComponent(ItemRecommender, SlopeOneRecommender)
  140. setComponent(NormalizerBaseline, BaselinePredictor, GlobalMeanPredictor)
  141. setComponent(UserVectorNormalizer, VectorNormalizer, BaselineSubtractingNormalizer)
  142. setComponent(BaselinePredictor, ItemUserMeanPredictor)
  143. set(DeviationDamping, 0)
  144. }
  145. algorithm("RFRec"){
  146. setComponent(ItemRecommender, RFRecRecommender)
  147. setComponent(RatingPredictor, RFRecRatingPredictor)
  148. set(DefaultUserWeight, 0.4)
  149. set(DefaultItemWeight, 0.6)
  150. set(Iterations, 15)
  151. set(Gamma, 0.001)
  152. set(Lambda, 0.002)
  153. }
  154. algorithm("FunkSVD") {
  155. setComponent(RatingPredictor, FunkSVDRatingPredictor)
  156. setComponent(ItemRecommender, FunkSVDRecommender)
  157. setComponent(BaselinePredictor, ItemUserMeanPredictor)
  158. set(FeatureCount, 30)
  159. set(IterationCount, 100)
  160. }
  161. }