一、基于图模型的推荐
在不考虑标签时,基于二项图有两种随机游走的图推荐算法:
1.probability spreading
随机游走算法,在游走中,每个目标得到权重是基于归属者的边计算出来的。
每次传播(item->user->item)后用户Ui的兴趣向量:
2.heat spreading
规则与ProbS相反,在游走中,每个目标得到权重是基于自己的边计算出来的。
每次传播后用户Ui的兴趣向量:
其中:
是节目j的邻域大小,
是用户l的邻域大小。
$a_{ij}$是表示用户i和物品j之间是否有边存在的二元向量。
相比之下,Heats算法倾向于降低热门item的权重,而Probs中与增强对热门item的推荐。
在随机游走算法的基础上,有基于三分图的标签推荐算法:
图中,用户i的每个item的权重(1 or 0)会同时像用户和标签进行传播,这样每次传播后的兴趣向量:
最近在做CTR,刚好Google在KDD发了一篇文章,讲了他们的一些尝试,总结一下:
先是一些公式的符号说明:
[
][1]
一、优化算法
CTR中经常用Logistic regression进行训练,一个常用的Loss Function为
Online gradient descent(OGD)是一个常用的优化方法,但是在加上L1正则化后,这种方法不能产生有效的稀疏模型。相比之下 Regularized Dual Averaging (RDA)拥有更好的稀疏性,但是精度不如OGD好。
FTRL-Proximal 方法可以同时得到稀疏性与精确性,不同于OGD的迭代步骤:
其中$\eta_t$是一个非增的学习率
FTRL-Proximal通过下式迭代:
参数$\sigma$是学习率,一般我们有 ${\sum_{s=1}^t\sigma_s=\frac{1}{\eta_t}}$。
更新公式:
算法如下:
这里多个一个 $\lambda_2$ 是一个L2正则化参数。
二、学习率
$$\displaystyle \eta_t=\frac{1}{\sqrt{t}}$$
由于在求解时,这样,对每一个坐标我们都使用了同样的参数,这样一些没有使用的坐标的参数也会下降,显然这不太合理。
一个近似最优的选择是:
三、存储空间
1.特征选择
在CTR中,跟多特征仅仅出现了一次(In fact, in some of our models, half the unique features occur only once in the entire training set of billions of examples),这样特征几乎没有什么用,但是存储起来非常浪费空间。L1正则化虽然解决了一些问题,但是这样降低了一些精度,因此另一个选择是
今天收拾资料,发现了以前刚接触粗糙集时写的一个综述,好久没写博客,发上来充数好了
一、粗糙集模型1
粗糙集是Pawlak于上世纪八十年代提出的一种不确定数学模型。该模型以有限集合上的等价关系为基础,定义了上下近似两个基本操作。该模型与它的其他一般化或变种形式有着较为广泛的应用。
Pawlak粗糙集模型是以一个有限集合与集合上的一个等价关系为基础的。所谓的二元等价关系是一种满足自反性,对称性和传递性的关系的二元关系。因为这些性质,一个二元等价关系将一个集合分割成一到多个互不相较子集,形成了集合的一个分割,记为U/R,其中的元素与他们的并被称为精确集。
在这一基础上,Pawlak提出了近似的概念,所谓近似,是通过一个已有集合U的一个分割中的集合的并集对一个U的任意子集X进行逼近,作为X的近似。包括上近似于下近似两种。如,设R是U上一个等价关系,则,X的上下近似分别为:
通过2中近似,我们可以把U分为三个部分,分别称为正域POS(X),边界域BND(X),和负域NEG(X),这三个域都是U/R上一些集合的并,也就是可以用R精确表示的精确集:分别表示一定属于X,可能属于X,和一定不属于X三种定义。
进一步的,对于任意两个等价关系R,D定义:
可以证明的是,在Pawlak粗糙集模型中。
1.2变精度粗糙集模型(VPRT)2
在原有粗糙集模型的基础上,又可以引入变精度粗糙集的概念,变精度粗糙集通过引入一个精度参数,定义
,重新定义正域为
,边界域为
,负域为
。
这一篇讲的是区间估计…..因为这不是一个关于统计学的系列,所以对文中出现的公式不会给予任何证明…..就是这样。
就从一个最简单的正态分布的方差已知时,求均值的置信区间开始吧。
书上的公式告诉我们这个区间是 $$\overline{x}\pm(\sigma/\sqrt{n})z_{(1-\sigma/2)}$$ ,其中Zp表示的是正态分布N(0,1)下侧的p分位数。
我们用R来实现求得这一结果的过程。下面设x里存储了给出的样本,sigma表示已知的方差,n表示样本的个数, alpha则是(1-置信水平)
mean<-mean(x) ans<-c(mean-sigma*qnorm(1-alpha / 2)/sqrt(n) , mean+sigma*qnorm(1-alpha / 2)/sqrt(n))
这样,ans就存储了要求的置信区间。
来解释一下吧,先用mean(x)求出样本的平均值,然后用qnorm(1-alpha / 2)求出Z1-a/2,(还记得么?前缀q是分位数函数,)剩下的就是套公式的加减法了。
这里的qnorm(1-alpha / 2)其实省略了很多参数,完整一些的写法是
qnorm(1-alpha/2,mean=0,sd=1,lower.tail=TRUE)
第一个参数就不用解释了,第二,三个参数mean=0,sd=1,表示这是一个标准正态分布(不同于前面,这里增加了mean=和sd=,这种做法的好处是可以改变参数的顺序,但是结果是一样的),最后一个参数lower.tail这个参数的意思就比较有意思了,官方解释如下:
if TRUE (default), probabilities are $P[X <= x]$, otherwise, $P[X > x]$.
明白了么?等于真的话,得出的就是X<=x的分位数,为假的话就是从X>x的方法寻找这个值。一般我们用默认的真就可以了。
简单来说,R语言是一种主要用于统计分析、绘图的语言和操作环境。的源代码可自由下载使用,亦有已编译的执行档版本可以下载,可在多种平台下运行,包括UNIX(也包括FreeBSD和Linux)、Windows和MacOS。R主要是以命令行操作,同时有人开发了几种图形用户界面。
为什么我会使用R语言呢?毕竟我们还有SPSS,SAS,S等其他工具。就我个人而言(其实对很多人也是这样)有两个原因—-R的开源与其极高的自由度。
R是开源的,是属于GNU系统的一个自由、免费、源代码开放的软件因此在使用它时我们不用担心使用的资格问题。(当然对人一般人来说其他软件也可以使用盗版…起码国内是这样)另外作为一种语言,R拥有极高的自由度—-对于,很多新的统计学模型,也许SPSS等软件根本无法处理—你只能使用系统提供的有限选项。但是在R语言中,你可以自己去实现它。这也是学术界对R如此关注的原因。
敲了这么多废话,进入正题。
这一篇的内容是数据描述,就冲R中内嵌的一些简单分布开始吧。
R语言中提供了四类有关统计分布的函数(密度函数,累计分布函数,分位函数,随机数函数)。分别在代表该分布的R函数前加上相应前缀获得(d,p,q,r)。如正态分布的函数是norm,命令dnorm(0)就可以获得正态分布的密度函数在0处的值(0.3989)(默认为标准正态分布)。同理pnorm(0)是0.5就是正态分布的累计密度函数在0处的值。而qnorm(0.5)则得到的是0,即标准正态分布在0.5处的分位数是0(在来个比较常用的:qnorm(0.975)就是那个估计中经常用到的1.96了)。最后一个rnorm(n)则是按正态分布随机产生n个数据。上面正态分布的参数平均值和方差都是默认的0和1,你可以通过在函数里显示指定这些参数对其进行更改。如dnorm(0,1,2)则得出的是均值为1,标准差为2的正态分布在0处的概率值。要注意的是()内的顺序不能颠倒。
** **一元线形回归模型:有变量x,y。假设有关系y=c+bx+e,其中c+bx 是y随x变化的部分,e是随机误差。
可以很容易的用函数lm()求出回归参数b,c并作相应的假设检验,如:
x<-c(0.10, 0.11, 0.12, 0.13, 0.14, 0.15,0.16, 0.17, 0.18, 0.20, 0.21, 0.23) y<-c(42.0, 43.5, 45.0, 45.5, 45.0, 47.5,49.0, 53.0, 50.0, 55.0, 55.0, 60.0) lm.sol<-lm(y ~ 1+x) summary(lm.sol)
仅列出部分返回结果:
Residuals:
Min 1Q Median 3Q Max
-2.0431 -0.7056 0.1694 0.6633 2.2653
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.493 1.580 18.04 5.88e-09 ***
x 130.835 9.683 13.51 9.50e-08 ***
在我们的输入中,关键是lm.sol<-lm(y ~ 1+x)的调用,这里可以看到,lm使用了参数y~1+x,即表示我们使用的是模型y=c+bx+e (1表示常数项)
然后我们使用summary查看了lm返回的结果。在Residuals:中,我们可以看到的是一些关于残差的信息:最小最大值,4分位数等。Coefficients:中则是最为关键的对c和b的相关估计。其中Estimate是与b,c值的估计,Std. Error 则是回归参数b和c的标准差:sd(b), sd(c)。剩下的两个参数则是对回归参数的假设检验: t value是对b,c进行假设检验的t值,以及P-值(用来与显著性水平比较决定是否接受该阿假设检验)Pr(>|t|)。最后我们还可以看到3个* 号,这表明x和y有非常显著的线性关系(*可以有0—3个,越多则线性关系越显著)。
做毕设的时候写的东西,贴上来吧…………
由于在OPENGL只能通过程序语言绘制模型,远不能达到可见既可得的目的。因此,比起3DMAX、MAYA等可视化3D建模工具,OPENGL模型的建立就相当的困难,为了简化这一问题的处理,可以使用简单小巧的MS3D来完成可见即可得的绘制过程。
MS3D的文件有着非常简单良好的文件结构,可从该文件中完美读取在可视工具中绘制的3D图形模型包含的点、线、面等各项基本结构的参数与位置,并在OPENGL根据读取结果即可进行绘制重现该模型。
MS3D全名为MilkShape3D,是一款简单小巧的3D可视化图形建模工具,可以简单的使用各种点、线面等基本图形元素组合建立模型,并进行贴图,分组。进一步的,该工具还支持简单的骨骼动画制作,是一款非常好用的3D图形构建工具。
[
][1]
在建立了MS3D中完成模型建立后可保存为.ms3d的文件格式,通过对该文件格式进行分析,就可以了解文件结构,以在程序中通过读取该文件重现所见模型。
该文件依次包括6段信息,除第一段文件头外,其它每段的开始位置都记录了该段中元素的数目,可用于计算该段的具体大小。
-
文件头:大小固定为14字节。前10个字节为固定的标志 MS3D000000<-其中后6个字节就是字符0(即值为48)后4个字节为该模型格式的版本号,这4个字节为一个有符号整数,目前该版本号的值为3或4,两种版本的格式细节不同。
不同于之前的分类和聚类算法,优化的目的是尝试找到一个使成本函数输出最小化的值。这里主要包括两个算法:模拟退火算法和遗传算法。
成本函数:
接受一个经推测的题解,并返回一个数值结果,该值越大代表成本越高(题解表现越差),该值越小就表示题解越好。
模拟退火算法:
优化算法的目标可以看为寻找x使函数f(x)最小。
但是严格的最小值往往是很难达到的,我们不得不把眼光投入到寻找一个尽可能好的次优解去。
最简单的方法被称为随机法,即成千上万次的对x进行猜测,然后把这些x中使f(x)最小的一个作为答案。虽然这样很简单,但是效果很差。于是出现了爬山法。
爬山法从一个随机解出发,然后不断向该解附近的使f(x)的值更小的x移动,直到当前x附近的解都比x差为止。为了使效果更好,我们可以从多个随机解出发重复着一个过程,将最好的一个作为答案。很容易就能认识到,这样找到的解是一个极值点,是一个局部最小值。
爬山法虽然好,但是在其寻找最优解的过程中,前进的方向是固定的(使f(x)更小的方向),但是有时向其他方法前进也是必要的,因为f(x)可能先增大在变小成为最优的。
于是就有了模拟退火法。
该算法这源于固体的退火过程,即先将温度加到很高(大量原子被激发),再缓慢降温(即退火),则能使达到能量最低点。如果急速降温(即为淬火)则不能达到最低点。



