| 第48行: |
第48行: |
| | ==集体注意力流网络的构建== | | ==集体注意力流网络的构建== |
| | 了解集体注意力流网络相关的基本概念之后,就需要了解如何才能构造一个标准的集体注意力流网络。 | | 了解集体注意力流网络相关的基本概念之后,就需要了解如何才能构造一个标准的集体注意力流网络。 |
| − | ===行为记录===
| |
| − |
| |
| − |
| |
| − | ===节点与流量===
| |
| − | 为了构建集体注意力流网络,原始行为记录一般只需要访问的时间戳和具体网址,数据可表示为类似 (time stamp, URL) 的结构。建模时,先把内容资源抽取出来作为节点,再统计任意两个节点之间的转移次数<math>f_{ij}</math>,从而得到一个带方向和权重的流量矩阵<math>F=\{f_{ij}\}_{n\times n}</math>。如果可以采集到访问的用户(Session),跟踪用户状态,那么可以分别跟踪每一个用户的跳转路径。
| |
| − |
| |
| − | 例如,只有两个用户A和B,四个站点a、b、c和d的情况下,若用户A的访问路径,从a节点跳到b节点再到c节点,用户B的访问路径,从a节点跳到b节点再到d节点,那么我们会得到<math>f_{ab}=2</math>,<math>f_{bc}=1</math>,<math>f_{bd}=1</math>,其他<math>f_{ij}=0</math>的F矩阵。
| |
| − |
| |
| − | ===引入源、汇节点===
| |
| − | 直接构建节点的流量矩阵,往往会出现节点流入、流出不平衡的现象,这时候就需要引入源节点和汇节点。
| |
| − |
| |
| − | 假设,对于节点<math>i</math>,总流入量为
| |
| − |
| |
| − | <math>
| |
| − | I_i=
| |
| − | \sum_{j=1}^{N} f_{ji}
| |
| − | </math>
| |
| − |
| |
| − | 总流出量为
| |
| − |
| |
| − | <math>
| |
| − | D_i=
| |
| − | \sum_{j=1}^{N+1} f_{ij}
| |
| − | </math>
| |
| − |
| |
| − | 那么一般情况下,都会出现
| |
| − |
| |
| − | <math>
| |
| − | D_i\neq I_i.
| |
| − | </math>
| |
| − |
| |
| − | 也就是说此时,网络的流量不是平衡的。为了保证平衡性,我们需要引入源节点source和汇节点sink,也视为流网络的节点,流量矩阵<math>F=\{f_{ij}\}_{(n+2)\times (n+2)}</math>则转换为了包含节点source和汇节点sink的<math>{(n+2)\times (n+2)}</math>矩阵,若规定source节点编号为0,sink节点编号为n+1,则对于任意一个节点i,<math>0\leq i\leq n</math>有
| |
| − |
| |
| − | <math>f_{0i}=I_i,</math>
| |
| − |
| |
| − | <math>f_{i,n+1}=D_i.</math>
| |
| − |
| |
| − | 还是上一节的案例,只有两个用户A和B,<math>f_{ab}=2</math>,<math>f_{bc}=1</math>,<math>f_{bd}=1</math>,那么我们会规定<math>f_{source,a}=2</math>,<math>f_{b,sink}=1</math>,<math>f_{c,sink}=1</math>。我们最终会得到一个平衡的,由a、b、c和d四个站点构造的小型集体注意力流网络。
| |
| | | | |
| | === 行为记录:数据来源与预处理 === | | === 行为记录:数据来源与预处理 === |
| 第94行: |
第56行: |
| | | | |
| | * 每条原始记录的格式为: | | * 每条原始记录的格式为: |
| − | ** $(t,\ \textit{referrer},\ \textit{host},\ \textit{path})$ | + | ** <math>(t,\ \textit{referrer},\ \textit{host},\ \textit{path})</math> |
| − | * $t$:时间戳(Unix time) | + | * <math>t</math>:时间戳(Unix time) |
| − | * $\textit{referrer}$:上一个被访问网站(域名) | + | * <math>\textit{referrer}</math>:上一个被访问网站(域名) |
| − | * $\textit{host}$:当前被访问网站(域名) | + | * <math>\textit{host}</math>:当前被访问网站(域名) |
| − | * $\textit{path}$:访问位置 | + | * <math>\textit{path}</math>:访问位置 |
| | * 预处理:根据 Blue Coat 提供的站点分类数据识别广告/投放类网站,并将其从原始数据中移除,以减少噪声与偏差影响。 | | * 预处理:根据 Blue Coat 提供的站点分类数据识别广告/投放类网站,并将其从原始数据中移除,以减少噪声与偏差影响。 |
| | | | |
| − | === 将点击流映射为开流网络(Open Flow Network) === | + | === 将点击流映射为开流网络 === |
| − | 设共有 $N$ 个网站节点。对某个时间窗口(例如一天)内的所有点击流记录进行统计,构建一个有向加权网络,记作''开流网络''。 | + | 设共有<math>N</math>个网站节点。对某个时间窗口内的所有点击流记录进行统计,构建一个有向加权网络,即开放流网络。 |
| | | | |
| − | ==== 2.1 建立网站字典并赋予索引 ==== | + | ====建立网站字典并赋予索引 ==== |
| − | * 从所有记录中抽取不同的域名集合(网站集合)。
| + | 从所有记录中抽取不同的域名集合(网站集合)。为每个不同网站分配一个唯一索引,用于后续统计转移流量<math>f_{ij}</math>。 |
| − | * 为每个不同网站分配一个唯一索引,用于后续统计转移流量 $f_{ij}$。
| |
| | | | |
| − | ==== 2.2 统计有向转移流量 $f_{ij}$ ==== | + | ====统计有向转移流量<math>f_{ij}</math>==== |
| − | * 忽略时间戳 $t$,对给定索引 $i$ 与 $j$ 的网站对统计用户从 $i$ 跳转到 $j$ 的转移次数: | + | * 忽略时间戳<math>t</math>,对给定索引<math>i</math>与<math>j</math>的网站对统计用户从<math>i</math>跳转到<math>j</math>的转移次数: |
| − | ** $f_{ij}$:从网站 $i$ 到网站 $j$ 的流量(流量大小由跃迁次数计)。 | + | **<math>f_{ij}</math>:从网站 $i$ 到网站 $j$ 的流量(流量大小由跃迁次数计)。 |
| − | * 若记录中出现 $\textit{referrer}$ 为空/缺失(null string),表示该跃迁在观测数据中没有来源站点,则把它视为来自系统外部的输入,把 $\textit{null}$ 映射为''源节点(source)''对应的流入。 | + | * 若记录中出现<math>\textit{referrer}</math>为空/缺失(null string),表示该跃迁在观测数据中没有来源站点,则把它视为来自系统外部的输入,把<math>\textit{null}</math>映射为''源节点(source)''对应的流入。 |
| | | | |
| | ==== 2.3 引入源节点与汇节点表示“离线世界” ==== | | ==== 2.3 引入源节点与汇节点表示“离线世界” ==== |