diff --git a/.vitepress/cache/deps/_metadata.json b/.vitepress/cache/deps/_metadata.json index 94a229c..7c1dac0 100644 --- a/.vitepress/cache/deps/_metadata.json +++ b/.vitepress/cache/deps/_metadata.json @@ -1,11 +1,11 @@ { - "hash": "468c91a0", - "browserHash": "0e915b7e", + "hash": "79186abe", + "browserHash": "ac388fdc", "optimized": { "vue": { "src": "../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", "file": "vue.js", - "fileHash": "bf7209a1", + "fileHash": "69aa98d5", "needsInterop": false } }, diff --git a/.vitepress/theme/style.css b/.vitepress/theme/style.css index 53b5b27..d0668d7 100644 --- a/.vitepress/theme/style.css +++ b/.vitepress/theme/style.css @@ -97,3 +97,7 @@ --docsearch-primary-color: var(--vp-c-brand) !important; } +mjx-container { + display: inline-block; + margin: auto; +} \ No newline at end of file diff --git a/4.人工智能/4.6.6.2.2.3利用上下文信息.md b/4.人工智能/4.6.6.2.2.3利用上下文信息.md index d2a4269..597003d 100644 --- a/4.人工智能/4.6.6.2.2.3利用上下文信息.md +++ b/4.人工智能/4.6.6.2.2.3利用上下文信息.md @@ -69,33 +69,37 @@ $$ 原本的相似度公式为: $$ -sim(i,j)=\frac{\sum_{u\in N(i) \cap N(i)}{1}}{\sqrt{\vert N(i)\vert \vert N(j) \vert}}$$ +sim(i,j)=\frac{\sum_{u\in N(i) \cap N(i)}{1}}{\sqrt{\vert N(i)\vert \vert N(j) \vert}} +$$ 引入时间信息后,可更新为: -$$sim(i,j)=\frac{\sum_{u\in N(i) \cap N(i)}{f(\vert t_{ui} - t_{uj}\vert)}}{\sqrt{\vert N(i)\vert \vert N(j) \vert}}$$ +$$ +sim(i,j)=\frac{\sum_{u\in N(i) \cap N(i)}{f(\vert t_{ui} - t_{uj}\vert)}}{\sqrt{\vert N(i)\vert \vert N(j) \vert}}$$ -其中$$f(\vert t_{ui}-t_{uj} \vert)$$ 为时间衰减项,其中$$t_{ui}$$为用户u对物品i产生行为的时间,$$f()$$ 函数的作用是,用户对i与j的作用时间相距越远,对应函数值越小,相当于对输入因子$$\vert t_{ui}-t_{uj} \vert$$ 进行一个反比操作。可以找到在数学中许多的衰减函数,例如: +其中$f(\vert t_{ui}-t_{uj} \vert)$ 为时间衰减项,其中$t_{ui}$为用户u对物品i产生行为的时间,$f()$ 函数的作用是,用户对i与j的作用时间相距越远,对应函数值越小,相当于对输入因子$\vert t_{ui}-t_{uj} \vert$ 进行一个反比操作。可以找到在数学中许多的衰减函数,例如: - $$f(\vert t_{ui}-t_{uj} \vert)=\frac{1}{1+\alpha(\vert t_{ui}-t_{uj}\vert)}$$ +$$f(\vert t_{ui}-t_{uj} \vert)=\frac{1}{1+\alpha(\vert t_{ui}-t_{uj}\vert)}$$ -其中$$\alpha$$ 是时间衰减参数,它的取值与系统的对于自身定义有关系。收到用户兴趣变化的额外影响。 +其中$\alpha$ 是时间衰减参数,它的取值与系统的对于自身定义有关系。收到用户兴趣变化的额外影响。 - 在线推荐 用户近期行为相比用户很久之前的行为,更能体现用户目前的兴趣,所以在进行预测时,应当加重用户近期行为的权重,但不应该偏离用户长期行为的行为基调。 -原本的用户u对于物品i的兴趣$$p(u,i)$$ 可通过如下公式计算: +原本的用户u对于物品i的兴趣$p(u,i)$ 可通过如下公式计算: $$p(u,i)=\sum_{j\in N(u)}{sim(i,j)}$$ 引入时间信息可更新为: - $$p(u,i)=\sum_{j\in N(u)\cap S(i,k)}{sim(i,j)\frac{1}{1+\beta \vert t_0-t_{uj}\vert}}$$ +$$ +p(u,i)=\sum_{j\in N(u)\cap S(i,k)}{sim(i,j)\frac{1}{1+\beta \vert t_0-t_{uj}\vert}} +$$ -在上面的更新后公式中,$$t_0$$ 表示当前时间,该公式表明,当 $$t_{uj}$$ 与 $$t_0$$ 越靠近,和物品j相似的物品就会在用户u的推荐列表中获得更高的排名。其中的$$\beta$$和上文的 $$\alpha$$ 是一样的,需要根据系统的情况选择合适的值。 +在上面的更新后公式中,$t_0$ 表示当前时间,该公式表明,当 $t_{uj}$ 与 $t_0$ 越靠近,和物品j相似的物品就会在用户u的推荐列表中获得更高的排名。其中的$\beta$和上文的 $\alpha$ 是一样的,需要根据系统的情况选择合适的值。 - 时间上下文相关的userCF算法 与itemCF算法类似,userCF在引入时间信息后也可以进行更新 @@ -103,13 +107,17 @@ $$p(u,i)=\sum_{j\in N(u)}{sim(i,j)}$$ - 用户兴趣相似度 用户相似度在引入时间信息后,会将用户相同的逆时序选择相似度降低。简单来说,就是A一月BF1长时间在线,二月BF5长时间在线,而B一月BF5长时间在线,二月BF1长时间在线;C行为信息与A相同。如果不引入时间信息,那么AB的相似度与AC的相似度是一样的,而实际上,AC的相似度会大于AB的相似度。 uerCF的用户uv间相似度的基本公式为: - $$w_{uv}=\frac{\vert N(u)\cap N(v)\vert}{\sqrt{\vert N(u)\cap N(v)\vert}}$$ +$$ +w_{uv}=\frac{\vert N(u)\cap N(v)\vert}{\sqrt{\vert N(u)\cap N(v)\vert}} +$$ -其中,$$N(u)$$ 是用户u喜欢的物品的合集,$$N(v)$$ 是用户v喜欢的物品的合集。 +其中,$N(u)$ 是用户u喜欢的物品的合集,$N(v)$ 是用户v喜欢的物品的合集。 引入时间信息后,公式可更新为: - $$w_{uv}=\frac{\sum_{i \in N(u)\cap N(i)}{\frac{1}{1+\alpha \vert t_{ui}-t_{vi}\vert}}}{\sqrt{\vert N(u)\cap N(v)\vert}}$$ +$$ +w_{uv}=\frac{\sum_{i \in N(u)\cap N(i)}{\frac{1}{1+\alpha \vert t_{ui}-t_{vi}\vert}}}{\sqrt{\vert N(u)\cap N(v)\vert}} +$$ 同样增加了一个时间衰减因子,用户uv对于i的作用时间差距越大,那么两人的相似度会相应降低。 @@ -117,31 +125,35 @@ uerCF的用户uv间相似度的基本公式为: - 相似兴趣用户的最近行为 对于用户u来说,存在最近行为与用户u相似的用户v,那么用户v的最近行为,将会比用户u很久之前的行为更具有参考价值。 userCF中用户u对于物品i兴趣的基础公式为: - $$p(u,i)=\sum_{v\in S(u,k)}{w_{ui}r_{vi}}$$ +$$ +p(u,i)=\sum_{v\in S(u,k)}{w_{ui}r_{vi}} +$$ -其中,$$S(u,k)$$ 包含了与用户 u 相似度最高的 k 名用户。而对应的$$r_{ui}$$ ,若用户产生过对i的行为,则其值为1 ,否则为0 。 +其中,$S(u,k)$ 包含了与用户 u 相似度最高的 k 名用户。而对应的$r_{ui}$ ,若用户产生过对i的行为,则其值为1 ,否则为0 。 引入时间信息更新公式: - $$p(u,i)=\sum_{v\in S(u,k)}{w_{ui}r_{vi}} \frac{1}{1+\alpha(\vert t_0-t_{vi}\vert)} +$$ +p(u,i)=\sum_{v\in S(u,k)}{w_{ui}r_{vi}} \frac{1}{1+\alpha(\vert t_0-t_{vi}\vert)} $$ - 时间段图模型 同样是一个基于图的推荐系统模型,引入时间信息,建立一个二分图时间段图模型: $$ -(U,S_U,I,S_I,,E,w,\sigma)$$ +(U,S_U,I,S_I,,E,w,\sigma) +$$ -其中,$$U$$ 是用户节点集合,$$S_U$$ 表示用户时间段节点集合,一个用户时间段节点$$v_{ut}\in S_U$$ 会和用户 $$u$$ 在时刻 $$t$$ 喜欢的的物品通过边相连。$$I$$ 是物品集合,$$S_I$$ 是物品时间段节点集合,一个物品时间段节点 $$v_{it}\in S_I$$ 会和所有在时间$$t$$ 喜欢物品 $$i$$ 的用户节点相连。 +其中,$U$ 是用户节点集合,$S_U$ 表示用户时间段节点集合,一个用户时间段节点$v_{ut}\in S_U$ 会和用户 $u$ 在时刻 $t$ 喜欢的的物品通过边相连。$I$ 是物品集合,$S_I$ 是物品时间段节点集合,一个物品时间段节点 $v_{it}\in S_I$ 会和所有在时间$t$ 喜欢物品 $i$ 的用户节点相连。 -$$E$$ 是边集合,包含两大类边 +$E$ 是边集合,包含两大类边 -第一种:若用户 $$u$$ 对于物品 $$i$$ 有行为,则会存在边 $$e(u,i)\in E$$ ;第二种,若用户 $$u$$ 对于物品 $$i$$ 在时间 $$t$$ 有行为,那么将存在对应的两条边,$$e(v_{ut},v_i),e(v_u,v_{it})\in E$$ 。 +第一种:若用户 $u$ 对于物品 $i$ 有行为,则会存在边 $e(u,i)\in E$ ;第二种,若用户 $u$ 对于物品 $i$ 在时间 $t$ 有行为,那么将存在对应的两条边,$e(v_{ut},v_i),e(v_u,v_{it})\in E$ 。 -而 $$w(e)$$ 定义了边的权重,$$\sigma(e)$$ 定义了顶点的权重。具体示例: +而 $w(e)$ 定义了边的权重,$\sigma(e)$ 定义了顶点的权重。具体示例: @@ -157,18 +169,20 @@ $$E$$ 是边集合,包含两大类边 ### 路径融合算法 - 首先提取两个节点之间,长度小于一个给定值的所有路径。然后根据每条路径经过的不同节点,给予路径不同的权重。最后将所有路径的权重之和,作为两点的相关度。 -设 $$P=\lbrace v_1,v_2,...,v_n\rbrace$$ 是链接顶点 $$v_1$$ 到 $$v_n$$ 的一条路径,这条路径的权重 $$\Gamma(P)$$ 取决于这条路径所经过的所有顶点和边。 +设 $P=\lbrace v_1,v_2,...,v_n\rbrace$ 是链接顶点 $v_1$ 到 $v_n$ 的一条路径,这条路径的权重 $\Gamma(P)$ 取决于这条路径所经过的所有顶点和边。 -$$\Gamma(P)=\sigma(v_n)\prod_{i=1}^{n-1}{\frac{\sigma(v_i)\cdot w(v_i,v_{i+1})}{\vert out(v_i)\vert ^{\rho}}}$$ +$$ +\Gamma(P)=\sigma(v_n)\prod_{i=1}^{n-1}{\frac{\sigma(v_i)\cdot w(v_i,v_{i+1})}{\vert out(v_i)\vert ^{\rho}}} +$$ -其中,$$out(v)$$ 是顶点 $$v$$ 指向的顶点的集合,$$\vert out(v) \vert$$ 是顶点 $$v$$ 的出度,$$\sigma(v_i)\in(0,1]$$ 定义了顶点的权重,$$w(v_i,v_{i+1})\in (0,1]$$ 定义了边 $$e(v_i,v_{i+1})$$ 的权重。 -定义了一条边的权重之后,就可以定义顶点之间的相关度。对于顶点$$v_1,v_n$$ ,令$$p(v_1,v_n,K)$$ 为这两个顶点间距离小于K的所有路径,那么这两个顶点的相关度就可以表示为: +其中,$out(v)$ 是顶点 $v$ 指向的顶点的集合,$\vert out(v) \vert$ 是顶点 $v$ 的出度,$\sigma(v_i)\in(0,1]$ 定义了顶点的权重,$w(v_i,v_{i+1})\in (0,1]$ 定义了边 $e(v_i,v_{i+1})$ 的权重。 +定义了一条边的权重之后,就可以定义顶点之间的相关度。对于顶点$v_1,v_n$ ,令$p(v_1,v_n,K)$ 为这两个顶点间距离小于K的所有路径,那么这两个顶点的相关度就可以表示为: $$d(v_1,v_n)=\sum_{P\in P(v_1,v_n,K)}{\Gamma(P)}$$ -对于时间段图模型,所有边的权重都为1,而顶点的权重$$\sigma(v)$$ 的定义为: +对于时间段图模型,所有边的权重都为1,而顶点的权重$\sigma(v)$ 的定义为: 而关于路径融合算法的算法实现,可以使用基于图上的广度优先搜索算法实现。 # 地点上下文 @@ -204,7 +218,7 @@ $$d(v_1,v_n)=\sum_{P\in P(v_1,v_n,K)}{\Gamma(P)}$$ - 第二种数据:对于物品i在用户u推荐列表中的权重公式进行修正 (1)首先忽略物品的位置信息,利用itemCF算法计算用户u对物品i的兴趣 -(2)计算物品i对于用户u的代价 $$TravelPenalty(u,i)$$ ,对于物品i与用户u之前评分的所有物品的位置距离计算平均值,度量方式通常采用交通网络数据。 +(2)计算物品i对于用户u的代价 $TravelPenalty(u,i)$ ,对于物品i与用户u之前评分的所有物品的位置距离计算平均值,度量方式通常采用交通网络数据。 (3) 利用公式 $$RecScore(u,i)=P(u,i)-TravelPenalty(u,i)$$ @@ -213,4 +227,3 @@ $$RecScore(u,i)=P(u,i)-TravelPenalty(u,i)$$ 计算最终的权重。 - 第三种数据:LARS的处理方法相当于在第二种数据中引入了用户当前位置的信息。 -$$