您的位置:首页 > 产品设计 > UI/UE

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 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mahout maven hadoop linux java
相关文章推荐