2023.05.14 学习周报

news2024/11/28 21:32:05

文章目录

  • 摘要
  • 文献阅读
    • 1.题目
    • 2.现存问题和解决方法
    • 3.RUM
    • 4.本文贡献
    • 5.模型框架
      • 5.1 Memory enhanced user embedding
      • 5.2 Prediction function
      • 5.3 Item-level RUM
      • 5.4 feature-level RUM
    • 6.实验
      • 6.1 数据集
      • 6.2 测量准则
      • 6.3 基线
      • 6.4 实验结果
    • 7.结论与展望
  • 灰色预测
  • 有限元法
    • 1. 第一类边界条件
    • 2. 第二类边界条件
    • 3. 第三类边界条件
  • 总结


摘要

This week, I read a computer science about recommendation system. Because existing recommendation systems embed user history all into one potential vector, this may lose the correlation between user history and future interest. In this paper, a memory enhancement neural network integrated with collaborative filtering is proposed to recommend users. This network can effectively integrate users’ historical behavior records into the recommendation system. Finally, through experimental analysis on several actual data sets, the proposed method achieves remarkable performance and can extract the intuitive pattern of users’ influence on future behavior. In addition, I learn the following: 1) Grey prediction, because there is a potential law in the data set, grey prediction is to use this law to build a grey model to predict the grey system. 2) Three kinds of boundary conditions for heat transfer, which are actually related to temperature. The first kind gives the temperature at the boundary; The second type tells us what the temperature gradient is at the boundary; The third class gives a relation between temperature gradient and temperature at the boundary.

本周,我阅读了一篇与推荐系统相关的文章。由于现有的推荐系统将用户历史行为记录全部嵌入到一个潜在的向量中,这可能会失去了用户历史记录和未来兴趣之间的相关性。对此,文章提出了一种集成了协同过滤的记忆增强神经网络来对用户进行推荐,该网络可以有效地将用户的历史行为记录整合到推荐系统中。最后,通过在多个实际数据集上的实验分析表明,该方法取得了显著的性能表现,并且能够提取用户对未来行为影响的直觉模式。此外,我学习了以下内容:1)灰色预测,由于在数据集合中存在潜在的规律,而灰色预测就是利用这种规律建立灰色模型对灰色系统进行预测。2)传热三类边界条件,这三类边界条件其实都和温度有关。第一类给出了边界处的温度值;第二类给出了边界处的温度梯度是多少;第三类给出了边界处的温度梯度和温度满足一个关系式。


文献阅读

1.题目

文献链接:Sequential Recommendation with User Memory Networks

2.现存问题和解决方法

现存问题:
1)在实际生活中,并非所有的历史行为都对用户未来喜好有影响;
2)现有的方法(马尔可夫链和RNN)会将用户以前的历史序列用一个embedding进行表示,忽略了各个item之间的关系和各自的特征。

解决方法:为了以更明确、动态和有效的方式表达、存储和操作用户的历史记录,将memory network引入到推荐系统中,利用注意力机制和记忆单元获得用户动态Embedding,以用于推荐新的item,这会增加模型的表达能力。

3.RUM

在这里插入图片描述
基于传统的RNN推荐,会强制将所有先前的item(包含不相关的用户行为记录)用一个向量表示,用于预测用户的行为。不区分不同历史记录的后果:
1)削弱顺序推荐中高度相关项目的信号;
2)忽略这种信号会使得难以理解和解释顺序建议。

为了解决这些问题,引入外部用户记忆矩阵来维护其历史信息。在预测时,动态注意力读出记忆作为用户Embeding表示,其中注意力机制衡量历史行为对当前物品推荐的重要性。

4.本文贡献

1)建议将协同过滤与记忆增强神经网络集成到顺序推荐中,以更有效的方式利用用户历史记录;
2)研究了两种在项目和特征级别上具有不同表示和操作设计的潜在记忆网络,进一步研究并比较了它们在顺序推荐任务和top-N推荐任务中的性能;
3)将模型与最先进的方法进行比较,并通过对现实世界数据集的定量分析验证了模型的优越性,能够更有效地利用用户历史记录;
4)进一步提供实证分析解释模型是如何推荐一个项目的,这表明在记忆网络的注意力机制下,模型如何根据用户的历史记录去影响当前和未来的直观解释。

5.模型框架

5.1 Memory enhanced user embedding

用户个性化历史行为记忆矩阵 Mu,当前item Embedding:qi,用户记忆Embedding:pu^m, 综合Embedding:pu 。
在这里插入图片描述
其中:MERGE的策略为elemet multiply、concat等,但效果在实验数据上不如weight vector add,权重参数可用于平衡记忆比重。

