基于图像和社会化标签的商品推荐方法与流程

文档序号:14923530发布日期:2018-07-13 07:54阅读:135来源:国知局

本发明属于数据挖掘技术领域,特别涉及一种商品推荐方法,可用于电子商务的个性化推荐系统。



背景技术:

近年来,随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在海量信息中的消费者不断流失。为了解决该问题,个性化推荐系统应运而生。个性化推荐系统是建立在海量数据挖掘基础上的一种主动信息服务系统,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。

传统的推荐系统大多利用用户评分数据,并使用协同过滤算法进行计算筛选,然后推荐给用户。但是,评分数据不能直观反映用户的喜好所在,比如电影评分,使用用户评分数据只能得知用户对该电影是否喜爱,却不能得知用户对电影具体的关注点。因此,基于用户评分数据的推荐系统并不能很好的捕捉用户的具体偏好。



技术实现要素:

本发明的目的在于针对上述现有技术的不足,提出一种基于图像和社会化标签的商品推荐方法,以更好的捕捉用户的具体偏好。

本发明的技术方案是这样实现的:

一.技术原理

社会化标签更能直接地反映用户的偏好,这是因为标签对资源,即商品图片提供了一个有意义的描述,比如针对衣服的图片,通过标签可以了解到这件衣服是“田园风”还是“甜美淑女”,因此,标签体现了用户对于该商品的语义理解,暗示了用户的偏好所在。另外,由于标签数据有三类对象:用户、标签、商品图片,它们之间具有复杂的关联结构,所以无法使用传统的协同过滤算法进行商品推荐。因此,本发明设计了一种基于图的多类关联对象降维算法,该算法对用户、标签、商品图片三者之间的关系构建二分图,对商品图片集构建近邻关系图,在保持两种图结构的前提下,将三者映射到同一空间里,该空间因为保持了标签数据的语义关联关系,被称为语义空间。在获得最优的语义空间后,在该语义空间里计算用户与商品图片之间的欧氏距离,将离用户最近的图片所对应的商品推荐给用户,并以图片形式展示本发明推荐的商品,图片相比文字和链接,更易被用户所理解和接受。

二.技术方案

根据上述原理,本发明的技术方案包括如下:

(1)提取商品图片的内容特征,即颜色特征、纹理特征和形状特征;

(2)设计最优语义空间:

2a)利用多核学习算法学习出商品图片所述三种特征之间的权重参数向量,得到最终两张商品图片之间的相似度,将权重参数向量与计算出的商品图片之间的相似度进行融合得到相似度矩阵;

2b)定义标签数据为(ui,dj,tk),u为用户集,d为商品图片集,t为标签集,ui表示u中第i个用户,dj表示d中第j个商品图片,tk表示t中第k个标签,标签数据(ui,dj,tk)表示用户ui使用标签tk来标注图片dj;

2c)对标签数据中用户与标签之间的联系构建加权二分图,对标签数据中标签与商品图片之间的联系构建加权二分图,对标签数据中用户与商品图片之间的联系构建无权二分图,对商品图片集构建近邻关系图;

2d)在保持2c)中二分图和近邻关系图这两种图结构的前提下,将用户、标签和商品图片这三种数据映射到同一空间内,该空间即为最优语义空间;

(3)在步骤(2)已经获得的最优语义空间内,根据用户与商品图片的之间的欧氏距离对商品图片按照从近到远的顺序进行排序,将距离用户最近的前n个商品图片推荐给用户,n的范围是(1,+∞)。

本发明的有益效果如下:

1.本发明由于使用标签数据而不是用户评分数据,可以更直接地反映出用户的偏好,能获得更好的推荐性能。

2.本发明由于提取了三种图片的特征,利用多核学习技术学习出这些特征间的权重关系,并计算出特征间进行加权融合后的图片相似度,相较于简单将三种特征连接成一个长特征的方法,能更精确的计算出图片间的相似度。

3.本发明通过构建二分图和近邻关系图建立了用户、标签、商品图片之间复杂的联系,不仅解决了数据稀疏性问题,而且使得推荐方法更加有效和准确。

4.本发明设计的语义空间能够有效的处理标签数据的三类对象即用户、标签、商品图片之间复杂的关联结构,而传统的协同过滤算法不能处理这种标签数据。

附图说明

图1是本发明的实现总流程图;

图2本发明中设计语义空间子流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。

