樊其鋒 黑繼偉 翟浩良
廣東美的制冷設(shè)備有限公司 廣東佛山 528000
近幾年,家電行業(yè)的發(fā)展風(fēng)起云涌,物聯(lián)網(wǎng)已經(jīng)成為該行業(yè)的重要組成部分。隨著互聯(lián)網(wǎng)的普及和硬件成本的壓縮,以人為本,以服務(wù)為核心的互聯(lián)網(wǎng)+,將逐漸成為該行業(yè)未來(lái)的發(fā)展趨勢(shì),同時(shí),也給家電行業(yè)帶來(lái)了挑戰(zhàn)。因此,研究用戶(hù)空調(diào)使用行為,為用戶(hù)提供空調(diào)使用操作的推薦服務(wù),具有非常重要的意義。但是,用戶(hù)特征具有多樣性,例如:年齡、階層、體質(zhì)、地理位置、環(huán)境等,對(duì)空調(diào)操作推薦具有較大的影響,且影響因子不同。本文研究依托大數(shù)據(jù)提取用戶(hù)行為特征,基于行為相似度,為家電操作進(jìn)行智能推薦,一方面,可以使空調(diào)使用更加智能,另一方面,可以提升用戶(hù)使用黏度,將會(huì)促進(jìn)家電行業(yè)智能度的再一次飛躍。
空調(diào)行為推薦,是指為用戶(hù)推薦空調(diào)操作的行為。對(duì)于用戶(hù)來(lái)說(shuō),可以讓空調(diào)的使用具有趣味性,更加便捷和智能;對(duì)于空調(diào)廠家來(lái)說(shuō),可以提升用戶(hù)體驗(yàn),增強(qiáng)用戶(hù)黏性,提高銷(xiāo)量。目前,空調(diào)行為推薦,主要分為傳統(tǒng)的用戶(hù)研究和大數(shù)據(jù)智能推薦。傳統(tǒng)的用戶(hù)研究,多以抽樣設(shè)計(jì)的方式進(jìn)行。其中,入戶(hù)訪談、問(wèn)卷法、焦點(diǎn)小組是使用較多的方式。大數(shù)據(jù)智能推薦,是基于海量數(shù)據(jù)和機(jī)器學(xué)習(xí)模型的推薦方法,在空調(diào)使用中為用戶(hù)提供智能化的行為推薦服務(wù)。
智能推薦中比較關(guān)鍵的算法是相似度計(jì)算,有用戶(hù)與用戶(hù)之間的相似度計(jì)算,也有內(nèi)容與內(nèi)容之間的相似度計(jì)算?;谟嘞遥–osine-based)的相似度計(jì)算:通過(guò)計(jì)算兩個(gè)向量之間的夾角余弦值來(lái)計(jì)算操作之間的相似性。歐式距離:歐氏距離是最常用的距離計(jì)算公式,衡量的是多維空間中各個(gè)點(diǎn)之間的絕對(duì)距離,當(dāng)數(shù)據(jù)很稠密并且連續(xù)時(shí),這是一種很好的計(jì)算方式。其他相似度計(jì)算方法還包括曼哈頓距離、明可夫斯基距離、Jaccard系數(shù)等。
智能推薦的模型和算法主要分為基于內(nèi)容的推薦和基于用戶(hù)的推薦,推薦方法主要包括KNN、協(xié)同過(guò)濾、關(guān)聯(lián)規(guī)則等。
K最近鄰(k-Nearest Neighbor,KNN)分類(lèi)算法,是一個(gè)理論上比較成熟的方法。該方法的思路是:如果一個(gè)樣本在特征空間中的K個(gè)最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個(gè)類(lèi)別,則該樣本也屬于這個(gè)類(lèi)別。即是給定一個(gè)訓(xùn)練數(shù)據(jù)集,對(duì)新的輸入實(shí)例,在訓(xùn)練數(shù)據(jù)集中找到與該實(shí)例最鄰近的K個(gè)實(shí)例(也就是上面所說(shuō)的K個(gè)鄰居),這K個(gè)實(shí)例的多數(shù)屬于某個(gè)類(lèi),就把該輸入實(shí)例分類(lèi)到這個(gè)類(lèi)中。該算法在分類(lèi)時(shí)有個(gè)主要的不足是,當(dāng)樣本不平衡時(shí),有可能導(dǎo)致當(dāng)輸入一個(gè)新樣本時(shí),該樣本的K個(gè)鄰居中大容量類(lèi)的樣本占多數(shù)。
協(xié)同過(guò)濾(Collaborative Filtering,簡(jiǎn)稱(chēng)CF)推薦算法,CF的基本思想是根據(jù)用戶(hù)之前的喜好來(lái)給用戶(hù)推薦操作。CF算法分為基于用戶(hù)和基于內(nèi)容兩類(lèi)?;谟脩?hù)的協(xié)同過(guò)濾算法基本思想是如果用戶(hù)A喜歡操作a,用戶(hù)B喜歡操作a、b、c,用戶(hù)C喜歡操作a和c,那么認(rèn)為用戶(hù)A與用戶(hù)B和C相似,因?yàn)樗麄兌枷矚ga,而喜歡a的用戶(hù)同時(shí)也喜歡c,所以把c推薦給用戶(hù)A。該算法用最近鄰居(nearest-neighbor)算法找出一個(gè)用戶(hù)的鄰居集合,該集合的用戶(hù)和該用戶(hù)有相似的喜好,算法根據(jù)鄰居的偏好對(duì)該用戶(hù)進(jìn)行預(yù)測(cè)?;趦?nèi)容的協(xié)同過(guò)濾算法與基于用戶(hù)的協(xié)同過(guò)濾算法不同點(diǎn)為以?xún)?nèi)容為中心,再通過(guò)計(jì)算用戶(hù)對(duì)不同歷史操作的喜歡程度,從而推薦相似的操作給用戶(hù),基于用戶(hù)的協(xié)同過(guò)濾算法的推薦質(zhì)量取決于用戶(hù)歷史數(shù)據(jù)集,同時(shí)存在稀疏性問(wèn)題與可擴(kuò)展性問(wèn)題。協(xié)同過(guò)濾算法示意圖如圖1。
本文提出一種基于行為相似度的空調(diào)操作推薦方法,把用戶(hù)特征劃分為多個(gè)特征組,并通過(guò)多元線(xiàn)性回歸模型來(lái)確定影響因子,然后通過(guò)Fo-KNN來(lái)進(jìn)行推薦。更好的解決了用戶(hù)不同特征對(duì)空調(diào)操作推薦影響不同的問(wèn)題。
本章詳細(xì)介紹空調(diào)操作實(shí)時(shí)推薦的算法與過(guò)程??傮w架構(gòu)如圖2。
首先,對(duì)用戶(hù)信息提取用戶(hù)特征,把用戶(hù)特征分為多個(gè)特征組,結(jié)合用戶(hù)的歷史行為相似度,使用多元線(xiàn)性回歸模型,計(jì)算出各個(gè)特征組的權(quán)重系數(shù);然后,根據(jù)特征和權(quán)重來(lái)計(jì)算用戶(hù)之間的相似度;接著,針對(duì)特定用戶(hù),通過(guò)Fo-KNN算法查找該用戶(hù)最近的K個(gè)鄰居,根據(jù)該K個(gè)鄰居的行為,推薦該用戶(hù)的空調(diào)操作。
接下來(lái),本文將從數(shù)據(jù)預(yù)處理、特征提取、KNN實(shí)時(shí)推薦這幾個(gè)部分進(jìn)行闡述。
3.1.1 數(shù)據(jù)采集
從用戶(hù)APP和物聯(lián)網(wǎng)空調(diào)上,收集用戶(hù)相關(guān)信息。本文所采集的數(shù)據(jù)源包含了以下兩個(gè)部分內(nèi)容:
(1)用戶(hù)信息。用戶(hù)信息包括用戶(hù)年齡、性別、職業(yè)、收入、體質(zhì)、房屋面積、朝向、樓層、用戶(hù)地理位置等,此類(lèi)數(shù)據(jù)記錄了用戶(hù)信息,用于計(jì)算用戶(hù)之間的相似度。
(2)用戶(hù)操作數(shù)據(jù)。用戶(hù)操作數(shù)據(jù)包括用戶(hù)開(kāi)關(guān)機(jī)、設(shè)置溫度、設(shè)置風(fēng)速、設(shè)置風(fēng)向、設(shè)置模式等數(shù)據(jù),此類(lèi)數(shù)據(jù)記錄了用戶(hù)對(duì)于空調(diào)的完整操作,以及操作的時(shí)間,可用于統(tǒng)計(jì)用戶(hù)行為。考慮到操作行為的時(shí)序性、時(shí)效性以及消息緩沖等問(wèn)題,本文選取Kafka和Flume來(lái)實(shí)現(xiàn)空調(diào)數(shù)據(jù)的接入:通過(guò)Flume接收多渠道的數(shù)據(jù);通過(guò)Kafka接收Flume處理后的數(shù)據(jù),按照多個(gè)topic,進(jìn)行隊(duì)列劃分和緩沖,等待下游消費(fèi)。
圖1 協(xié)同過(guò)濾算法示意圖
圖2 行為推薦流程圖
圖3 不同K值的平均準(zhǔn)確率
圖4 與KNN準(zhǔn)確率對(duì)比圖
3.1.2 數(shù)據(jù)清洗
云端所接收的數(shù)據(jù),其中包含了部分噪音數(shù)據(jù),例如上報(bào)頻率異常等,此類(lèi)數(shù)據(jù)形成原因是由于早期物聯(lián)網(wǎng)空調(diào)出產(chǎn)品類(lèi)繁多,電控軟件版本過(guò)低,又不支持遠(yuǎn)程升級(jí),需要對(duì)此類(lèi)數(shù)據(jù)進(jìn)行清洗。
3.1.3 數(shù)據(jù)存儲(chǔ)
在本文中,數(shù)據(jù)是多樣的。從內(nèi)容上看,主要包括用戶(hù)操作數(shù)據(jù)、用戶(hù)信息等;從結(jié)構(gòu)上看,包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。針對(duì)不同的場(chǎng)景,本文選取HDFS、HBase、Mysql和Redis來(lái)構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)。
HDFS:基于Hadoop的分布式文件存儲(chǔ)系統(tǒng),適用于存儲(chǔ)超大規(guī)模的源數(shù)據(jù)。本文用于存儲(chǔ)空調(diào)上報(bào)的非結(jié)構(gòu)化原始數(shù)據(jù)。
HBase:基于Hadoop的Nosql數(shù)據(jù)庫(kù)系統(tǒng),適用于超大規(guī)模數(shù)據(jù)的快速查找和更新。本文用于存儲(chǔ)經(jīng)過(guò)大數(shù)據(jù)計(jì)算后的結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。
Mysql:關(guān)系型數(shù)據(jù)庫(kù),適用于存儲(chǔ)小規(guī)模的結(jié)構(gòu)化數(shù)據(jù)。本文用于存儲(chǔ)用戶(hù)空調(diào)機(jī)型、空調(diào)地理位置等數(shù)據(jù)。
Redis:緩存系統(tǒng),適用于存儲(chǔ)高頻訪問(wèn)的key-value數(shù)據(jù)。本文用于存儲(chǔ)空調(diào)實(shí)時(shí)狀態(tài)數(shù)據(jù)。
3.1.4 數(shù)據(jù)計(jì)算
大數(shù)據(jù)平臺(tái),需要支持大規(guī)模數(shù)據(jù)的批量和實(shí)時(shí)計(jì)算需求,以實(shí)現(xiàn)數(shù)據(jù)抽取、數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析和實(shí)時(shí)監(jiān)控等。本文使用MapReduce、Hive和Spark streaming來(lái)實(shí)現(xiàn)大規(guī)模數(shù)據(jù)的分布式計(jì)算。
MapReduce:是第一代計(jì)算引擎,“分治法”思想。本文用于大規(guī)模數(shù)據(jù)的批量離線(xiàn)計(jì)算。
Hive:通過(guò)把類(lèi)SQL語(yǔ)句分解成MapReduce任務(wù),以實(shí)現(xiàn)結(jié)構(gòu)化數(shù)據(jù)的SQL操作。本文用于結(jié)構(gòu)化數(shù)據(jù)的離線(xiàn)統(tǒng)計(jì)分析。
Spark streaming:建立在Spark之上的實(shí)時(shí)計(jì)算框架,通過(guò)豐富的API和基于內(nèi)存的高速執(zhí)行引擎,可以滿(mǎn)足用戶(hù)流式、交互式的應(yīng)用場(chǎng)景。本文用于上報(bào)數(shù)據(jù)的實(shí)時(shí)計(jì)算。
3.2.1 用戶(hù)表示
本文以年齡、性別、體重、職業(yè)、收入、體質(zhì)、房屋面積、朝向、樓層、用戶(hù)地理位置等信息來(lái)表示用戶(hù),記為V=<年齡、性別、體重、職業(yè)、收入、體質(zhì)、房屋面積、朝向、樓層、地理經(jīng)度、地理緯度>。如表1所示。
例:用戶(hù)1=<22, 男, 75, 銷(xiāo)售, 5萬(wàn), 怕熱, 96, 北, 11,113.3, 22.5>。
3.2.2 用戶(hù)特征組
考慮到用戶(hù)特征之間的特性與關(guān)聯(lián)性,我們將用戶(hù)特征分為用戶(hù)特性、房屋特性、地理特性這三個(gè)組。其中,用戶(hù)特性Vu=<年齡、性別、體重、職業(yè)、收入、體質(zhì)>,房屋特性Vh=<房屋面積、朝向、樓層>,地理特性Vg=<地理經(jīng)度、地理緯度>。
因此,用戶(hù)V可表示為
本文通過(guò)用戶(hù)特征組來(lái)衡量不同用戶(hù)之間的行為相似度,不同的特征組對(duì)用戶(hù)行為具有不同的影響因子。
3.2.3 影響因子
以用戶(hù)特征組作為自變量,用戶(hù)在同一時(shí)刻的行為相似度作為因變量,通過(guò)多元線(xiàn)性回歸模型,訓(xùn)練出特征組的影響因子。
(1)用戶(hù)特性Vu相似度
本文采用余弦距離來(lái)計(jì)算用戶(hù)特性之間的相似度。具體公式如下;
(2)房屋特性Vh相似度
本文也采用余弦距離來(lái)計(jì)算房屋特性之間的相似度。具體公式同上。
(3)地理特性Vg相似度
本文采用歐式距離來(lái)計(jì)算地理特性之間的相似度。具體公式如下:
其中,distance(i,j)表示地理特性i與地理特性j的距離,lati和lngi分別表示地理特性i的經(jīng)度和緯度。
(4)用戶(hù)行為Vo相似度
選取部分用戶(hù)的歷史操作行為作為訓(xùn)練集,采用歐式距離來(lái)計(jì)算用戶(hù)行為之間的相似度。具體公式同上。
(5)多元線(xiàn)性回歸
以用戶(hù)之間的用戶(hù)特性Vu相似度、房屋特性Vh相似度、地理特性Vg相似度作為自變量,以用戶(hù)之間的操作相似度作為因變量,根據(jù)多元線(xiàn)性回歸模型來(lái)訓(xùn)練出每個(gè)特征組的影響因子。
自變量:xi=
因變量:yi=Voi
訓(xùn)練集:{(x1,y1),(x2,y2),…,(xN,yN)}包含N條訓(xùn)練數(shù)據(jù),其中,xi是三維向量,
其中,
基于用戶(hù)特征組和影響因子,本文通過(guò)優(yōu)化的KNN:Fo-KNN模型,對(duì)空調(diào)行為進(jìn)行實(shí)時(shí)推薦。
首先,根據(jù)用戶(hù)信息和歷史操作行為,計(jì)算每?jī)蓚€(gè)用戶(hù)之間的行為相似度,并生成相似度矩陣;然后,針對(duì)某個(gè)特定用戶(hù),從當(dāng)前使用空調(diào)的所有用戶(hù)中選取與該用戶(hù)距離最近的K個(gè)鄰居;接著,以用戶(hù)距離為權(quán)重,計(jì)算這K個(gè)鄰居的操作行為加權(quán)平均值,并以此作為對(duì)該用戶(hù)的實(shí)時(shí)行為推薦。
(1)相似度計(jì)算
通過(guò)3.2小節(jié),每個(gè)用戶(hù)都可以表示為
生成的用戶(hù)行為相似度矩陣如表2。
(2)選取K個(gè)鄰居
首先,通過(guò)云端實(shí)時(shí)查詢(xún)當(dāng)前正在使用空調(diào)的所有用戶(hù);針對(duì)某個(gè)特定用戶(hù),從這些用戶(hù)中選取與該用戶(hù)相似度最高的K個(gè)鄰居。
表1 用戶(hù)表示
表2 用戶(hù)歷史行為相似度矩陣
表3 數(shù)據(jù)集
表4 準(zhǔn)確率
(3)實(shí)時(shí)行為推薦
以用戶(hù)距離為權(quán)重,計(jì)算這K個(gè)鄰居的當(dāng)前操作行為加權(quán)平均值,并以此作為對(duì)該用戶(hù)的實(shí)時(shí)行為推薦。推薦的操作行為包括設(shè)置溫度和設(shè)置風(fēng)速等。下面以設(shè)置溫度為例進(jìn)行說(shuō)明。
K個(gè)鄰居的設(shè)置溫度加權(quán)平均:
其中,sim(Vu,Vi)表示用戶(hù)u和用戶(hù)i之間的相似度,Ti表示用戶(hù)i當(dāng)前的設(shè)置溫度,TCu表示當(dāng)前用戶(hù)u的推薦設(shè)置溫度。
TCu即為推薦的實(shí)時(shí)設(shè)置溫度,設(shè)置風(fēng)速等其他操作行為類(lèi)似。
本節(jié)通過(guò)實(shí)驗(yàn)來(lái)評(píng)估該推薦算法的效果。首先,介紹實(shí)驗(yàn)的數(shù)據(jù)集和評(píng)估方法;然后,通過(guò)參數(shù)調(diào)優(yōu)和城市抽樣,對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析并給出實(shí)驗(yàn)結(jié)論。
該推薦方法,主要涉及用戶(hù)信息和空調(diào)使用行為這兩類(lèi)數(shù)據(jù)。本實(shí)驗(yàn)隨機(jī)抽取2017年的部分用戶(hù)及其操作行為作為數(shù)據(jù)集,其中包括訓(xùn)練集和測(cè)試集,具體如表3。
本文實(shí)時(shí)推薦的空調(diào)操作包括設(shè)置溫度、設(shè)置風(fēng)速等。下面以設(shè)置溫度為例,介紹本文實(shí)驗(yàn)。
實(shí)驗(yàn)中,對(duì)于測(cè)試集中的用戶(hù)及行為,通過(guò)推薦的設(shè)置溫度和用戶(hù)實(shí)際調(diào)節(jié)的設(shè)置溫度來(lái)計(jì)算準(zhǔn)確率P,以此評(píng)估推薦算法的效果。準(zhǔn)確率P計(jì)算公式為:
其中,TCu表示算法推薦的設(shè)置溫度,Ts表示用戶(hù)實(shí)際的設(shè)置溫度。14表示設(shè)置溫度取值范圍為[17,30],以1攝氏度為精度,共14個(gè)值。
該實(shí)驗(yàn)通過(guò)參數(shù)調(diào)優(yōu)和城市抽樣,對(duì)推薦算法的結(jié)果進(jìn)行實(shí)驗(yàn)論證,具體的準(zhǔn)確率如表4所示。
4.2.1 參數(shù)調(diào)優(yōu)
Fo-KNN算法中,K的取值對(duì)算法準(zhǔn)確率影響較大,本文針對(duì)K的不同取值進(jìn)行調(diào)優(yōu)。從圖3中可以看出,當(dāng)K=5時(shí)平均準(zhǔn)確率最高。因此,F(xiàn)o-KNN算法中K值參數(shù)選取為5。
4.2.2 與KNN算法效果對(duì)比
本實(shí)驗(yàn)抽樣全國(guó)不同地區(qū)的11個(gè)城市,分別運(yùn)行Fo-KNN算法與KNN算法,對(duì)推薦結(jié)果進(jìn)行評(píng)估。KNN算法實(shí)現(xiàn)方法為:對(duì)于用戶(hù)所有特征,不進(jìn)行特征組劃分,同時(shí)不計(jì)算各個(gè)特征的影響因子,運(yùn)行KNN算法計(jì)算準(zhǔn)確率。對(duì)比圖如圖4所示。
從該實(shí)驗(yàn)可以看出,F(xiàn)o-KNN算法整體的平均準(zhǔn)確率達(dá)到了91.23%,KNN算法整體的平均準(zhǔn)確率為86.26%,F(xiàn)o-KNN準(zhǔn)確率提升了接近5%,取得了較好的效果。同時(shí),在抽樣的11個(gè)城市中,北京和深圳準(zhǔn)確率最高,福州和西安最低,其他較平均。整體來(lái)看,經(jīng)濟(jì)較發(fā)達(dá)的城市準(zhǔn)確率偏高,可能是因?yàn)榻?jīng)濟(jì)越好的地區(qū),空調(diào)使用需求越集中。
本文研究基于行為相似度的空調(diào)操作實(shí)時(shí)推薦,提出了優(yōu)化的KNN算法:Fo-KNN算法,把用戶(hù)特征劃分為不同的特征組,深入研究各個(gè)特征組對(duì)空調(diào)操作的影響,解決了空調(diào)操作推薦中用戶(hù)研究不深入的問(wèn)題,為用戶(hù)提供更加精準(zhǔn)的空調(diào)操作推薦服務(wù)。首先,提取用戶(hù)特征,并把用戶(hù)特征分為多個(gè)特征組;然后,結(jié)合用戶(hù)行為相似度,計(jì)算各個(gè)特征組的影響因子;接著,基于Fo-KNN算法,經(jīng)過(guò)計(jì)算相似度、選取K個(gè)鄰居、實(shí)時(shí)推薦,為用戶(hù)實(shí)時(shí)推薦空調(diào)使用行為;最后,通過(guò)參數(shù)調(diào)優(yōu)及準(zhǔn)確率對(duì)比,與KNN算法進(jìn)行效果對(duì)比,算法準(zhǔn)確率提升了接近5%,并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。