5.2 Prediction function

交叉熵损失函数 + Sigmoid(其他激活函数也可行),其中Iu+为正样本item集合,user即action list item rank in action timestamp。
在这里插入图片描述
Memory更新:根据采取action的item更新记忆
在这里插入图片描述

5.3 Item-level RUM

在这里插入图片描述
1)Reading operation
记忆矩阵Mu(D X k),Item Embedding qviu(1 X D),用户u正样本集合:{v1u,v2u,···,vu|Iu+|},其中k为记忆槽数量:
在这里插入图片描述
2)Writing operation
记忆矩阵Mu只存储最近的k个item,记忆矩阵是一个先进先出的队列,只保存最近k个item Embedding:
在这里插入图片描述
M写入前:
在这里插入图片描述
M写入后:
在这里插入图片描述

5.4 feature-level RUM

在这里插入图片描述
1)特定用户memory feature为Mu,全局latent feature F分为k个;
2)M Reading operation:
在这里插入图片描述
3)M Writing operation:
在这里插入图片描述

6.实验

6.1 数据集

实验在亚马逊数据集上进行,其中包含1996年5月至2014年7月期间亚马逊的用户产品购买行为;从四个产品类别进行评估,包括即时视频、乐器、汽车和婴儿护理四部分;为了提供顺序推荐,作者选择了至少有10次购买记录的用户进行实验:
在这里插入图片描述

6.2 测量准则

1)Precision §, Recall ® and F1-score
为了更好地解释,作者采用了每个用户的平均值,而不是全局平均值:
在这里插入图片描述
2)Hit-ratio (HR)
Hit-ratio给出了可以收到至少一个正确推荐的用户百分比,这在以前的工作中已经被广泛使用:
在这里插入图片描述
3)NDCG
归一化的累积增益,通过采取正确的位置来评估排名性能考虑的项目:
在这里插入图片描述

6.3 基线

MostPopular、BPR、FPMC、DREAM

6.4 实验结果

1)模型与基线的性能比较:
在这里插入图片描述
2)项目级和特征级RUM模型在不同权重参数α选择下的性能:
在这里插入图片描述
3)item-to-item 转换的说明:
在这里插入图片描述
4)总结
记忆权重参数设置为0.2最佳,过大或过小都会导致效果变差;注意力解释历史行为影响模式:
模式一:用户行为被最近的上一次行为连续触发
模式二:一系列的行为被最近的某一次行为触发

7.结论与展望

结论:
1)提出利用集成了协同过滤的外部记忆网络进行顺序推荐;
2)设计了RUM顺序推荐框架,并提供了框架的项目级和功能级规范;
3)通过定量实验分析,验证了框架的有效性。

展望:
1)基于显式用户内存建模还有很大的改进空间,通过引入用户评论和产品图像等信息,可以将特征级RUM中的内存单元与不同的语义对齐,从而构建一个更可解释的推荐系统;
2)RUM模型是一个具有灵活泛化能力的框架,因此可以研究其他类型的内存网络设计,使得框架适应于不同的应用场景。

灰色预测

数学推导:
1)原来的数据是单调递增的,那么累加后的数据可以看作强烈单调递增。因此,强烈单调递增的数据可以近似为指数,可以用指数曲线来拟合,而指数曲线一定是某个一阶线性常系数微分方程。
2)通过解微分方程可以知道只有a, u是待确定的未知参数,因此只需求解出未知参数,即可求得累加序列与时间的表达式。
在这里插入图片描述
python代码实现:

import numpy as np
import matplotlib.pyplot as plt
import math

# 解决图标题中文乱码问题
import matplotlib as mpl

# 指定默认字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 解决保存图像是负号'-'显示为方块的问题
mpl.rcParams['axes.unicode_minus'] = False

# 原数据
data = np.array([[72.03, 241.2, 1592.74], [73.84, 241.2, 1855.36], [74.49, 244.8, 2129.60], [76.68, 250.9, 2486.86],
                 [78.00, 250.9, 2728.94], [79.68, 252.2, 3038.90]])
# 要预测数据的真实值
data_label = np.array([[81.21, 256.5, 3458.05], [82.84, 259.4, 3900.27], [84.5, 262.4, 4399.06], [86.19, 265.3, 4961.62],
                   [87.92, 268.3, 5596.1], [89.69, 271.4, 6311.79], [91.49, 274.5, 7118.96]])

# 累加数据
data1 = np.cumsum(data.T, 1)
# print(data1)

