经典推荐算法之协同过滤

算法篇--协同过滤 文章目录一、长尾理论二、协同过滤介绍1.基于用户的协同过滤算法(User-based CF,简称UserCF) 一、长尾理论 wiki链接:https://wiki.mbalib.com/wiki/%E9%95%BF%E5%B0%BE%E7%90%86%E8%AE%BA   长尾头部的商品往往代表了绝大多数用户的需求而长尾中的商品往往代表了一小部分用户的个性化需求。因此如果要通过发掘长尾来提高销售额就必须充分研究用户的个性化兴趣。而这正是个性化推荐系统主要解决的问题。   推荐系统通过发掘用户的行为找到用户 阅读详情

本文是个人在学习过程中的总结,如有错误或者不全面的地方,请大家指正,谢谢!

一、 协同过滤算法简介

二、 基于用户的协同过滤算法

2.1 实例

2.2 相似度计算方式

2.2.1 余弦相似度

2.2.2 杰卡德相似系数

2.2.3 皮尔逊相关系数

2.3 最终结果预测

三、 基于物品的协同过滤算法

四、 上代码

4.1 UserCF

4.2 ItemCF

五、 协同过滤算法的问题分析

5.1 稀疏性问题

5.2 冷启动问题

5.3 可扩展性问题


一、 协同过滤算法简介

协同过滤算法是一个经典的推荐算法。它的基本思想是通过对用户历史行为数据的挖掘来发现用户的喜好偏向,基于不同的喜好偏向对用户进行划分并向用户推荐其可能喜好的产品。举个简单的例子,当我们出去买饮品的时候,我们通常会询问身边的朋友有没有推荐的,而我们一般更倾向于同我们口味类似的朋友那里得到推荐。这就是协同过滤的核心思想。

协同过滤算法分为两类,分别是

基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品类似的物品

基于用户的协同过滤算法:给用户推荐与他兴趣相似的其他用户喜欢的物品

二、 基于用户的协同过滤算法

人以群分:找到与该用户具有相似兴趣其他用户,将他们喜欢的但是该用户未曾见过的物品推荐给该用户。

基于用户的协同过滤算法主要分为两个步骤:

(1)找到与用户A具有相似兴趣爱好的用户B,即计算用户之间的相似度;

(2)将用户B喜欢的但是用户A未曾见过的物品推荐给用户A。

2.1 实例

下面给大家举个例子具体看一下

给用户推荐物品的过程可以形象的理解为上述用户对物品的喜欢程度,打分越高,说明用户对这个物品越喜欢。

UserCF的两个步骤

首先根据已有用户的打分情况计算一下用户1和用户 2, 3, 4,5的相似度, 找出与用户1最相似的 n 个用户;

然后根据这 n 个用户对物品5的评分情况和与用户1的相似程度计算出用户1对物品5的评分, 如果评分比较高的话, 就把物品5推荐给用户1, 否则不推荐。

2.2 相似度计算方式

计算相似度需要根据数据特点的不同选择不同的计算方法,下面给大家介绍三种常用的相似度计算方法:

2.2.1 余弦相似度

sim(A,B)=cos(A,B)=\frac{A\cdot B}{\left \| A \right \|\cdot \left \| B \right \|}

余弦相似度同样适用于n维向量,可以表示为

cos\theta =\frac{\sum_{i=1}^{n}(Ai\times Bi)}{\sqrt{\sum_{i=1}^{n}(Ai)^{2}}\sqrt{\sum_{i=1}^{n}(Bi)^{2}}}

2.2.2 杰卡德相似系数

集合A和B交集元素的个数在A、B并集中所占的比例,称为两个集合的杰卡德系数,用符号 J(A,B) 表示。杰卡德相似系数是衡量两个集合相似度的一种指标,jaccard值越大说明相似度越高。

J(A,B)=\frac{\left | A\cap B \right |}{\left | A\cup B \right |}

