Mahout小结:关于评估推荐系统估计值与实际值的偏差出现异常:DataModel doesn't have preference values
2016-08-05 20:23
976 查看
该错误见于《mahout实战》2015年5月河北第4次印刷,在此书的第3.3.2 无偏好值时的内存级表示,书中第30-31页代码处。ps:别的版本不清楚。
错误提示信息如下:
16/08/05 20:22:47 INFO file.FileDataModel: Creating FileDataModel for file e:\ua.base
16/08/05 20:22:47 INFO file.FileDataModel: Reading file info...
16/08/05 20:22:47 INFO file.FileDataModel: Read lines: 90570
16/08/05 20:22:47 INFO model.GenericDataModel: Processed 943 users
16/08/05 20:22:47 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.9 of GenericBooleanPrefDataModel[users:1,2,3...]
Exception in thread "main" java.lang.IllegalArgumentException: DataModel doesn't have preference values
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
at org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity.<init>(PearsonCorrelationSimilarity.java:74)
at org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity.<init>(PearsonCorrelationSimilarity.java:66)
at com.wang.mahout.MavenMahoutApp.TestBooleanPrefDataModel$1.buildRecommender(TestBooleanPrefDataModel.java:36)
at org.apache.mahout.cf.taste.impl.eval.AbstractDifferenceRecommenderEvaluator.evaluate(AbstractDifferenceRecommenderEvaluator.java:124)
at com.wang.mahout.MavenMahoutApp.TestBooleanPrefDataModel.main(TestBooleanPrefDataModel.java:50)
出现错误的原因是,在对无偏好值的推荐系统,进行评估的时候,皮尔逊相关度计算(PearsonCorrelationSimilarity)的算法在mahout中需要偏好值,如果在无偏好值的推荐系统中使用这样算法,会出现如上面错误提示的:DataModel doesn't have preference values,数据模型没有偏好值的错误提示。
解决的方法也很简单,就是不使用需要偏好值的算法,改用其他布尔型偏好的算法,例如: Tanimoto coefficient算法和 log-likelihood算法, 代码中的具体实现类如下:TanimotoCoefficientSimilarity
和LogLikelihoodSimilarity 。
错误提示信息如下:
16/08/05 20:22:47 INFO file.FileDataModel: Creating FileDataModel for file e:\ua.base
16/08/05 20:22:47 INFO file.FileDataModel: Reading file info...
16/08/05 20:22:47 INFO file.FileDataModel: Read lines: 90570
16/08/05 20:22:47 INFO model.GenericDataModel: Processed 943 users
16/08/05 20:22:47 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.9 of GenericBooleanPrefDataModel[users:1,2,3...]
Exception in thread "main" java.lang.IllegalArgumentException: DataModel doesn't have preference values
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
at org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity.<init>(PearsonCorrelationSimilarity.java:74)
at org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity.<init>(PearsonCorrelationSimilarity.java:66)
at com.wang.mahout.MavenMahoutApp.TestBooleanPrefDataModel$1.buildRecommender(TestBooleanPrefDataModel.java:36)
at org.apache.mahout.cf.taste.impl.eval.AbstractDifferenceRecommenderEvaluator.evaluate(AbstractDifferenceRecommenderEvaluator.java:124)
at com.wang.mahout.MavenMahoutApp.TestBooleanPrefDataModel.main(TestBooleanPrefDataModel.java:50)
出现错误的原因是,在对无偏好值的推荐系统,进行评估的时候,皮尔逊相关度计算(PearsonCorrelationSimilarity)的算法在mahout中需要偏好值,如果在无偏好值的推荐系统中使用这样算法,会出现如上面错误提示的:DataModel doesn't have preference values,数据模型没有偏好值的错误提示。
解决的方法也很简单,就是不使用需要偏好值的算法,改用其他布尔型偏好的算法,例如: Tanimoto coefficient算法和 log-likelihood算法, 代码中的具体实现类如下:TanimotoCoefficientSimilarity
和LogLikelihoodSimilarity 。
相关文章推荐
- Mahout:DataModel doesn't have preference values
- Mahout:DataModel doesn't have preference values
- 关于推荐系统的一些小结
- mahout 使用grouplens数据集定制datamodel以及评估
- mahout连接mysql,使用ReloadFromJDBCDataModel,采用SVD推荐算法。
- 推荐系统思考小结(基于Mahout)
- 推荐系统思考小结(基于Mahout)
- 推荐系统思考小结(基于Mahout)
- mahout中布尔型数据推荐系统的生成与评估
- 推荐系统思考小结(基于Mahout)
- 关于Android7.0版本及其以上系统获取本地数据(图片和文件)报系统出现异常,正在退出问题
- 关于Data Access Blok (SqlHelper.cs)使用时出现"对象必须实现 IConvertible/Object must implement IConvertible."异常
- 关于用.net系统在运行时出现的异常
- mahout之推荐系统源码笔记(1) ---预处理之PreparePreferenceMatrixJob
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。 在 BatchImportEntryTable.GetExcelData(String FileName)
- 推荐系统思考小结(基于Mahout)
- 我用iret进行任务切换时,系统出现异常,来帮我看看是什么问题
- 关于--在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 关于Response.redirect和Response.End出现线程中止异常的处理
- 关于Entity Data model&掌握灵活的数据模型 EntityFramework(1)(翻译)