# 得到行数和列数 m=3, n=6
[m, n] = data1.shape
# 对这三列分别进行预测
# 已知年份数据
X = [i for i in range(1997, 2003)]
X = np.array(X)
# 预测年份数据
X_p = [i for i in range(2003, 2010)]
X_p = np.array(X_p)
# 最开始参考数据
X_sta = X[0] - 1

# 求解未知数
for j in range(3):
    B = np.zeros((n - 1, 2))
    for i in range(n - 1):
        B[i, 0] = -1 / 2 * (data1[j, i] + data1[j, i + 1])
        B[i, 1] = 1
    Y = data.T[j, 1:7]
    print("--------系数矩阵B--------")
    print(B)
    print("--------系数矩阵Y--------")
    print(Y)
    print("--------求得未知参数a,u--------")
    a_u = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y.T)
    print(a_u)

    # 进行数据预测
    a = a_u[0]
    u = a_u[1]
    T = [i for i in range(1997, 2010)]
    T = np.array(T)

    # 累加数据
    data_p = (data1[0, j] - u / a) * np.exp(-a * (T - X_sta - 1)) + u / a
    print("--------预测数据--------")
    print(data_p)
    data_p1 = data_p
    data_p1[1:len(data_p)] = data_p1[1:len(data_p)] - data_p1[0:len(data_p) - 1]
    # print(data_p1)

    title_str = ['第一产业GDP预测', '居民消费价格指数预测', '第三产业GDP预测']
    plt.subplot(221 + j)
    data_n = data_p1
    plt.scatter(range(1997, 2003), data[:, j])
    plt.plot(range(1997, 2003), data_n[X - X_sta])
    plt.scatter(range(2003, 2010), data_label[:, j])
    plt.plot(range(2003, 2010), data_n[X_p - X_sta - 1])
    # plt.title(title_str[j])
    plt.legend(['实际原数据', '拟合数据', '预测参考数据', '预测数据'])
    y_n = data_n[X_p - X_sta - 1].T
    y = data_label[:, j]
    wucha = sum(abs(y_n - y) / y) / len(y)
    titlestr1 = [title_str[j], '预测相对误差:', wucha]
    plt.title(titlestr1)
    plt.show()

打印输出:

--------系数矩阵B--------
[[-108.95     1.   ]
 [-183.115    1.   ]
 [-258.7      1.   ]
 [-336.04     1.   ]
 [-414.88     1.   ]]
--------系数矩阵Y--------
[73.84 74.49 76.68 78.   79.68]
--------求得未知参数a,u--------
[-1.98742486e-02  7.13639977e+01]
--------预测数据--------
[  72.03        145.5537343   220.55331466  297.05836583  375.0991072
  454.70636477  535.91158331  618.74683878  703.244851    789.43899658
  877.36332211  967.05255757 1058.54213012]
--------系数矩阵B--------
[[-3.61800e+02  1.00000e+00]
 [-6.04800e+02  1.00000e+00]
 [-8.52650e+02  1.00000e+00]
 [-1.10355e+03  1.00000e+00]
 [-1.35510e+03  1.00000e+00]]
--------系数矩阵Y--------
[241.2 244.8 250.9 250.9 252.2]
--------求得未知参数a,u--------
[-1.12813547e-02  2.38347899e+02]
--------预测数据--------
[ 145.87        387.22234074  631.31287909  878.17268052 1127.83316295
 1380.32610076 1635.6836288  1893.9382465  2155.12282201 2419.27059637
 2686.41518775 2956.59059572 3229.8312056 ]
--------系数矩阵B--------
[[-2.520420e+03  1.000000e+00]
 [-4.512900e+03  1.000000e+00]
 [-6.821130e+03  1.000000e+00]
 [-9.429030e+03  1.000000e+00]
 [-1.231295e+04  1.000000e+00]]
--------系数矩阵Y--------
[1855.36 2129.6  2486.86 2728.94 3038.9 ]
--------求得未知参数a,u--------
[-1.20343072e-01  1.59117525e+03]
--------预测数据--------
[  220.36        1939.41824265  3878.31606721  6065.16737963
  8531.68139707 11313.62242966 14451.32846098 17990.29604642
 21981.84001063 26483.83750952 31561.56724559 37288.65600541
 43748.14624371]

预测数据与真实数据对比图:
在这里插入图片描述

有限元法

1. 第一类边界条件

边界是研究对象与外部环境的交界,边界条件是我们对物理状况的了解程度。边界条件也叫做定解条件,即控制方程/偏微分方程的解。只有给定初始值,我们才能求出微分方程解中的未知数。
在这里插入图片描述
如上图所示,传热边界条件有三类:
最简单的边界条件就是直接给出边界处的温度,即在S1处:
在这里插入图片描述
其中:这个边界条件就是第一类边界条件、狄利克雷边界条件,可以直接用温度计测得。