2.2.3 皮尔逊相关系数

相比余弦相似度,皮尔逊相关系数通过使用用户平均分对各独立评分进行修正,减小了用户评分偏置的影响。公式为:

sim(x1,x2)=\frac{\sum_{k=1}^{n}(x1k-\bar{x1})(x2k-\bar{x2})}{\sqrt{\sum_{k=1}^{n}(x1k-\bar{x1})^{2}}\sqrt{\sum_{k=1}^{n}(x2k-\bar{x2})^{2}}}

公式中, x1k代表用户1对物品k的评分, \bar{x}代表该用户对所有物品的平均分。

2.3 最终结果预测

根据上面的三种方法,我们可以计算出向量之间的相似度,也就是可以计算出用户与用户之间的相似度。这时候我们就可以选出与用户1最相近的n个用户, 基于他们对物品5的评价计算出打分值, 那么如何进行计算呢?

常用的计算方式也有很多,下面直接给大家介绍一种考虑更为全面的计算方式,利用用户相似度和该物品的评分与此用户的所有评分的差值进行加权平均。该公式考虑到了有的用户内心的评分标准不一的情况, 即有的用户喜欢打高分, 有的用户喜欢打低分的情况。公式如下

Pi,j=\bar{Ri}+\frac{\sum_{k=1}^{n}(Si,k(Rk,j-\bar{Rk}))}{\sum_{k=1}^{n}Sj,k}

下面对上面的例子具体实操一下

(1)计算用户1与其他四个用户的相似性(使用皮尔逊相关系数):

用户1与用户2的余弦相似度:

cosine(user1,user2)=\frac{5*3+3*1+4*2+4*3}{\sqrt{25+9+16+16}\sqrt{9+1+4+9}}=0.975

用户1与用户2的皮尔逊相关系数:

user1(5,3,4,4)       user2(3,1,2,3)

user1_ave = 4                    user2_ave = 2.25

用各自的向量减去各自的平均值:

user1(1,-1,0,0)       user2(0.75,-1.25,-0.25,0.75)

计算他们的余弦相似度:

cos(user1,user2)=\frac{1*0.75+(-1)*(-1.25)+0*(-0.25)+0*0.75}{\sqrt{1+1+0+0}\sqrt{0.5625+1.5625+0.0625+0.5625}}=0.85

根据以上计算得出用户1与用户2的相似度为0.85,同样方式可以计算出用户1与用户3、用户4、用户5的相似度分别为0.7,0,-0.79。如果n=2的话,那么与用户1最相似的两个用户为用户2和用户3,相似度分别为0.85和0.7

(2)根据相似度用户计算用户1对物品5的最终得分

用户2对物品5的评分是3, 用户3对物品5的打分是5, 那么根据上面的计算公式, 可以计算出用户1对物品5的最终得分是

Puser1,item5=\bar{R}user1+\frac{\sum_{k=1}^{2}(Suser1,userk(Ruserk,item5-\bar{R}userk))}{\sum_{k=1}^{2}Suser1,userk}=4+\frac{0.85*(3-2.4)+0.7*(5-3.8)}{0.85+0.7}=4.87

(3)根据评分对用户进行推荐

由上述计算得,用户1对物品5的评分为4.87,根据用户1的评分得出物品推荐序列为

物品1>物品5>物品3=物品4>物品2

所以,如果要向用户1推荐两款物品,我们可以推荐物品1和物品5.

三、 基于物品的协同过滤算法

物以类聚:预先根据其他用户的偏好数据计算出每个物品最相似的物品列表,然后为用户推荐与喜欢物品相类似的物品。

基于物品的协同过滤算法主要分为两个步骤:

(1)计算物品之间的相似度

(2)根据物品的相似度和用户的历史行为给用户生成推荐列表。

基于物品的协同过滤算法跟基于用户的协同过滤算法计算过程类似,因此我们继续使用上述例子进行计算。