参照图1,本发明的实现步骤如下:

步骤1,提取商品图片的内容特征,即颜色特征、纹理特征和形状特征;

1.1)提取商品图片的颜色特征:

建立颜色直方图,对于图片q,在颜色向量空间上统计其颜色直方图,颜色直方图是一个一维的离散函数,即:

式中,nk为颜色特征值为k的像素个数,n为图像像素的总个数,l为颜色特征值数,由此得到图像q的颜色直方图h(k);

1.2)提取商品图片的纹理特征:

通过提取尺度不变特征sift描述符来描述图片的纹理特征;

1.2.1)令图片为i(x,y),(x,y)是空间尺度坐标,则该图片尺度空间l(x,y,σ)为:

l(x,y,σ)=g(x,y,σ)*i(x,y),

其中g(x,y,σ)为高斯函数,σ为尺度参数,*表示乘号;

1.2.2)计算相邻尺度图像的高斯差分d(x,y,σ):

d(x,y,σ)=l(x,y,k1σ)-l(x,y,σ)

其中,k1取l(·)是尺度空间;

计算出相邻尺度图像的高斯差分之后,得到一系列高斯差分图;

1.2.3)在高斯差分图的空间中求极值点,分别比较每一幅高斯差分图中的一个像素点和它所有的相邻点:如果某个像素点比其所有的相邻点都大或者都小,则该像素点为极值点,极值点的高斯差分如下所示:

其中,为z的极值,z=(x,y,σ)表示的是像素点的偏移,d(·)为高斯差分函数;

1.2.4)求出极值点后,需要对尺度空间dog函数进行曲线拟合,来筛选极值点,去除低对比度的点,即对每一个候选极值点的进行判断:

如果小于0.03,则判定该候选极值点为对比度低的极值点,予以去除,否则保留;

1.2.5)去除了对比度低的极值点后,还应去除主曲率异常的极值点,因为一个定义不好的高斯差分的极值在横跨边缘的地方会有较大的主曲率,在垂直边缘的方向有较小的主曲率,而理想状态是极值点在任意方向的主曲率都相同,所以需要检测主曲率是否在某阈值r下,为了检测主曲率是否在某域值r下,只需检测如下不等式:

其中,tr(h)表示矩阵h的迹,det(h)表示矩阵h的行列式,矩阵h是hession矩阵,表达式如下:

其中,dxx是某一尺度图像的d(x,y,σ)在dog空间中的x方向求导两次的结果;dyy是某一尺度图像的d(x,y,σ)在dog空间中的y方向求导两次的结果;dxy是某一尺度图像的d(x,y,σ)在dog空间中的x方向求导一次,再在y方向求导一次的结果;当上述不等式成立时,则极值点保留,反之去除,保留的极值点即为要找的特征点;

1.2.6)确定了图像特征点的位置以后,接下来需要为图像特征点赋予一个方向,该步骤通过求每个特征点邻域的梯度来实现,即定义梯度幅值m(x,y)与梯度方向θ(x,y)为:

θ(x,y)=tan-1(l(x,y+1)-l(x,y-1))/(l(x+1,y)-l(x-1,y))

其中l(·)是尺度空间函数;

1.2.7)以图像特征点为中心,划定一个区域,利用所有在此区域内的点的梯度幅值和梯度方向构造一个方向直方图,其中梯度幅值为纵轴,梯度方向为横轴,从方向直方图中选出梯度幅值最大的一项对应的梯度方向作为该特征点的主方向,如果其它梯度方向对应的梯度幅值大于主方向对应的梯度幅值的80%,也将该梯度方向作为图像特征点的辅助方向;

1.2.8)图像特征点检测完毕后,按如下步骤确定特征点的描述子:

第一步,以特征点为圆心将特征点邻域旋转θ0,其中θ为特征点的方向;

第二步,在旋转后的图像中,先以特征点为中心取16×16的邻域窗口,每个小格代表特征点邻域窗口中的一个像素;再将16×16的矩形窗口均匀分为16个子区域,采用高斯模糊的方法,增加与特征点较近邻域的权重值,并降低与特征点较远邻域的权重值;然后计算每个区域中8个方向的梯度直方图,得到特征点描述子的特征向量,该向量为4×4×8=128维向量;

第三步,将特征点描述子的特征向量进行归一化处理,设s是特征点描述子的特征向量,即s=(s1,s2,......s128),对s归一化,得到归一化后的特征点描述子