2. 第二类边界条件

在这里插入图片描述
如图所示,给出了三类边界条件及其公式描述。假设橙色是一个冰块的局部,竖直黑线是冰块的边界,左边假设是空气,那么这里就简化为水平一个维度温度的变化情况。

1)第一类边界条件如左上图所示,给定边界处的温度值;
2)第二类边界条件给定的是热流密度,而且一般都指边界法向热流密度qn,即在S2:
在这里插入图片描述
其中:qn指的是温度的梯度,对应左下角图,按几何理解就是温度曲线在边界处的斜率。二阶偏微分方程的定解条件也需要某点一阶导的值,因此第二类边界条件告诉你温度的梯度。

特别地,当这个热流密度为0时,即梯度为0时,如右上图所示,这个条件就是绝热边界条件。当温度梯度为0时,那么就不存在热量从温度高的流向低的,那么就没有了热量交换,所以叫绝热/隔热,也叫自然边界条件。

3. 第三类边界条件

第三类边界条件如右下图所示,在S3处:
在这里插入图片描述
其中:T0指边界处的温度,这个是未知的;Ta指环境温度,这个是已知的,h指表面热传导系数,这个是已知的。

这个边界条件也叫对流边界条件,公式左边是热流密度,那公式右边是什么呢?在右下角图中,边界外面实际上有流体沿着边界表面流过,这就是受迫对流,因此公式右边表述的是对流传热,对流传热的微分方程:
在这里插入图片描述
因此,边界处温度的梯度,即热流密度,我们可以通过对流传热来求解,这个关系式包含了在边界处的温度及其温度梯度。表面热传导系数h和对象表面、流体性质、对流性质有关,一般可以通过做实验得出。


总结

本周,我学习了灰色预测法,其基本思想是通过鉴别系统因素之间发展趋势的相异程度,对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。此外,我学习了传热三类边界条件。如果知道温度,就直接用第一类边界条件;如果什么都不知道,一般用第二类绝热边界条件;如果涉及对流传热,一般要用第三类边界条件。现在既学习控制方程,又学习了边界条件,因此下周将学习有限元求解方程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【图像基础知识】常见图像格式

文章目录 1 简介2 RGB3 BGR4 YUV4.1 YUV常见格式4.2 YUV420详解4.3 NV12 5 Gray6 图像格式之间的转换7 参考链接 原文来自于地平线开发者社区,未来会持续发布深度学习、板端部署的相关优质文章与视频,如果文章对您有帮助,麻烦给点个赞&#x…

基于趋动云部署秋葉aaaki的Stable Diffusion整合包v4--linux版

B站大V秋葉aaaki的Stable Diffusion整合V4版发布了,集成度比较高,在windows下解压缩直接就可以使用,整合的非常好。但是笔人没有RTX4090这样级别的显卡,又希望有个高速运行的效果。 所以索性到云GPU主机上来用秋叶aaaki的Stable …

1.环境搭建

1.Windows 系统GolangVisual Studio CodeMicrosoft Windows (x86-64)go1.20.1.windows-amd64.msihttps://code.visualstudio.com/DownloadMicrosoft Windows (x86-i386)go1.20.1.windows-386.msihttps://code.visualstudio.com/DownloadMicrosoft Windows (ARM64)go1.20.1.win…

《疯狂Java讲义》读书笔记4

初始化块 是构造器的补充,在构造器之前执行。 是一段固定的代码,不接受任何参数。 构造器其实是一个假象,编译Java类后,初始化块会消失,当中的代码被还原到构造器中,且位于构造器前面。 静态初始化块 用…