算法步骤为:

(1)首先计算一下物品5和物品1, 2, 3, 4之间的相似度

物品向量:

item1(3,4,3,1);item2(1,3,3,5);item3(2,4,1,5);item4(3,3,5,2)

item5(3,5,4,1)

物品5与物品1的余弦相似度:

cosine(item1,item5)=\frac{3*3+4*5+3*4+1*1}{\sqrt{9+16+9+1}*\sqrt{9+25+16+1}}=0.994

物品5与物品1的皮尔逊相关系数:

item1_ave = 2.75                item5_ave = 3.25

用各自的向量减去各自的平均值:

item1(0.25,1.25,0.25,-1.75)          item5(-0.25,1.75,0.75,-2.25)

计算他们的余弦相似度(同上述相似度计算公式,直接代入即可)

cosine(item1,item5)=0.9694

根据以上计算得出物品5和物品1的相似度为0.9694,同样方式计算出物品5和物品2、物品3、物品4的相似度分别为:-0.478、-0.4276、0.5816。如果n=2的话,那么与物品5最相似的两个物品为物品1和物品4,相似度分别为0.9694和0.5816。

(2)计算对物品5的打分情况

Puser1,item5=\frac{\bar{R}item5+\sum_{k=1}^{2}()Sitem5,itemk(Ruser1,itemk-\bar{R}itemk)}{\sum_{k=1}^{2}Sitemk,item5}=\frac{13}{4}+\frac{0.97*(5-3.2)+0.58*(4-3.4)}{0.97+0.58}=4.6

(3)根据评分对用户进行推荐

由上述计算得,用户1对物品5的评分为4.6,根据用户1的评分得出物品推荐序列为

物品1>物品5>物品3=物品4>物品2

所以,如果要向用户1推荐两款物品,我们可以向用户1推荐物品1和物品5。

四、 上代码

4.1 UserCF

1、先建立数据表

def loadData():
    users = {'user1': {'1': 5, '2': 3, '3': 4, '4': 4},
             'user2': {'1': 3, '2': 1, '3': 2, '4': 3, '5': 3},
             'user3': {'1': 4, '2': 3, '3': 4, '4': 3, '5': 5},
             'user4': {'1': 3, '2': 3, '3': 1, '4': 5, '5': 4},
             'user5': {'1': 1, '2': 5, '3': 5, '4': 2, '5': 1}
             }
    return users

 2、计算用户相似性矩阵

user_data = loadData()
similarity_matrix = pd.DataFrame(
    np.identity(len(user_data)), # identity函数用于一个n*n的单位矩阵(主对角线元素全为1,其余全为0的矩阵)。
    index=user_data.keys(),
    columns=user_data.keys(),
)

# 遍历每条用户-物品评分数据
for u1, items1 in user_data.items():
    for u2, items2 in user_data.items():
        # 跳过user相同的情况,为1
        if u1 == u2:
            continue
        vec1, vec2 = [], []
        # 遍历user1的所有items
        for item, rating1 in items1.items():
            # 与user2相应的item
            rating2 = items2.get(item, -1) # dict的get
            if rating2 == -1:
                continue
            vec1.append(rating1)
            vec2.append(rating2)
        # 利用user1和user2的items,计算不同用户之间的皮尔逊相关系数
        similarity_matrix[u1][u2] = np.corrcoef(vec1, vec2)[0][1] # vec1和vec2的相关性

print(similarity_matrix)

运行结果:

 3、计算与用户1最为相似的n个用户

target_user = 'user1'
num = 2

# 由于最相似的用户为自己,去除本身
sim_users = similarity_matrix[target_user].sort_values(ascending=False)[1:num+1].index.tolist()
print(f'与用户{target_user}最相似的{num}个用户为:{sim_users}')

运行结果:

4、预测用户1对物品5的评分

weighted_scores = 0.
corr_values_sum = 0.

