首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简单推荐系统

简单推荐系统
EN

Stack Overflow用户
提问于 2014-05-04 07:09:04
回答 3查看 1.8K关注 0票数 1

大家好,我正在尝试建立一个非常简单的推荐系统。我想不出它背后的伪代码,但我知道其中的逻辑。

约翰买A B C D E亚历克斯买A B X Y Z

我买A,B,C,F,R

我会从John那里得到推荐,因为我和他有更多的匹配。因此,D和E项将被推荐。这很简单。有没有人能帮我一下?

EN

回答 3

Stack Overflow用户

发布于 2014-05-04 11:31:40

这是一种暴力的方式。可能不是最优雅的,但它是有效的:

代码语言:javascript
运行
复制
// $for = the user we are getting rec's for
// $user_array = the list of all users
function recommendations($for, $user_array) {

    // For storing the best matching user
    $best_match = array('name'=>'', 'count'=>0);

    foreach ($user_array as $name=>$items) {

        // If this user, skip
        if ($name==$for) continue;

        // Number of matching records
        $c = count(array_intersect($items, $user_array[$for]));

        // If better than the current best match, replace
        if ($c > $best_match['count']) {
            $best_match = array('name'=>$name, 'count'=>$c);
        }
    }

    // If no matches found, return false
    if ($best_match['count']==0)
        return false;

    // Return array of recommendations
    return array_diff($user_array[$best_match['name']], $user_array[$for]);
}

示例用法:

代码语言:javascript
运行
复制
$users = array (
    'john' => array('a', 'b', 'c', 'd', 'e'),
    'alex' => array('a', 'b', 'x', 'y', 'z'),
    'me' => array('a', 'b', 'c', 'f', 'r')
);

print_r(recommendations('me', $users));
票数 3
EN

Stack Overflow用户

发布于 2017-08-16 12:56:04

推荐系统可以使用不同的算法来构建,如基于项目的、基于用户的、基于内容的和其他技术。我通常倾向于实现一些算法,然后根据规模找到最好的算法。例如,如果我们使用协同过滤技术和关联规则,我们可以在确定产品/类别推荐时找到置信度、提升和支持。market basket analysis for recommendations

票数 0
EN

Stack Overflow用户

发布于 2020-01-23 21:19:23

如果你正在用Java做一个推荐系统,那么就使用Apache Mahout。根据你的问题,你必须使用ItemBasedRecommendation,算法应该是LogLikelihoodSimilarity。

代码语言:javascript
运行
复制
DataModel model = new FileDataModel(new File("path/fileName.csv"));

ItemSimilarity similarity = new LogLikelihoodSimilarity(model);

GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(model, similarity);

List<RecommendedItem> recommendations = recommender.recommend(userNumberForRecommendation, numberOfRecommendation);

for(RecommendedItem recommendation:recommendations) {
        System.out.println(recommendation);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23450766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档