springboot+vue家政服务管理平台(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家政服务管理平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

R语言相关系数的可视化

R相关系数的可视化 文章目录 R相关系数的可视化[toc]1、序列自相关2、序列偏自相关3、简单相关4、相关图可视化5、不同方法6、其他一些修饰 1、序列自相关 自相关是指同一时间序列在不同时间 t t t上取值的相关程度,假设时间序列 { X t } t 1 T \{X_t\}_{t1}^{T} …

电子电气架构——车载以太网防火墙

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本文主要分享关于车用基础软件的内核和中间件核心技术—虚拟化的典型应用案例。 车辆内部的以太网网络是一个相对封闭的环境,没有因特网那么复杂。由于车辆…

[LeetCode周赛复盘] 第 345 场周赛20230514

[LeetCode周赛复盘] 第 345 场周赛20230514 一、本周周赛总结6430. 找出转圈游戏输家1. 题目描述2. 思路分析3. 代码实现 6431. 相邻值的按位异或1. 题目描述2. 思路分析3. 代码实现 6433. 矩阵中移动的最大次数1. 题目描述2. 思路分析3. 代码实现 6432. 统计完全连通分量的数…

多核与多处理器的区别

一、定义 多核:单块CPU上面能处理数据的芯片组的数量,比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。 多处理器:主板上实际插入的cpu数量,一般有两个或者多个处理…

AutoSar之DaVinci开发环境

文章目录 前言一、AutoSar架构简介二、开发环境组成1.DaVinci Developer2.DaVinci Configurator3.SIP 总结 前言 作为初学者,接触AutoSar的开发,除了需要掌握基本的AutoSar架构知识外,还需要熟悉设计和配置AutoSar的工具链。接下来我会以Vec…

ChatGPT在小红书文案实践

今天聊一聊ChatGPT在小红书这个实际应用场景的案例。ChatGPT 以较低的门槛提高了使用者创作水平,有较高的下限,但如何创造更高质量的内容就要依靠使用者在领域的能力和AI使用技巧,作者无任何小红书推广和文案写作经验,文章内容来自…

【MySQL】C语言连接数据库

在使用数据库的时候&#xff0c;我们是操作客户端方的&#xff0c;向服务器请求数据。MySQL的端口号-3306 连接mysql需要头文件&#xff1a;#include<mysql/mysql.h> 基础连接步骤&#xff1a; 1.创建连接句柄 MYSQL mysql_con;//连接句柄 2.初始化连接句柄mysql_i…

LabVIEWCompactRIO 开发指南18 使用网络流发送消息和命令

LabVIEWCompactRIO 开发指南18 使用网络流发送消息和命令 默认情况下&#xff0c;网络流旨在最大化吞吐量&#xff0c;但可以轻松实现它们以最大化发送命令或消息的低延迟。 为本部分提供LabVIEW示例代码 命令发送器体系结构 命令发送器是CompactRIO控制器必须响应的任何命…

如何构建“Buy Me a Coffee”DeFi dApp

&#x1f978; 本教程来自官网&#xff1a;https://docs.alchemy.com/docs。对原文部分内容进行了修改。教程中所有实例经过本人实践&#xff0c;代码可见&#xff1a;https://github.com/ChuXiaoYi/web3Study 区块链技术令人惊叹&#xff0c;因为它使我们能够使用代码和软件编…

【Linux初阶】进程地址空间 | CUP与可执行程序的交互原理

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;计算机空间初识&#xff08;子进程变量修改实验&#xff09;&#xff0c;感性理解进程虚拟地址空间&#xff0…

Web自动化测试工具大对决:细致比较Selenium、Protractor和Cypress

目录 前言&#xff1a; Selenium Protractor Cypress 结论 Web自动化测试步骤结构图&#xff1a; 前言&#xff1a; 随着Web应用程序的广泛使用&#xff0c;Web自动化测试工具的需求也越来越高。Web自动化测试工具可以模拟用户在Web浏览器中的行为&#xff0c;并且可以快…

NICE-SLAM学习

NICE-SLAM简介&#xff1a; 是浙大和ETH提出的一种神经隐式SLAM方法主要创新点在于解决了基于传统nerf的方案如imap无法应用在较大场景的问题。 关于该工程的前身和当前领域的主要研究现状见&#xff1a;&#xff08;知乎&#xff1a;秦通&#xff09;基于神经辐射场的&#…

接口自动化测试-Pytest核心固件Fixture详解以及应用实战

目录 前言&#xff1a; 一、Fixture概述 二、Fixture分类 在Pytest中&#xff0c;Fixture可以分为4类&#xff1a; 三、Fixture使用 下面结合实例说明如何使用Fixture。 3.1 session级别的Fixture 3.2 module级别的Fixture 3.3 function级别的Fixture 3.4 class级别的F…

2023.5.13前端设计

SpringbootVue架构设计&#xff08;一&#xff09; 项目中的文件来自B站视频&#xff08;程序员青戈&#xff09; https://www.bilibili.com/video/BV1U44y1W77D 前端设计 assets 文件夹通常用于存放静态资源文件&#xff0c;例如图像、CSS、字体等。components 文件夹通常用…

2023.5.14数据库设计

SpringbootVue架构设计&#xff08;二&#xff09; 项目中的文件来自B站视频&#xff08;程序员青戈&#xff09; https://www.bilibili.com/video/BV1U44y1W77D 数据库设计 1、article 在关系型数据库中&#xff0c;text类型和varchar类型都是用来存储字符串的数据类型。它…