target_item = '5'
# 基于皮尔逊相关系数预测用户评分
for user in sim_users:
    corr_value = similarity_matrix[target_user][user] # 目标与当前user的相关系数
    user_mean_rating = np.mean(list(user_data[user].values())) # 当前user的评分平均值

    weighted_scores += corr_value * (user_data[user][target_item] - user_mean_rating) # 权重*(评分-平均),累加
    corr_values_sum += corr_value # 相关系数之和,分母

target_user_mean_rating = np.mean(list(user_data[target_user].values())) # 目标的评分平均值
target_item_pred = target_user_mean_rating + weighted_scores / corr_values_sum # 最后结果
print(f'{target_user}对物品{target_item}的预测评分为:{target_item_pred}')

运行结果:

 4.2 ItemCF

1、先建立数据表

def loadData():
    items = {'1': {'user1': 5.0, 'user2': 3.0, 'user3': 4.0, 'user4': 3.0, 'user5': 1.0},
             '2': {'user1': 3.0, 'user2': 1.0, 'user3': 3.0, 'user4': 3.0, 'user5': 5.0},
             '3': {'user1': 4.0, 'user2': 2.0, 'user3': 4.0, 'user4': 1.0, 'user5': 5.0},
             '4': {'user1': 4.0, 'user2': 3.0, 'user3': 3.0, 'user4': 5.0, 'user5': 2.0},
             '5': {'user2': 3.0, 'user3': 5.0, 'user4': 4.0, 'user5': 1.0}
             }
    return items

2、计算物品相似性矩阵

item_data = loadData()

similarity_matrix = pd.DataFrame(
    np.identity(len(item_data)),
    index=item_data.keys(),
    columns=item_data.keys(),
)

# 遍历每条物品-用户评分数据
for i1, users1 in item_data.items():
    for i2, users2 in item_data.items():
        if i1 == i2:
            continue
        vec1, vec2 = [], []
        for user, rating1 in users1.items():
            rating2 = users2.get(user, -1)
            if rating2 == -1:
                continue
            vec1.append(rating1)
            vec2.append(rating2)
        similarity_matrix[i1][i2] = np.corrcoef(vec1, vec2)[0][1]

print(similarity_matrix)

运行结果:

3、计算与物品5最为相似的n个用户

target_user = 'user1'
target_item = '5'
num = 2

sim_items = []
sim_items_list = similarity_matrix[target_item].sort_values(ascending=False).index.tolist()
for item in sim_items_list:
    # 如果target_user对物品item评分过
    if target_user in item_data[item]:
        sim_items.append(item)
    if len(sim_items) == num:
        break
print(f'与物品{target_item}最相似的{num}个物品为:{sim_items}')

运行结果:

4、 预测用户1对物品5的评分

target_user_mean_rating = np.mean(list(item_data[target_item].values()))
weighted_scores = 0.
corr_values_sum = 0.

target_item = '5'
for item in sim_items:
    corr_value = similarity_matrix[target_item][item]
    user_mean_rating = np.mean(list(item_data[item].values()))

    weighted_scores += corr_value * (item_data[item][target_user] - user_mean_rating)
    corr_values_sum += corr_value

target_item_pred = target_user_mean_rating + weighted_scores / corr_values_sum
print(f'用户{target_user}对物品{target_item}的预测评分为:{target_item_pred}')

运行结果:

五、 协同过滤算法的问题分析

目前,协同过滤技术得到了广泛应用。但是随着网站商品信息量和用户人数的不断攀升,网站的结构也越来越复杂。通过对协同过滤技术以及推荐系统的研究,我们发现协同过滤技术的实现中存在的问题主要有以下几点。

5.1 稀疏性问题

稀疏性问题是推荐系统面临的主要问题。比如在一些大型电子商务购买系统,用户购买过的数量相对网站中商品数量可谓是冰山一角,这就导致了用户评分矩阵的数据非常稀疏,进行相似性计算耗费会很大,也难以找到相邻用户数据集,从而使得推荐系统的推荐质量急剧下降。

