p5 and查询:字典里找出两个postings -> 合并
合并算法,同时浏览两个表,时间与doc数成正比,关键:按序号排序
p12 查询优化:多个and,从最小集合开始合并
(A or B) and (C or D):估计每个or的文档频率和,按大小排序
先处理频率小的,短短合并,再与长
p22 通配符查询: “mon*”以mon开头,容易使用二值数词典找到所有mon<=w<=moo
p25 为找 co*tion ,在B树中查找co*AND*con—太昂贵
解决:转换使星号出现在最后 -> permuterm index
对于hello:
要查*b,在星号后加$,*$b 旋转使*出现在末端->b$* , x*y -> y$x*
p28 BSBI 阻塞的基于排序的索引
思想:为每个块累计postings,排序并写到磁盘,然后将这些块合并成一个长排序
p30 单次内存索引
为每个块建立单独字典,不需要跨块维护;不须排序,直接按先后顺序
为每个块构造独立倒排索引,最后将所有倒排索引合并
p32 映射规约 简单的分布式计算框架
map和reduce步骤:
文档数矩阵:考虑文档中词项出现次数,每个文档为一向量(词袋模型,不考虑词位置)
p39 词频 tf t f t , d tf_{t,d} tft,d:t在d中出现次数,出现10次的比1次的更相关,但非10倍(非线性)
log-frequency t在d内的对数频率权重
w t , d = { 1 + l o g 10 t f t , d t f t , d > 0 0 o t h e r w i s e w_{t,d} = \begin{cases} 1 + log_{10}tf_{t,d}&tf_{t,d}>0\\ 0&otherwise\\ \end{cases} wt,d={1+log10tft,d0tft,d>0otherwise
0 → 0, 1 → 1, 2 → 1.3, 10 → 2, 1000 → 4, etc
文档-查询对分数:(q和d中包含t和)
s c o r e ( q , d ) = ∑ t ∈ q ∩ q 1 + l o g t f t , d score(q,d) = \sum_{t\in{q\cap q}}{1+log{tf_{t,d}}} score(q,d)=t∈q∩q∑1+logtft,d
罕见词高频率
d f t df_{t} dft: t的文档频(document frequency)包含t的文档个数,与t的信息量成反比
idf 逆文档频率
i d f t = l o g 10 ( N / d f t ) idf_{t} = log_{10}(N/df_{t}) idft=log10(N/dft)
为乘积:
W t , d = l o g ( 1 + t f t , d ) ∗ l o g 10 ( N / d f t ) W_{t,d} = log(1+tf_{t,d})*log_{10}(N/df_{t}) Wt,d=log(1+tft,d)∗log10(N/dft)
idf不影响只有一个词的查询(就是第一了)
给定一个查询的文档分数:(词在文中的次数)(词的重要性)
S c o r e ( q , d ) = ∑ t ∈ q ∩ d t f . i d f t , d Score(q,d) = \sum{_{t\in{q\cap d}}{tf.idf_{t,d}}} Score(q,d)=∑t∈q∩dtf.idft,d
得到V维向量,词项为空间轴,高维稀疏
向量查询:将query表示成空间向量,按照接近程度排序
欧氏距离:对于不同的向量太大(q d2)
根据与查询的角度排序->根据cos(0-180递减)
cosine分数算法:
idea:最小化平方和(每个样本点与其中心距离平方和)
启发式算法,需设置最初K个点
随机化k个中心->将每个点分配到最近的质心,根据新点坐标,平均为新质心->重复直到收敛(没有样本点变化)
保证有限迭代次数内收敛。
时间复杂度:分配点到质心 O(KN),更新质心为样本点均值 O(N)
随机选取一个中心,剩下每个点计算到最近中心点距离D(X),以D(X)^2为概率随机选取一个点为新中心
广阔的间隔点,避免间隔点或太靠近的中心
凝聚层次聚类,开始每个点为一类,两个最近的类合并,直到成为一类。
树状图y轴与类间距离成正比
pros:内存小;计算速度快
cons:对随机初始敏感;类数需提前确定
pros:确定性算法;可用树状图表示不同k的情况;只需要一个最大距离来衡量两个类多不同
cons:内存大,计算大
类是高密度区域,噪点位于低密度
每个核心点:至少MP个点在EPS范围内,都为邻居点
每个簇:核心点&边界点。边界点EPS内少于MP个点,但他是核心点的邻居
可达性:不对称关系
连接性:对称关系,若v与q p都可达,则pq相连为一簇
一些点,某点,假设知道他由哪个高斯生成,就可以估计其参数,如果不知道它属于哪个,但知道均值方差,就可知该点由该高斯生成的概率(很想k-means)
随机初始参数,贝叶斯求点属于哪个高斯概率
求每个点属于每个高斯模型的概率
利用最匹配的点更新模型参数
迭代
pros:处理重叠集群;处理不同密度集群
cons:会卡在局部极大值;设置类数
初始化theta_old
E 计算当前x, theta时z概率
M 选一个新的theta
k个topic在doc上的概率分布(和为1)
主题上每个词的概率(重要性)
对于每个文档i:
对于每个出现的词j:
获取i的主题概率,生成词w_j
同一文档可从不同主题生词
并非文档集上的概率模型;过拟合;先验知识,每个文档只有几个主题,词汇只有几种场景
PLSA 主题分布和词分布是确定的
LDA 分布不再唯一,可变化,由狄利克雷分布先验确定
LDA是PLSA的贝叶斯版本,PLSA+分层贝叶斯
两个超参 alpha beta , <=1时,可跑出稀疏向量
K为topic数,当alpha>1时,每个topic差不多重要,当<1时,只有某几个的大,其他的接近0,较好
转移概率矩阵P,给定不同初始概率分布,都收敛到π,收敛行为主要由转移矩阵P决定
P自乘n遍后,每一项值与行无关,每一列值相同 -> π称为马氏链的平稳分布
若非周期马氏链转移矩阵P和分布π满足: π(i)P_ij = π(j)P_ji , 则π(x)为马氏链平稳分布
假设矩阵Q,显然一开始p不满足细致平稳条件,所以引入α
p(i)q(i,j)α(i,j) = p(j)q(j,i)α(j,i)
以q(i,j)α(i,j)为Q’(i,j),所以上式为转移矩阵Q’对应的平稳分布
alpha为接受率,在原来马氏链上,以状态i从q(i,j)的概率跳转到j时,以alpha的概率接受这个转移
假设有一转移矩阵Q
随机初始化马氏链状态X_0:
对于t = 0,1,2…:
第t个马氏链状态X_t,采样y;从[0,1]均匀分布采样u;若u小于alpha,接受转移Xt->y,否则仍为xt
接受就转移,不接受就不变
alpha可能偏小,使得收敛到平稳分布的速度太慢:将等式两边同时扩大,使得两边alpha等比例放大,最大的一个到1,高效
二维多维:
马氏链的转移轮换着沿坐标轴转移 Y_t+1 ~ p(y|x_t) X_t+1 ~ p(x|y_t+1)
没有训练模型,找出k个最近的投票
数据;计算距离的度量;k值(最近邻个数)
距离度量:欧几里得、cosine
投票权重:多数投票、距离权重w=1/d^2
朴素:各个变量相互独立
如果页面有更多连接指向,更重要;重要页面的连接更重要
页面的重要性为所有进链接的票和
流动方程 r = M·r M矩阵,纵向为被指页
秩向量r为M的特征向量,M最大特征值为1
power iteration 幂次迭代: 初始化r[1/n, 1/n…]开始一样重要,r = Mr,当r’-r小于阈值停止
满足一定条件的图,平稳分布是惟一的,不管初始r
是否收敛;是否收敛到我们想要的;结果合理吗
随机游走无处可去,重要性漏出
保证该点出口总概率1,[0,0,0]->[1/3,1/3,1/3]随机传送,即若一列全为0,全分出去
所有链都在组内,随机游走被困,最终占据所有重要性
远传输:每步,beta随机跟链走,(1-beta)随机跳跃
陷阱不是问题,但最终结果不是想要的:有限步跳出来
死角是问题,初始假设不满足(列不为1),没有地方去,就传出去
A = beta*M + (1-beta)*(1/n的矩阵)
二值:文档和查询相当于布尔值以二进制关联向量表示
独立性:项之间无关
避免0值:每个计数都+0.5
没有那么不同,实际上用相同方式,对于概率IR,对查询的评分不用cos相似或者tfidf,而是概率公式