为了减少大梯度值影响,为设定一个阈值为0.2,若中某一维的值大于0.2,则将该值置为0.2,并重新对进行归一化处理,最终得到了128维的归一化特征点描述子

1.2.9)对归一化后的特征点描述子进行聚类,得到sift特征向量;

为了得到定长的sift特征向量,需要对归一化后的特征点描述子进行聚类,因为在不同的图片中,所包含的描述子个数也是不同的,会导致从不同图片中提取的sift特征向量是变长的,故设定聚类个数为500,对每幅图片所包含的特征点描述子进行k-means聚类,从每张图片中都可得到一个定长的500维的聚类结果,该结果即为最终的sift特征向量,用于描述商品图片的纹理特征;

1.3)提取商品图片的形状特征:

1.3.1)利用gabor滤波器对商品图片按照下式进行采样滤波:

其中,

l1为滤波器的尺度;k2为正的常数;σ1为高斯函数的标准差;为尺度l1下的方向总数,

1.3.2)将商品图片与gabor滤波器进行卷积,得到滤波后的商品图片为:

把滤波后的商品图片分成4×4的网格,在每个网格内取平均值,最后把各方向、各尺度网格内得到的平均值放在一个向量里,该向量即为最终的通用搜索树特征向量,用于描述商品图片的形状特征;

至此,就完成了商品图片的颜色特征,纹理特征和形状特征的提取。

步骤2,设计语义空间。

参照图2,本步骤的具体实现如下

2.1)构造相似度矩阵:

本发明使用了多核学习技术构造商品图片间的相似度矩阵,即从商品图片中提取出颜色特征,纹理特征和形状特征这三种特征,并在计算商品图片间的相似度的时候,需要先将这三种特征与商品图片间的相似度进行加权融合,得到加权融合后的商品图片间的相似度,然后根据加权融合后的商品图片间的相似度构造相似度矩阵,其实现步骤如下:

2.1.1)计算商品图片间的相似度:

选择高斯核作为核函数,该核函数k(xi,xj)表示如下:

其中,xi表示第i个商品图片的特征向量,xj表示第j商品图片的特征向量,i≥1,j≥1,且i≠j,σ2表示标准差,||xi-xj||2表示向量(xi-xj)的2范数,核函数k(xi,xj)表示第i个商品图片和第j个商品图片之间的相似度,如果k(xi,xj)越接近1,则这两张商品图片越相似;

2.1.2)对相似度k(xi,xj)进行归一化处理,使得选取的核函数k(xi,xj)取值均在[0,1]之间,归一化后的相似度k(i,j)如下所示:

2.1.3)将归一化后相似度k(i,j)与权重参数向量η融合,得到加权融合后两张商品图片之间的相似度k(i,j,η):

其中,i表示第i个商品图片,j表示第j个商品图片,h1表示商品图片的特征向量的个数,参数η=[η1,η2,......,ηh]t是需要学习出的权重参数向量,参数ηv表示权重参数向量η=[η1,η2,......,ηh]t中第v个参数,kv(i,j)表示在第v个特征下第i个商品图片和第j个商品图片之间的相似度;

2.1.4)定义理想状态下的核函数kideal(i,j)为:

其中yi表示第i个商品图片的类别,yj表示第j个商品图片的类别;

2.1.5)定义平方损失函数:

对于第i个商品图片和第j个商品图片,都需要使得这两张商品图片之间的相似度k(i,j,η)尽可能地逼近kideal(i,j),因此可定义平方损失函数l(i,j,η)为:

l(i,j,η)=(k(i,j,η)-kideal(i,j))2

l(i,j,η)的值越小,说明相似度k(i,j,η)越逼近kideal(i,j);

2.1.6)定义优化计算公式,求得权重参数向量η,使损失函数l(i,j,η)最小,具体的计算公式如下:

其中,q表示商品图片的总数,tij表示第i个商品图片和第j个商品图片的损失函数的权重,λ是折衷参数,表示正则化项;

上式最终得到权重参数向量η,加入正则化项主要是为了防止得到的权重参数向量η过拟合;该式是一个典型的二次规划问题,可以直接用常见的凸优化软件包进行求解,而且为了使得到的权重参数向量η更为准确,采用的数据集是谷歌的大规模图片集imagenet;

2.1.7)根据得到的权重参数向量η,定义相似度矩阵w为:

2.2)设置参数:

定义标签数据为(ui,dj,tk),u为用户集,d为商品图片集,t为标签集,ui表示u中第i个用户,dj表示d中第j个商品图片,tk表示t中第k个标签,标签数据(ui,dj,tk)表示用户ui使用标签tk来标注图片dj;

2.3)对标签数据中用户与标签之间的联系构建加权二分图:

2.3.1)定义如下第一矩阵:

其中,ui表示u中第i个用户,dk表示d中第k个商品图片,tj表示t中第j个标签,b表示所有标签数据的集合;

2.3.2)对上述第一矩阵进行归一化,得到归一化后的第一矩阵为:

则rut为结构矩阵化的用户与标签之间的加权二分图;

2.4)对标签数据中标签与商品图片之间的联系构建加权二分图:

2.4.1)定义如下第二矩阵

其中,uk表示u中第k个用户,dj表示d中第j个商品图片,ti表示t中第i个标签,b表示所有标签数据的集合;

2.4.2)对上述第二矩阵进行归一化,得到归一化后的第二矩阵为:

rtd为结构矩阵化的标签与商品图片之间的加权二分图

2.5)对标签数据中用户与商品图片之间的联系构建无权二分图

定义如下第三矩阵rud

其中,ui表示u中第i个用户,dj表示d中第j个商品图片,tk表示t中第k个标签,b表示所有标签数据的集合;

rud为结构矩阵化的用户与商品图片之间的无权二分图;

2.6)对商品图片集构建近邻关系图:

定义如下第四矩阵:

其中di表示d中第i个商品图片,dj表示d中第j个商品图片,sim(di,dj)表示第i个商品图片和第j个商品图片之间的相似度;

wij为结构矩阵化的商品图片集的近邻关系图;

2.7)构造语义空间

在本步骤中,为了学习出最优的语义空间,融合了基于图的子空间学习思想,即对于两个强相关的对象,它们在该语义空间里应该是十分接近的;

2.7.1)考虑最简单的情况,该语义空间为一维,即在k=1时,定义如下向量和损失函数:

定义一个|u|×1的向量:f={f1,f2,...f|u|},

定义一个|t|×1的向量:g={g1,g2,...g|t|},

定义一个|d|×1的向量:p={p1,p2,...p|d|},

定义损失函数为:

其中,fi∈f,代表第i个用户在一维的空间下的坐标;gi∈g,代表第i个标签在一维的空间下的坐标;gj∈g,代表第j个标签在一维的空间下的坐标;pi∈p,代表第i个商品图片在一维下的坐标;pj∈p,代表第j个商品图片在一维下的坐标;参数α,β,γ,η为四个数值不同的比例因子,且满足0<α,β,γ,η<1,α+β+γ+η=1;

上述损失函数的等式右边第一项表示如果用户ui经常使用标签tj,则它们彼此应该在空间里被映射的很近,也就是fi与gj的平方差要尽可能的小;第二项表示如果很多用户使用标签ti去标注图片dj,ti与dj也应该很接近,即gi与pj相差不大;第三项表示每一个用户ui都应该与用户ui曾标注过的图片dj很接近,即fi与pj相差不大;最后一项为商品图片内在结构的平滑项,即对于两个很相似的商品图片di和dj,它们在空间里的距离很近;另外,以上四项对损失函数的影响大小由参数α,β,γ,η来决定;

2.7.2)为了求解上述损失函数q(f,g,p),需要定义七个对角矩阵,分别是dut,dtu,dtd,ddt,dud,ddu和d,其中:

dut是对角矩阵,大小为|u|×|u|,dut的第(i,i)个元素是矩阵rut的第i行元素之和;

dud是对角矩阵,大小为|u|×|u|,dud的第(i,i)个元素是矩阵rud的第i行元素之和;

dtu是对角矩阵,大小为|t|×|t|,dtu的第(i,i)个元素是矩阵rut的第i列元素之和;

dtd是对角矩阵,大小为|t|×|t|,dtd的第(i,i)个元素是矩阵rtd的第i行元素之和;

ddu是对角矩阵,大小为|d|×|d|,ddu的第(i,i)个元素是矩阵rud的第i列元素之和;

ddt是对角矩阵,大小为|d|×|d|,ddt的第(i,i)个元素是矩阵rtd的第i列元素之和;