5.2 冷启动问题

因为传统的协同过滤推荐是基于用户/物品的相似性计算来得到目标用户的推荐,在一个新的项目首次出现的时候,因为没有用户对它作过评价,因此单纯的协同过滤无法对其进行预测评分和推荐。而且,由于新项目出现早期,用户评价较少,推荐的准确性也比较差。

5.3 可扩展性问题

面对日益增多的数据量,算法的扩展性问题成为制约推荐系统实施的重要因素。识别“最近邻居”算法的计算量随着用户和项的增加而大大增加,对于上百万的数目,通常的算法会遇到严重的扩展性瓶颈问题。
  

基于用户的协同过滤算法(userCF) 1.定义 userCF:当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。 基于用户的协同过滤算法主要包括两个步骤: 2.第一步:找到和目标用户兴趣相似的用户集合。 利用行为的相似度计算兴趣的相似度。给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过... 阅读详情

相关推荐

协同过滤(Collaborative Filtering)

协同过滤是推荐系统的重要思想之一,推荐系统是用来向用户推荐物品的。协同过滤分为三种: 1.基于用户的协同过滤。 2. 基于物品的协同过滤。 3.基于模型的协同过滤(这里不再赘述)。 无论是基于用户还是基于物品都是为了找到和用户可能喜欢的物品相似的物品把它给过滤出来,推荐给用户。 1.基于用户的协同过滤 思想:找到和该用户兴趣相似的用户,推荐该兴趣相似用户使用过但该用户没见过的物品。 用户 物品 A B C

qq_53430308的博客 1万+

【推荐算法】协同过滤算法介绍

协同过滤算法(Collaborative Filtering) 是比较经典常用的推荐算法,它是一种完全依赖用户和物品之间行为关系的推荐算法。我们从它的名字“协同过滤”中,也可以窥探到它背后的原理,就是 “协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。...............................................................

u011590738的博客 7万+

推荐系统-经典协同过滤算法【基于记忆的协同过滤算法、基于模型的协同过滤算法】

