【毕业论文】Day03 | 03 推荐系统算法1

1 基于人口统计学的推荐算法

在这里插入图片描述

1.1 用户画像

在这里插入图片描述

2 基于内容的推荐算法

在这里插入图片描述

2.1 相似度计算–余弦相似度

在这里插入图片描述

2.2 物品标签方式

在这里插入图片描述

2.3 基于内容推荐系统的高层次结构

在这里插入图片描述

2.4 特征工程

在这里插入图片描述
在这里插入图片描述

2.4.1 数值型特征处理

在这里插入图片描述

a.归一化

在这里插入图片描述

b.离散化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4.2 类别型特征处理

在这里插入图片描述
在这里插入图片描述

2.4.3 时间型特征处理

在这里插入图片描述

2.4.4 统计型特征处理

在这里插入图片描述

2.5 推荐系统常见反馈数据

在这里插入图片描述

2.6 基于UGC的推荐

在这里插入图片描述

3基于协同过滤的推荐算法

3.1 算法种类

在这里插入图片描述

3.2 与CB的区别

在这里插入图片描述

但无法解决冷启动问题

3.3 基于近邻的协同过滤

在这里插入图片描述

3.3.1 User-CF

在这里插入图片描述

3.3.2 Item-CF

在这里插入图片描述

用户较多时,物品较稳定,所以用item-cf
物品较多时,用户较稳定,所以用user-cf

3.3.3 两者比较

在这里插入图片描述

3.4 协同过滤优缺点

在这里插入图片描述

3.5 基于模型的协同过滤

在这里插入图片描述

3.6基于近邻V.S.基于模型

在这里插入图片描述

3.7 隐语义模型LMF

在这里插入图片描述

3.7.1 LMF降维方法—矩阵因子分解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.7.2 模型求解–损失函数

在这里插入图片描述

3.7.3 模型求解算法–ALS

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#0.引入依赖
import numpy as np
import pandas as pd
#1.数据准备
]
# 评分矩阵R
R = np.array([[4,0,2,0,1],
            [0,2,3,0,0],
            [1,0,2,4,0],
            [5,0,0,3,1],
            [0,0,1,5,1],
            [0,3,2,4,1]])
len(R[0])
#2.算法实现
"""
@输入参数:
R:M*N的评分矩阵
K:特征向量纬度
max_iter:最大迭代次数
alpha:步长
lamda:正则化系数
​
@输出:
分解之后的P,Q
P:初始化用户特征矩阵M*K
Q:初始化物品特征矩阵N*K
"""# 给定超参数
K = 2
max_iter=5000
alpha = 0.002
lamda = 0.004# 核心算法
def LFM_grad_desc(R,K=2,max_iter=1000,alpha=0.001,lamda=0.002):
    M=len(R)
    N=len(R[0])
    
    #P,Q的初始值,随机生成
    P=np.random.rand(M,K)
    Q=np.random.rand(N,K)
    Q=Q.T
    
    # 开始迭代
    for step in range(max_iter):
        #对所有的用户u、物品i进行遍历
        for u in range(M):
            for i in range(N):
                #对于每一个大于0的评分,求出预测评分误差
                if(R[u][i])>0:
                    eui=np.dot(P[u,:],Q[:,i])-R[u][i]
                    
                    # 代入公式,按照梯度下降算法更新当前Pu,Qi
                    for k in range(K):
                        P[u][k]=P[u][k]-alpha*(2*eui*Q[k][i]+2*lamda*P[u][k])
                        Q[k][i]=Q[k][i]-alpha*(2*eui*P[u][k]+2*lamda*Q[k][i])
        # u,i遍历完成,所有特征向量更新完成,可以得到P,Q,可以计算预测评分矩阵
        predR=np.dot(P,Q)
        
        #计算当前损失函数
        cost =0
        for u  in range(M):
            for i in range(N):
                if R[u][i]>0:
                    cost+=(np.dot(P[u,:],Q[:,i])-R[u][i])**2
                    #加上正则化项
                    for k in range(K):
                        cost += lamda *(P[u][k]**2+Q[k][i]**2)
        if cost<0.001:
            break
    return P,Q.T,cost
# 3.测试
P,Q,cost = LFM_grad_desc(R,K,max_iter,alpha,lamda)
print(P)
print(Q)
print(cost)
predR = P.dot(Q.T)
print(R)
predR

在这里插入图片描述

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
day03-手动组建fabric网络.pdf》是一份指导手册,用于教授如何手动组建Fabric网络。Fabric网络是一个分布式账本技术,可用于构建区块链解决方案。这个手册详细介绍了在组建Fabric网络时的步骤和注意事项。 首先,手动组建一个Fabric网络需要一些技术基础。手册在开始部分介绍了一些必备的知识,例如区块链和分布式账本的基本概念。学习者需要理解这些基础概念,以便更好地理解后续的内容。 手册还提供了一些实践操作的步骤。首先,需要准备网络中的各个组件,例如Peer节点、Orderer节点和Channel。手册详细介绍了如何配置这些组件,并给出了一些示例。 接下来,手册重点介绍了如何连接这些组件,以构建一个完整的Fabric网络。手册详细介绍了如何配置节点之间的通信,如何创建和加入Channel,以及如何运行智能合约。这些步骤是手动组建Fabric网络的核心内容,学习者需要仔细理解和熟悉。 除了步骤之外,手册还提供了一些注意事项和最佳实践。例如,手册强调了网络的安全性和可扩展性,提供了一些建议和建议,帮助学习者更好地设计和管理Fabric网络。 总之,《day03-手动组建fabric网络.pdf》是一份非常实用的手册,适合想要了解如何手动组建Fabric网络的人士。通过学习这个手册,学习者可以获得丰富的知识和实践经验,从而能够独立地组建和管理自己的Fabric网络。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MoMo_22coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值