DataModel doesn't have preference values

本文介绍了使用Mahout和Hadoop构建简单智能推荐系统的实践过程,重点解决DataModel中未找到偏好值的问题,并展示了如何利用Slope One算法进行推荐。

mahout和hadoop实现简单的智能推荐系统的时候,出现了一下几个方面的错误

DataModel doesn't have preference values

意思是DataModel中没有找到初始值,通过现有的算法,我们可以初试话算法,从而实现如下:

  DataModel model = new FileDataModel(new File("F:/htt/work/recommend/src/main/resource/ratings.csv"));
             CachingRecommender cachingRecommender=new CachingRecommender(new SlopeOneRecommender(model));
             for (LongPrimitiveIterator iter=model.getUserIDs(); iter.hasNext(); ) {
                long userId=iter.nextLong();
                 List<RecommendedItem> list =cachingRecommender.recommend(userId, RECOMMENDER_NUM);
                 System.out.printf("uid:%s", userId);
                 for (RecommendedItem ritem : list) {
                        System.out.printf("(%s,%f)", ritem.getItemID(), ritem.getValue());
                    }
                    System.out.println();

我没有修改的代码如下:

  DataModel model=new FileDataModel(new File("/home/xuyao/mahout/test_data/intro.csv"));
            //UserSimilarity封装了用户间相似性的概念
            UserSimilarity similarity=new PearsonCorrelationSimilarity(model);
            //UserNeighborhood封装了最相似用户组的概念.  2是用户的邻域,指的是最相似的几个用户
            UserNeighborhood neighborhood=new NearestNUserNeighborhood(2,similarity,model);
            //Recommender推荐引擎
            Recommender recommender=new GenericUserBasedRecommender(model,neighborhood,similarity);
            List<RecommendedItem> recommendations=recommender.recommend(1,1);
            for(RecommendedItem recommendation : recommendations)
                System.out.println(recommendation);
修改之后采用的是slope算法进行

转载于:https://www.cnblogs.com/youran-he/p/7813661.html

### Model Preference 的概念 Model preference 在机器学习中指的是对于不同模型的选择偏好,这种偏好的确立基于多个因素,包括但不限于模型性能、复杂度以及解释能力。当面对多种可用模型时,研究者或工程师会依据具体应用场景的需求来决定哪个模型更为合适。 在实际应用中,model preference 不仅涉及评估模型的表现指标(如准确性),还包括考虑计算资源消耗、部署难易程度等因素[^1]。例如,在某些情况下,尽管更复杂的模型能够提供更高的精度,但如果简单模型已经满足业务需求,则后者可能是更好的选择,因为其维护成本更低且更容易理解。 此外,随着数据量的增长,如何有效地从大量数据中提取有价值的信息成为了一项重要挑战。此时,具有更好泛化能力和更强解释性的模型往往会受到青睐,这有助于确保所选模型不仅能在现有数据上表现良好,而且可以对未来未见的数据做出合理的预测[^2]。 为了实现这一目标,可以通过引入概率框架和贝叶斯推理方法来自动生成与给定数据集最为契合的模型结构及其参数设置,并对其背后的工作机制给出清晰说明。这样的过程使得最终选定的模型既具备良好的拟合效果又易于被人类专家解读。 ```python import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression, Ridge, Lasso # 假设 X 是特征矩阵,y 是标签向量 X_train, X_test, y_train, y_test = train_test_split(X, y) models = { 'Linear Regression': LinearRegression(), 'Ridge Regression': Ridge(alpha=1.0), 'Lasso Regression': Lasso(alpha=0.1) } for name, model in models.items(): model.fit(X_train, y_train) score = model.score(X_test, y_test) print(f'{name} R^2 Score on test set: {score:.4f}') ``` 此代码片段展示了三种不同的回归算法:线性回归、岭回归和套索回归之间的比较。通过这种方式可以帮助建立关于哪种类型的模型更适合当前任务的理解,从而形成相应的 model preference
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值