推荐系统-经典协同过滤理论基础实践 1.协同过滤推荐方法CF简介 协同过滤CF 基于记忆的协同过滤 ---- 用户和物品的相似度矩阵 用户相似度的推荐 物品相似度推荐 UserCF用户协同过滤算法 ItemCF物品的协同过滤推荐算法 基于模型的协同过滤 ---- 隐因子 LFM(latent fator machine)隐藏因子的分解模型-----矩阵分解(将一个矩阵分解成连个矩阵的乘...

CoderBoom的博客 9689

协同过滤算法

一、什么是协同过滤算法 二、相似度的计算 2.1杰卡德(Jaccard)相似度 2.2余弦相似度(Cosine Similarity) 2.3皮尔逊相关系数(Pearson Correlation Coefficient) 2.4欧氏距离(Euclidean Distance) 2.5对比欧氏距离和余弦相似度 三、基于用户(user)的协同过滤 四、基于物品(item)的协同过滤 五、UserCF和ItemCF的对比 5.1区别 5.2共同缺点

zhu_xian_gang的博客 1万+

AES128加密算法开发(含源码)

本文详解了AES128加密算法的原理与C语言实现。AES128是当前广泛使用的对称加密标准,采用128位密钥和10轮变换,具有高安全性和高效性。文章从算法背景、核心概念(混淆与扩散)入手,详细解析了4×4状态矩阵表示、4个核心变换(字节替换、行移位、列混合、轮密钥加)以及密钥扩展过程。特别针对汽车电子应用场景,如ECU通信加密、车钥匙认证等,说明了AES128在资源受限环境中的优势。通过分步图解和原理剖析,帮助开发者深入理解这一加密标准的技术细节与实现方法。

汽车电子软件开发笔记 2918

告别重打包:在Android 9上实现免Root的Frida-Gadget持久化Hook(附AOSP源码修改详解)

本文详细介绍了在Android 9上实现免Root的Frida-Gadget持久化Hook技术方案。通过修改AOSP源码,绕过传统重打包方式面临的签名校验和完整性检查,实现在非Root环境下的系统级Hook。文章包含核心代码修改、编译配置调整及调试技巧,为移动安全研究提供高效稳定的解决方案。

weixin_33726313的博客 501

推荐系统经典算法之协同过滤

讲推荐算法,就不得不提协同过滤,协同过滤是推荐系统中比较经典的推荐算法之一,我们常用的协同过滤算法共有两种,既 基于物品的协同过滤、基于用户的协同过滤;它们的效果由训练模型的数据特征选取...

huzechen的博客 4045

RK平台PCIE-Ethernet扩展:Intel I210移植与性能飞升之路

本文详细介绍了Intel I210千兆以太网控制器在瑞芯微RK平台的移植与优化过程。通过硬件适配、内核配置、驱动开发及性能调优四个关键环节,实现了RK平台的网络性能提升。硬件方面,重点说明了PCIE接口的规范连接与供电检查;软件方面,系统阐述了内核配置、设备树修改和驱动编译流程。在性能优化环节,详细介绍了中断优化、缓冲区设置和TCP/IP协议栈调优策略,并采用Iperf和Netperf工具进行量化测试验证。测试结果显示,优化后的网络吞吐量提升20%以上,延迟降低40%,为工业控制、智能安防等场景提供了可靠的

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 352

(一)协同过滤——解读推荐系统经典算法

协同过滤是一种利用群体行为数据的推荐算法,通过分析用户的历史行为(如评分、点击等),协同过滤通过分析用户行为数据,找到相似的用户(UserCF)并推荐他们喜欢的物品,或找到相似的物品(ItemCF)并推荐给喜欢过同类物品的用户,从而预测目标用户可能感兴趣的内容。其核心思想是“相似的用户喜欢相似的物品(UserCF)或“相似的物品被相似的用户喜欢(ItemCF),通过协同大家的反馈和意见,从海量信息中筛选出目标用户可能感兴趣的内容。

weixin_43348955的博客 5661

rk628d修改默认分辨率

在rk3568上使用628d hdmi转mipi,在628d已经调试好的情况下,客户新增需求:视频输入这边的推荐分辨率固定在1024x768。

m0_60805802的博客 2053

YOLO26优化:注意力魔改 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 490

推荐算法DAY1续 经典召回模型:协同过滤算法

一般是仅仅基于用户的行为数据(评价、购买、下载等), 而不依赖于项的任何附加信息(物品自身特征)或者用户的任何附加信息(年龄, 性别等)。基于对用户历史行为数据的挖掘发现用户的喜好偏向, 并预测用户可能喜好的产品进行推荐。相较于余弦相似度,皮尔逊相关系数通过使用用户的平均分对各独立评分进行修正,减小了用户评分偏置的影响。基于对用户历史行为数据的挖掘发现用户的喜好偏向, 并预测用户可能喜好的产品进行推荐。对于用户 u 和 v ,该公式反映了两个交互物品交集的数量占这两个用户交互物品并集的数量的比例。

feifeikon的博客 737

com.sap.aii.af.service.cpa.CPAObjectNotFoundException: Couldn‘t retrieve inbound binding

错误消息:错误截图:该错误通常表示在集成配置中,未找到与特定消息匹配的入站绑定(Inbound Binding)。具体而言,错误消息中的 P/S/A(Party/Service/Action)值未在配置中找到对应的入站绑定。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 373

协同过滤算法_【学习笔记02】推荐系统——经典算法(基于内容、协同过滤、混合等)...

嘛~为了这个系列的完整性,所以还是简要介绍下推荐系统里的经典算法吧~虽然近期深度学习在推荐系统领域打的火热,但是由于工业界的应用场景不同,应用最广的还是这些经典算法,故而还是很值得学习的。推荐系统领域的经典算法1.基于人口统计学的推荐即:特征相似的人喜欢的东西应该也类似。基于人口统计学的推荐比如上图,同个年龄段的女生喜欢的东西,比不同年龄段甚至不同性别的人喜欢的东西,更有可能被推荐。当然,图里只是...

weixin_39983223的博客 1301

OpenClaw实战五|企业文档AI助理:对接内部知识库+自动答疑+文档生成,员工自助查资料零等待

企业最大的隐性成本,不是设备、不是房租,而是内部知识的混乱与流失。OpenClaw企业文档AI助理,本质是给企业做了一个7×24小时在线、永不疲倦、精准无误、自动更新的内部知识管家。它不替代HR、行政、IT,而是把他们从无穷无尽的重复问答、机械文档编写里解放出来,去做更有价值的管理、服务、优化工作。对中小企业来说,不用买昂贵的知识库系统、不用招开发、不用做复杂集成,一台私有化服务器,两天就能落地,性价比拉满。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 144

打开.nc降水气象数据制作年降水量地图

图层的单位为度,在反距离插值中也是以度为单位,比较麻烦,还是想用以m为单位的投影,这里是个bug,后续调整一下。该彩色部分是以2021年1月、2月、3月的降水数据分别作为RGB得到。因为该栅格的分辨率还是太大了,一个栅格就能覆盖一个县,若想要进行降尺度,可以做插值处理。下载的数据集为2021-2022年,因此有12+12=24个月,24个波段。想要得到廊坊市周围的数据,需要裁剪范围,在降水数据图层上导出数据。打开数据管理工具-投影和变换-定义投影。在降水数据图层上右击属性,添加投影。得到了降尺度的插值图。

所有专家都曾始于新手 4520

协同过滤推荐算法_推荐系统经典算法之协同过滤

讲推荐算法,就不得不提协同过滤,协同过滤是推荐系统中比较经典的推荐算法之一,我们常用的协同过滤算法共有两种,既 基于物品的协同过滤、基于用户的协同过滤;它们的效果由训练模型的数据特征选取、训练过程中的算法调优以及之后的应用场景共同决定;另外算法很难做到一招鲜吃遍天,想通过单一算法解决所有用户场景是不可能的。在开始讲推荐算法之前,我们先简单了解一下推荐系统的架构,对算法在推荐系统中的定位有...

weixin_39534002的博客 2139

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

协同过滤(Collaborative Filtering, CF)——经典的推荐算法

“协同过滤” 就是协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。user CF:基于用户的相似度进行推荐应用场景:具体步骤如下:下面将对“用户相似度计算”及“最终结果的排序”做详细说明。计算用户相似度,就是计算用户向量 i 和用户向量 j 之间的相似度,两个向量之间常用的相似度计算方法有如下几种:衡量了用户向量i和用户向量J之间的向量夹角大小。显然,夹角越小,证明余弦相似度越大,两个用户越相似。...

拾遗 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

经典推荐算法-协同过滤

协同过滤算法1.传统推荐模型的演化关系图2. 协同过滤2.1 什么是协同过滤2.2 计算用户相似度2.3 最终结果排序2.4 存在缺点2.5 ItemCF2.6 各自的应用场景 1.传统推荐模型的演化关系图 传统推荐模型发展脉络由以下几部分组成: 协同过滤算法族 逻辑回归模型族 因子分解机模型族 组合模型 2. 协同过滤 2.1 什么是协同过滤 协同过滤算法,是一种完全依赖用户和物品之间行为关系的推荐算法。从它的名字“协同过滤”中,也可以窥探到它背后的原理,就是 “协同大家的反馈、评价和意见一起对海量

Rocket,Qian的博客 1130

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

推荐经典算法——协同过滤

一.基于内存(用户)的协同过滤算法 算法不足: 1.扩展性:用户人数和用户个人信息的大幅增加对协同过滤算法带来挑战。 2.准确性:一个用户可能买到系统其中不到1%的物品,不同用户之间买的物品重叠性较低,导致算法无法找到一个用户的邻居,即偏好相似的用户。因此,基于最近邻算法的推荐系统可能无法为特定用户推荐任何物品,建议的准确性可能很差。 二.基于模型(物品)的协同过滤算法 (1)建立模型的常用机器学...

qq_32486393的博客 960

推荐系统(3)——最经典的推荐算法(协同过滤算法原理部分)

一看就懂的图示协同过滤算法

qq_41161373的博客 2067

推荐系统经典算法——协同过滤

什么是协调过滤 协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息。顾名思义,就是协同大家的爱好,评论,兴趣等对海量的信息进行过滤的算法。 协调过滤是推荐系统中一种诞生最早,影响最大,应用最广泛的模型。 可以分为两大类,一类是基于用户的协同过滤(use-based)。另一种是基于物品的协同过滤算法(Item-based)。 基于用户的协同过滤 通过寻找与目标用户具有相同喜好的相似用户,在通过相似用户的其他喜好来推荐给目标用户的过程就是基于用户的协同过滤。 故基于用户的协同过滤一

waner_jiaki的博客 945

推荐系统(4)——最经典的推荐算法(协同过滤算法代码部分)

协同过滤基本算法可执行python代码

qq_41161373的博客 4410

计算机人工智能大数据毕设推荐—基于机器学习的经典名著推荐系统(爬虫-随机森林回归算法-协同过滤算法,数据清洗预测Echarts可视化)

本文设计并实现了一个基于深度学习的经典名著推荐系统。该系统采用Python技术栈,结合Django框架、MySQL数据库和Vue.js前端技术,运用随机森林回归算法和协同过滤算法实现智能推荐功能。系统通过爬虫获取数据,经过数据清洗和分析后,利用Echarts进行可视化展示,并为用户提供个性化名著推荐。后台管理系统支持数据管理、存储、分析和预测。实验结果表明,该系统能有效提升经典名著的传播效率,满足用户多样化的阅读需求,为文化传承提供智能化解决方案。

集美大bug的博客 706

Youtube-利用用户的评分行为的推荐(有别于经典的协同过滤算法)

Youtube-利用用户的评分行为的推荐(有别于经典的协同过滤算法)   背景: Youtube的一些背景 (1)2012时候:485000000个视频,大数据 (2)每分钟上传48小时的视频 (3)每天上传8年的内容 总而言之:大用户量,大视频量。 推荐所用的数据:用户显示显示表达为喜欢的video 问题: (1)如果采用传统的协同过滤,U×I矩阵可能很稀疏,用户共同评分的v

数据挖掘|数据开发|数据分析开发|大数据|hbase|hadoop|云存储|云计算|推荐系统 2295

推荐系统-经典算法(一):协同过滤(CF)算法

在构建智能推荐系统时,协同过滤(Collaborative Filtering,CF)算法是一个常用的技术。 本篇文章主要介绍协同过滤算法的基本思想及其应用。 一、协同过滤算法简介 之前看到过一篇文章用“「物以类聚,人以群分」”来形容协同过滤算法,我觉得非常贴切。 协同过滤算法可以分为基于用户的协同过滤算法和基于商品的协同过滤算法。 「基于用户的协同过滤算法」:针对一个特定的用户,在用户集合中筛选出与该特定用户相似的用户群体,然后利用这些相似用户对商品的喜好程度来给特定用户进行商品推荐 「基于商品的协同过滤

web15286201346的博客 2087
上一篇: 基于张量分解的遥感图像恢复及常用高光谱遥感数据集
下一篇: 经典图像去噪算法概述
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值