5
10
15
20
25
30
35
40
中国科技论文在线
http://www.paper.edu.cn
基于 SVD 协同过滤的同风格图片推荐算法
李晗曦 1,张明会 1,向博 1,李泽斌 2**
(1. 大连东软信息学院 软件工程系, 大连,116023;
2. 大连东软信息学院 计算机科学与技术系,大连,116023)
摘要:(在进行界面设计时最重要的一点就是保持界面的风格统一。为了降低 UI 设计师对
产品 UI 风格统一性的维护成本,提出一种基于 SVD 协同过滤的同风格图片推荐算法。该算
法根据项目过程中图片的使用与否,以 1 和 0 来构造评分矩阵,并对于每一个新的设计过程
通过计算未使用图片与已使用图片之间的相似度预测图片风格是否一致,并使用奇异值分解
来优化计算过程。实验结果表明,将该算法运用于同风格图片推荐是可行的,并且优化过后
的算法能达到较高的推荐质量。
关键词:协同过滤;图片推荐;SVD。
中图分类号:TP391
Recommendation Algorithm of Pictures Having the Same
Style Based on SVD
LI Hanxi11, zhangminghui1, XIANG Bo1, LI Zebin2
(1. Department of Software Engineering, Dalian Neusoft University of Information,
Dalian ,116023;
Dalian , 116023)
2. Department of Computer Science and Technology, Dalian Neusoft University of Information,
Abstract: Style consistence is the most important thing in UI-design process. In order to reduce the cost
of maintaining style consistence of UI for designers, this paper proposes a recommendation algorithm of
pictures having the same style based on SVD collaborative filtering. This algorithm computes rating
matrix by 0 or 1 according to whether the images are used or not, and it calculates the similarity of
pictures which have been used and which have not during each new design process to predict whether
they are in the same style, and optimize the calculation by SVD. It is shown in the experimental results
that this algorithm is effective and it can recommend pictures of high-quality after being optimized by
SVD.
Key words: collaborative filtering; recommendation of pictures; SVD
0 引言
随着计算机软件行业地不断发展,人机交互的方式也在不断地进步,从起初的拨动开关
与拔插电线到后来的命令行交互,再发展到现在的图形化界面交互,这样的发展趋势给人的
感觉是不再由人来适应软件而是尽可能地由软件来适应人。现如今,在确保软件功能的前提
下,优美的 UI 能更加获得使用者的青睐,甚至有一些用户比起软件性能的优劣更注重人机
交互的体验,所以如何将软件设计得更为美观成了软件开发中的一大考虑要素。
为了将更好的 UI 呈现给用户,在设计界面的时候着重需要考虑的一点就是保持 UI 的
风格统一。本文尝试利用推荐算法通过分析当前 UI 设计中已使用的素材来进行同风格素材
的推荐,以方便 UI 设计师能更方便地设计出风格统一的 UI。
作者简介:李晗曦(1996-),男,无,主要研究方向:算法分析与设计、机器学习
通信联系人:张明会(1980-)女,副教授,主要研究方向:组合优化、装箱问题、算法分析与设计. E-mail:
zhangminghui@neusoft.edu.cn
- 1 -
45
50
55
中国科技论文在线
http://www.paper.edu.cn
推荐算法通常会根据用户的行为推测出用户可能喜欢的东西,从而更方便用户对事物的
选择。目前广泛使用的推荐算法主要分为 6 种:基于内容[1]、基于协同过滤[2]、基于关联规
则[3]、基于效用[4]、基于知识[5]以及基于组合[6]。其中协同过滤技术是目前推荐系统中最成
功和应用最广泛的技术[7]。
1 协同过滤算法
1.1 向量相似度
在利用协同过滤算法时,会涉及到向量之间的相似度比较。传统的相似度度量方法主要
包含如下 3 种方法[8],以两个 维向量 , 为例,其中 , 分别表示向量 , 的第 个分
量:
u v
i
n
u v
ui vi
(1)余弦相似度
其思想是通过计算两个向量夹角的余弦来衡量其相似性,夹角越小相似度越高:
cos(u,v) =
u ⋅v
u ∗ v
(2)Pearson 相关系数
其是一种用来反映两个变量线性相关程度的统计量,系数越大相似度越高:
ρuv =
(ui − u )(vi − v )
n∑
i=1
(ui − u )2
n∑
i=1
n∑
j=1
(v j − v)2
(3)欧氏距离度量
其思想是将向量表示为空间中点,然后计算两点之间的欧氏距离,其距离越近则相似度
60
越高:
dist(u,v) =
n∑
i=1
(ui − vi )2
由于不同分量之间数值规模可能存在较大差距,相似度计算时其结果受大规模分量影响
较大,但实际上每个分量应该是同等重要的。因此在进行相似性度量之前通常会将向量进行
归一化处理。对于向量 的每一个分量 ,用以下公式可以将取值范围限定在 0 到 1 之间:
u
ui
65
ui =
ui − min(ui)
max(ui) − min(ui)
min(ui ) max(ui )
与
其中
分别表示向量 中最小和最大的分量。
u
1.2 协同过滤算法过程
协同过滤算法接受一个评价矩阵
Rm×n
与一个整数 (
u
u ∈[1,m]
)作为输入,其中 表
u
示当前所考量的用户,将用户 可能喜欢的事物作为推荐集作为输出。
u
- 2 -
中国科技论文在线
70
数据组织:将用户与事物分别作为行和列组成一个评价矩阵
http://www.paper.edu.cn
Rm×n
,其中 表示用户的
m
i
n
rij
Rm×n
i
j
数量, 表示事物的数量,定义 为矩阵
中第 行第 列的元素,其含义为用户 对于
j
事物 的评价,评价的数值范围可以根据系统的实际情况而定,在此将
rij = 0
表示为用户 未
i
对事物 进行过评价。
j
75
图 1 用户评分矩阵
Fig. 1 User rating matrix
算法过程:计算推荐集的关键在于对用户未评价的事物进行评分的估计,将估计值最大
k
的前 个事物作为推荐集,其中关于 的选取根据实际情况而定。对评分的估计有两种计算
方法,一种是基于事物[2] (item-based),一种是基于用户[9] (user-based)。
k
80
(1)基于事物
Rm×n
u
遍历
中第 行的每一个元素,定义待推荐集
}
S = j ru j = 0, j ∈[1,n]
{
,评价集
{
}
K = j ru j ≠ 0, j ∈[1,n]
k
S
Rm×n
K
其与集合 中每个元素 在矩阵
rus
cor ∈[0,1]
)。于是对于所有的 (
(
。对于集合 中的每个元素 在矩阵
s
Rm×n
所对应的列向量,计算
cor(s,k)
中对应列向量的相似度,记为
s ∈S
k∈K∑
)可以做出如下估计:
(
k∈K∑
ruk ⋅cor(s,k)
cor(s,k)
)
85
ˆrus =
即将已评价事物的评价值根据相似度做加权平均的结果作为未评价事物的评价估计。
(2)基于用户
计算矩阵
cor ∈[0,1]
(
Rm×n
u
第 行与其他行 (
t
t ∈[1,u)∪ (u,m]
)的相似度,记为
cor(s,k)
),将相似度最高的前 个用户作为“最近邻居”集 (nearest-neighbor),关于 的
k
k
N
90
选取依据实际情况而定。于是对于所有
ruj = 0
的元素可以做出如下估计:
- 3 -
中国科技论文在线
http://www.paper.edu.cn
ˆruj = ru +
t∈N∑
(
(rtj − rt )⋅cor(u,t)
t∈N∑
cor(u,t)
)
ri =
n∑
j=1
rij
其中
,表示矩阵
Rm×n
i
第 行中所有元素之和,即用户对于所有事物的平均评价。
具体选择哪种计算方法根据实际需求而定,可以根据事物与用户的数量来选择计算量更
小的方法。
95
2 运用协同过滤算法进行同风格图片推荐
2.1 数据组织
100
105
110
115
为了利用协同过滤算法进行同风格图片推荐,首先考虑如何将数据组织成矩阵的形式。
在当前应用下图片自然而然的就是矩阵中的事物,可以将其组织成矩阵的列。但关键在于能
否把用户作为矩阵的行,从 UI 设计师的职业行为来考虑,通常一个软件整体上采用什么样
的风格需要依据具体的需求而定。如购物平台通常给人一种”热闹”的感觉,总体色调大多偏
向暖色调。而一些问答交流类的社区平台通常给人一种”清爽”的感觉,总体色调大多偏向于
冷色调。所以 UI 设计师在进行界面设计时对于不同风格的图片并不呈现整体上的偏好,由
此可见将用户作为矩阵中的一行实际上是欠考虑的。
在此本文将每一次设计过程作为矩阵的行,若第 个设计过程中用到过第 张图片作为
i
rij = 1
rij = 0
j
Rm×n
。其原
素材,即可在矩阵中将其表示为
因在于虽然用户本身对于不同风格的图片不呈现整体上的偏好,但是每一次完整的 UI 设计
过程却是大多是能保证风格统一的。
,最后形成的矩阵定义为
,否则
2.2 同风格图片推荐
因为使用 2.1 中的数据组织方式,矩阵的行将随着设计次数的增多而增多。虽然初始情
况下没有任何使用记录自然列数比行数要多,但行数的增加速率很快,从计算量的角度来考
虑,本文在此将使用基于事物的协同过滤算法。
对于一个新的设计过程按 2.1 组织成一个行向量 ,定义 表示 的第 个分量,即第
u
ui
i
}
K = i ui = 1,i ∈[1,n]
{
列。定义
}
S = i ui = 0,i ∈[1,n]
{
,
K
。对于 中的每个元素 在矩
cor(s,k)
s
k
阵中对应的列向量,计算其与集合 中每个元素 在矩阵中对应列向量的相似度
cor ∈[0,1]
us
)。对 (
s ∈S
(
u
S
)做出如下估计:
k∈K∑
ˆus =
cor(s,k)
K
- 4 -
中国科技论文在线
http://www.paper.edu.cn
因为有
uk = 1
k ∈K
(
),所以在此没有采用原公式中的做法对其加权平均,而是直接
针对相似度取平均,否则得到的 恒为 1。设定一个阈值 (
δ δ∈[0,1]
),其选取根据实际
ˆus
情况而定,则推荐集为
{
s ˆus >δ,s ∈S
}
。
120
2.3 利用 SVD 进行应用优化
2.3.1 理论基础——降维理论:
(1)降维技术在相似度计算的应用
125
130
135
140
降维概念顾名思义就是降低数据的维度。对于样本特征进行降维可以有效的减少特征冗
余和缓解特征噪声,这样可以使得在计算向量相似度时大大缩减计算成本同时减少噪声带来
的误差。同时根据文献[10]中所阐述的样本复杂度分析可知,特征缩减后所需的训练样本也
将更少,减轻了数据采集的成本和训练周期。
(2)PCA 降维理论
PCA(Principal Components Analysis)即主成分分析,其基本思想是寻找 (
k
k < n
)个合
k
适的正交向量生成一个 维向量子空间,将 维特征向量映射到该子空间中形成新的 维特
征特征向量。在进行 PCA 降维之前,首先需要对样本进行归一化,即将每一维度的特征都
k
n
化为均值为 0 方差为 1,且取值范围在
[−1,1]
:
μ=
1
m
m
∑
i=1
x(i)
x(i ) := x(i) − μ
σj
2 =
x(i )
j :=
m
1
∑
m
i=1
x(i)
σj
j
(x(i)
j )2
x(i)
i
x(i)
j
i
其中 为样本数量, 表示第 个样本, 表示第 个样本特征向量的第 个分量。
进行归一化的目的在于统一特征的数量级,如按米为单位的身高通常取值范围为 1~2,按斤
为单位的体重通常取值范围为 70~200,由此可见用于描述同类型样本的不同特征在数量级
上有较大的差距。而这样的数量级差距会影响主成分分析的结果。
j
PCA 的核心就是在特征空间中找到合适的正交向量,关于如何来选取合适的向量可以
从最大方差理论以及最小平方误差理论两个方面来进行说明,在此将以最大方差理论进行详
细阐述:
最大方差理论认为将样本映射在低维空间后,应该使得每一维的方差尽可能的大。对于
u
u = 1
x
u
,可以将利用 PCA 寻
某一方向的单位向量 (
找一个主成分的过程可形式化地定义为按如下方法选择一个向量 ,作为特征的一个投影方
向。
),有向量 投影在 上的长度为
xTu
u
- 5 -
中国科技论文在线
http://www.paper.edu.cn
arg max
u; u =1
1
m
m
=
1
m
m
∑
i=1
(
x(i)Tu
)2
uT x(i)
(
∑
i=1
1
∑⎛
⎝⎜
m
m
i=1
)
) x(i)Tu
(
⎞
⎠⎟ u
x(i )x(i)T
= uT
145
定义:
150
155
λ=
∑ =
1
m
1
m
m
∑
i=1
m
∑
i=1
(
x(i )Tu
)2
x(i)x(i )T
可以将上式写为:
于是可将问题转化为求解:
λ= uT ∑u
arg max
u;uTu=1
uT ∑u
运用拉格朗日乘数法可以得出 是 的一个主特征向量,而 为 对应的特征值。至此完
∑
成了一个主成分的选取,要想将特征投影在 个维度上,就需要 个主成分。只需要对 进
k
λ u
k
u ∑
行特征分解,得到前 大特征值对应的特征向量
k
{u1,u2,
uk}
k
即 个主成分。最终可将样
x(i)
本 映射为如下更低维的形式:
∑
∑
根据 的定义可以知道 是对称的,由于对称矩阵的特征向量正交,所以这 个主成分是
正交的。
k
2.3.2 使用 SVD 加速 PCA 过程
将样本 的转置作为行组织成矩阵 :
x(i)
X
- 6 -
中国科技论文在线
http://www.paper.edu.cn
XT X
根据 的定义,可以发现 为矩阵 的协方差矩阵
∑
∑
∑
X
,于是可以考虑对 使用
X
X
160
SVD(Singular Value Decomposition)即奇异值分解来得到 的主特征向量。直接对 进行
SVD 的速度比先求
度。
XT X
再对其进行特征分解要快很多,这样的做法能大大加速 PCA 的速
165
3 实验结果及分析
3.1 数据集
为了验证算法,本文通过 Matlab 生成 260 张不同色阶的纯色图片来进行实验。虽然算
法的执行不依赖图片的提前分类,完全取决于用户行为来进行预测,但为了保证模拟的真实
性需要将这 260 张图片提前分类。在此将这 260 张纯色图片按色阶划分 6 种风格,每种风格
170
52 张:
。
图 2 部分数据集
Fig. 2 A part of dataset
每一个设计过程的生成策略为:通过一个
[20,35]
的随机数来表示该设计过程用到的图
175
180
stylei
[1,10]
片数量,通过另一个
图片将从中选取。同时为了检验算法的抗噪能力,20%的图片将随机从其他风格图集中选取,
的随机数 来表示该设计过程将以
作为主体风格,80%的
每张图片来自于哪个图集根据随机数
j ∈[1,10]
而定。
3.2 评价指标
评价推荐质量的度量标准主要包括统计精度度量方法和决策支持精度度量方法两类[6]。
其中统计精度度量方法中的平均绝对偏差 MAE(Mean Absolute Error)比较容易理解,可以
直观地对推荐质量进行度量,是应用的最广泛的一种推荐质量度量方法[11]。在此我们采用
MAE 作为度量标准,通过计算预测的设计过程中图片的使用情况与实际的使用情况之间的
偏差来度量预测的准确性,MAE 越小,推荐质量越好[12-14]。
- 7 -
中国科技论文在线
定 义 设 计 过 程 中 已 用 图 片 的 预 测 结 果 为
http://www.paper.edu.cn
0 ≤ pi ≤1
(
N
) , 其 中
185
N ∈[15,35]
(
在此可将平均绝对偏差 MAE 定义为:
)表示的是该设计过程中所用图片的数量。由于已用图片的实际结果都为 1,
MAE =
N∑
i=1
)
(
1− pi
N
3.3 实验结果
本文首先利用 4.1 中的方法生成了 100 个设计过程作为训练样本,并采用余弦相似度度
190
量。利用 Python3 构建一个 GUI 程序,以便直观地了解推荐效果:
图 3 推荐效果示意
Fig. 2 Recommendation effect
此 GUI 程序的界面分为 4 个子视图,其中右边用于与程序交互,左边为总图集,中间
的下半部分为当前已选择的图片,中间的上半部分则为基于当前已选择的图片得到的推荐图
集,其中每个图片上的数字表示算法预测的风格相似度,数值越大与目标风格越一致,并且
可以根据右视图的阈值来筛选推荐结果。根据上图可直观地看出使用这一算法在当前实验下
已达到了同风格图片推荐的基本效果。
195
200
k
为了更科学地度量该算法对同风格图片的推荐性能,并更直观地了解 SVD 对算法的优
化效果,利用 Python3 按照 4.1 中的方法生成 个设计过程作为训练样本, 以 10 作为步
长从 10 取到 1000。每次训练结束后生成 10 个设计过程作为测试数据,计算训练数据规模
为 情况下的平均 MAE,统计如下:
k
k
- 8 -