d是对角矩阵,大小为|d|×|d|,d中第(i,i)个元素为矩阵wij的第i行元素之和;

则损失函数q(f,g,p)的第一项可改写为:

损失函数q(f,g,p)的第二项同样可改写为:

损失函数q(f,g,p)的第三项同样可改写为:

q(f,g,p)的第四项可改写为:

其中矩阵l=d-wij为拉普拉斯矩阵;

2.7.3)根据式<1>至式<5>,将损失函数q(f,g,p)用矩阵表示为:

q1(f,g,p)=α(ftdutf+gtdtug-2ftrutg)

+β(gtdtdg+ptddtp-2gtrtdp)

+γ(ftdudf+ptddup-2ftrudp)

+ηptlp

=ft(αdut+γdud)f+gt(αdtu+βdtd)g<6>

+pt(βddt+γddu+l)p

-2αftrutg-2βgtrtdp-2γftrudp

2.7.4)为了消除任意比例因子α,β,γ,η的影响,将q1(f,g,p)归一化后得到归一化后的

式<7>等同于在ftf+gtg+ptp=1的约束下最小化损失函数q1(f,g,p);

2.7.5)定义一个增广向量h=[ftgtpt]t简化式<7>;

由于ftrutg,gtrtdp和ftrudp都是标量,标量的转置等于标量本身,因此归一化后的可被简写为:

其中e是一个单位向量,为半正定矩阵,定义如下:

2.7.6)最大化目标子空间的全局方差;

式<8>表示为了最小化损失函数q(f,g,p),需令hth最大化,最大化hth比较好的办法是最大化目标子空间的全局方差,具体方法如下:

对于一个随机变量x,其方差为:

var(x)=∫(x-μ)2dp(x),μ=∫xdp(x)<9>

其中dp(x)表示观察到x的概率;

在离散情况下,可以通过节点的度估计在图上观察节点的概率,所以,f,g和p的全局方差为:

矩阵是一个对角矩阵,定义如下:

2.7.7)根据式<8>和式<10>,将损失函数改写为

2.7.8)但是在实际应用中,为了更好的捕捉对象间的关系,往往需要获得一个k维(k>1)的语义空间,因此,需要将上述计算过程扩展到k维的情况,其中k>1,定义如下向量,矩阵和损失函数:

定义一个|u|×k的矩阵f=[f1f2......fk],

定义一个|t|×k的矩阵g=[g1g2......gk],

定义一个|d|×k的矩阵p=[p1p2......pk],

定义矩阵h3=[h1h2......hk],其中hi=[fitgitpit]t

对于每一个维度i∈{1,......,k},都需要最小化每一维的损失函数q(fi,gi,pi),并且最大化(fitfi+gitgi+pitpi),因此,定义k维的损失函数如下:

其中,fi∈f代表用户集u中的所有用户在第i维下的坐标,gi∈g代表标签集t中的所有标签在第i维下的坐标,pi∈p代表商品图片集d中的所有商品图片在第i维下的坐标;tr(·)代表矩阵的迹;

2.7.9)同k=1的情况类似,当k>1时也需要最大化目标子空间的全局方差,因此在k>1的情况下,将式<12>改写为:

求解式<13>得到半正定矩阵和对角矩阵后,根据瑞利里兹理论,求解的前k个最小的特征值对应的特征向量,其中λ为特征值,并去除各分量都相等的特征向量,剩下的特征向量组成的矩阵即为最优的语义空间m。

步骤3,计算用户与商品图片之间的欧氏距离。

给定目标用户,通过目标用户与商品图片在最优的语义空间m中对应的行向量计算目标用户与商品图片之间的欧式距离:

用n维向量a1=(x11,x12,...x1k...x1n)表示该用户在最优的语义空间m中对应的行向量,其中x1k表示a1中第k个值,1≤k≤n,

用n维向量a2=(x21,x22,...x2k...x2n)表示商品图片在最优的语义空间m中对应的行向量,其中x2k表示a2中第k个值,

计算用户与商品图片之间的欧式距离d12为:

对所有商品图片根据所求得的欧氏距离按照从近到远的顺序进行排序,欧氏距离越大表示用户与商品图片越不相关,并返回前n张距离用户最近的商品图片所对应的商品推荐给用户,n的范围是(1,+∞),完成对用户的个性化商品推荐工作。

以上所述仅是本发明的一个具体实例,不能因此理解为对本发明专利范围的限制;应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1