赵子花,任若彤,刘爽,陈娜,王顺晔
(廊坊师范学院,河北廊坊065000)
随着互联网+技术应用于各行各业,线上服装行业发展迅猛。在服装领域,穿衣搭配助手APP更能满足用户的需求,将成为用户最实用的搭配应用软件。目前服装穿搭APP开发市场竞争并不激烈,国内服装穿搭APP还不够丰富,产生的影响较小,穿搭APP的市场前景非常可观。最重要的是,对于青年人,他们对时尚穿搭很渴望,但是很多用户缺乏穿搭技巧,实现时尚穿搭很困难,导致用户对穿搭APP的关注度和使用度日益提高。
服装推荐主要包含侧重个人服务的线下服装推荐、侧重单向资讯推广的在线服装推荐和侧重个性偏好的在线服装推荐[1]。目前市面上已有的明显衣橱、美丽衣橱、穿衣助手APP等都能为用户介绍当下最流行最潮流的穿衣搭配方式,使用户获得更多穿衣搭配技巧,提高用户审美能力。
智慧穿衣APP使用了二级服装搭配,分别是基于用户的协同过滤推荐并融合气象数据的服装搭配推荐。用户将自己的已有服装信息录入,建立数据库1。第一级是基于用户协同过滤的推荐,并建立推荐服装信息库2。但是考虑到推荐的服装可能并不适应当前天气,进而融合气象数据建立实时服装搭配推荐。根据天气状况对一级推荐的服装数据库2进行筛选,建立服装数据库3。考虑到推荐的衣服用户不一定都有,计算已有的衣服数据库1和推荐的衣服数据库3的交集,便是符合今日天气的服装智慧穿搭,相对补集是用户缺少的服装,此时导入购物链接,如图1所示。
服装数据库的构成分为两部分,分别是服装款式和服装面料。服装款式又可分为上衣、下衣和裙装,分别用S、X和Q表示,如图2所示。在上衣S中,00为短衫的编号,01为T恤的编号,其他服装编号以此类推。服装面料表设计如图3所示,00表示纯棉,01表示涤纶,以此类推。由于这种构成方式,数据库中服装的表示也分为两部分。表示需要5位,其中服装款式占3位,服装面料占2位。例如,Q0100表示纯棉材质的连衣裙。用户需要在智慧穿衣中输入用户所拥有的全部衣服及其材质,构建数据库1。
图1 智慧穿衣APP系统设计思路
图2 服装款式数据表设计
图3 服装面料数据表设计
推荐系统是一种个性化的信息服务,能够很好地充当用户和信息资源之间的桥梁。推荐系统通过建立模型,对用户的需求进行描述,再通过某种推荐策略将特定的信息资源主动推荐给目标用户。由于推荐系统具有个性化和智能化等特点,已经成为各类应用平台的核心子系统。基于协同过滤的推荐系统是应用最为广泛、研究最为深入的一类推荐系统,这类推荐系统算法的关键是寻找用户或者项目的邻居,邻居寻找的准确性决定了最后推荐结果的质量,而邻居的寻找依赖于用户或者项目相似度的计算,因此设计一个适合的相似度计算方法是推荐算法成功的关键问题[2]。
基于用户的协同过滤是通过用户的历史行为数据(用户浏览、收藏、分享、评论)判断用户更倾向于某类穿搭,从而进行推荐。根据不同用户对各类服装推荐的喜爱程度计算用户之间的关系,在具有相同喜好的用户之间推荐搭配类型。
如图4所示,用户1喜欢搭配类型ABCD,用户2喜欢搭配类型B,用户3喜欢搭配类型BCD,那么由此判断,用户1和用户3属于拥有同种喜好的人,根据他们的喜好,可以将A类搭配推荐给用户3。
基于用户的协同过滤算法是从用户的角度出发,参考和目标用户兴趣相似的用户对该项目的评分计算出该用户对未评分项目的评分[2],算法如下:
式中,S(u,K)是和用户u兴趣最相似的K个用户的集合,其中K需要根据数据集情况自己定义;N(i)是对项目i评过分的用户集合;rui是用户v对项目i的评分;-rv是用户v的所有项目评分均值;Wuv代表用户和之间的相似度[4]。
图4 基于用户相似度的协同过滤推荐
用户相似度是计算用户间相似程度的计算量,根据不同的应用场景,可以采用不同的计算方法,常用的有距离计算方法(欧式距离、曼哈顿距离、闵可夫斯基距离、切比雪夫距离)、余弦相似度、皮尔逊相关系数等,本文采用皮尔逊相关系数计算公式作为用户相似度计算的方法。皮尔逊相关系数进行计算公式(2)[4],各参数如式(1)所示。
用户的喜好通过对不同服装搭配打分体现,可以采用5分制,也可采用10分制,不同分制之间可以做归一化处理后统一,如表1所示。随机抽取7人对6类搭配进行评价后为用户7推荐穿搭。
表1 不同用户对不同服装搭配的打分情况
计算用户的相似度,可根据数据库中用户的数量确定最相似用户数量,如TOP10等,此例选择相似度最高的两个用户,所以与用户7相似度最高的用户为用户1和用户5。通过协同过滤推荐算法得到用户7最可能喜欢穿搭为搭配3、搭配6和搭配1,并将这3个穿搭推荐给用户7。运用协同过滤可以推荐出适合任一用户的搭配类型,并将其推荐的搭配根据服装款式和服装材质构加入到数据库2。
#计算两个用户的皮尔逊相关系数
搭的评分
#给用户推荐穿搭
运行结果见图5。
图5 基于皮尔逊相关系数相似度的推荐结果
通过python语言中requests和BeautifulSoup4库抓取“中国天气网”网页的数据集。向网站发送抓取请求,获得用户所输入的所在地天气信息。
抓取结果如图6所示。
图6 抓取近一周的气象数据
气象数据直接影响穿衣搭配,服装通过着装厚度体现与天气的关系。影响着装厚度的因素主要有温度和风力等。根据文献[5]给出如下公式:
其中,Y为室外环境所需着装厚度(mm);v为环境风力预报值(级);x为环境温度预报值(摄氏度);0.61表示环境温度变化时每摄氏度所需增加的服装厚度(mm°C-1);25.8为穿着温度为裸体温度的数值。根据上面提到的爬虫天气可以获取风力预报值和环境温度预报值。通过公式(3)(4)就可以得出当日的着装厚度。
着装厚度与服装面料和服装款式也有着密切关系。根据文献[6],列出了服装厚度和服装面料的关系,如表2所示,而在春秋季、夏季和冬季的着装款式各有千秋。根据Fourt和Fanger研究以及上海琪名实业有限公司的资料,列出了服装厚度和服装款式的对照表,如表3所示[5]。
计算得到着装厚度之后,根据表2、表3的对照图,使用判断语句就可计算符合条件的款式和面料。在基于用户的协同过滤后建立数据库2,根据款式和面料筛选出符合条件的穿搭后建立数据库3。对用户已有的衣服数据库1和推荐穿搭的数据库3求得交集(数据库1∩数据库3)便是适合当日天气的穿搭。数据库1关于数据库3的相对补集(数据库3-数据库1)便是推荐搭配里用户所缺少的衣服。关联到购物平台,作为用户初始数据,再根据推荐算法等挑选用户急需购买的衣服。
表2 服装厚度与服装面料种类对照表
表3 服装厚度与服装款式对照表
手机个性化推荐系统目前在很多领域都有比较成熟的应用,但服装搭配类产品的智能推荐仍处于初级阶段,存在很大的研究空间。本文所设计的智慧穿搭APP首先搭建各类数据库,基于用户的协同过滤推荐算法挖掘相似用户的穿搭爱好进行推荐;其次通过网络爬虫爬取气象数据进行二次筛选推荐,结合当日天气状况使推荐效果得到进一步改善;最后进行购物链接引导,完成一条龙的优质私人专享服务,充分满足了智慧穿搭的个性化需求。