李博,胡世平,賈年
(西華大學(xué)計(jì)算機(jī)與軟件工程學(xué)院,成都 610039)
快節(jié)奏、高強(qiáng)度的生活方式使人們出現(xiàn)神經(jīng)衰弱、精神緊張等亞健康狀態(tài),長時(shí)間久坐不動(dòng)又讓人們有了頸腰椎疾病、肩周炎、肥胖等慢性疾病。如何通過科學(xué)有效的運(yùn)動(dòng)處方改善這些癥狀,是當(dāng)下人們最關(guān)心的問題。但是大多數(shù)人對(duì)慢性疾病缺少正確的認(rèn)識(shí),同時(shí)對(duì)運(yùn)動(dòng)處方認(rèn)識(shí)不夠,造成嘗試了很多處方卻達(dá)不到預(yù)期效果的情況。因此,我們要通過科學(xué)、健康、合理的運(yùn)動(dòng)處方即通過科學(xué)的體育鍛煉達(dá)到健身的目的,從而使自己的機(jī)能水平進(jìn)一步提高。
運(yùn)動(dòng)處方可以理解為:由康復(fù)醫(yī)師、體育教師、私人健身教練等,根據(jù)患者或者體育健身者年齡、性別、康復(fù)醫(yī)學(xué)檢查、運(yùn)動(dòng)試驗(yàn)、身體素質(zhì)測試等結(jié)果,按其年齡、性別、健康狀況、身體素質(zhì)以及心血管、運(yùn)動(dòng)器官的功能狀況,結(jié)合主客觀條件,用處方的形式制定對(duì)患者或體育健身者適合的運(yùn)動(dòng)內(nèi)容、運(yùn)動(dòng)強(qiáng)度、運(yùn)動(dòng)時(shí)間及頻率,并指出運(yùn)動(dòng)中的注意事項(xiàng),以達(dá)到科學(xué)地、有計(jì)劃地進(jìn)行康復(fù)治療或預(yù)防健身的目的。
針對(duì)上述問題,本文提出一種基于K-means聚類的運(yùn)動(dòng)處方推薦方法,將個(gè)性化推薦技術(shù)應(yīng)用于運(yùn)動(dòng)處方推薦,為用戶提供個(gè)性化的運(yùn)動(dòng)處方。
K-means的中心思想是要確定常數(shù)k,常數(shù)k表示最終的類別數(shù)。首先隨機(jī)選定初始點(diǎn)為簇心,并通過計(jì)算每一個(gè)樣本與簇心之間的距離(一般為歐氏距離),將樣本點(diǎn)歸到最相似的類中,接著,重新計(jì)算每個(gè)類的簇心,重復(fù)這樣的過程,直到簇心不再改變,這樣就確定了每個(gè)樣本的類別以及每個(gè)類的簇心。
假設(shè)待聚類的數(shù)據(jù)集為:X={xi|xi∈Rp,i=1,2,3,…,m},包含m個(gè)數(shù)據(jù)樣本,K個(gè)聚類中心分別為:C1,C2,C3,…,Ck。用Wj(j=1,2,3,…,k)來表示聚類的類別[2],具體算法步驟如下:
定義1:兩個(gè)數(shù)據(jù)對(duì)象間的距離:
(1)
定義2:每個(gè)簇中對(duì)象的平均值:
(2)
定義3:準(zhǔn)則函數(shù):
(3)
(1)從m個(gè)數(shù)據(jù)對(duì)象中任意選擇k個(gè)對(duì)象作為初始中心,每個(gè)對(duì)象代表一個(gè)聚類中心;
(2)利用公式(1)計(jì)算X中各個(gè)樣本數(shù)據(jù)到聚類中心的距離,根據(jù)計(jì)算得出的最小距離,將樣本歸入到最相似的簇中;
(3)更新簇的平均值,即通過公式(2)重新計(jì)算聚類中心,作為新的簇心;
(4)重復(fù)步驟(2)-(3),直到準(zhǔn)則函數(shù)E取值不再變化為止。
假設(shè)有m個(gè)用戶的集合U={U1,U2,…,Um}和n個(gè)項(xiàng)目的集合I={I1,I2,…,I3},rij表示用戶i對(duì)項(xiàng)目j的評(píng)分,則用戶評(píng)分矩陣如下所示:
余弦相似度:
(4)
其中,計(jì)算的結(jié)果值越接近1,說明用戶的相似度越高。
皮爾遜相關(guān)系數(shù):
(5)
運(yùn)動(dòng)處方內(nèi)容主要包括運(yùn)動(dòng)目的、運(yùn)動(dòng)項(xiàng)目、運(yùn)動(dòng)強(qiáng)度、運(yùn)動(dòng)時(shí)間、運(yùn)動(dòng)頻率、注意事項(xiàng)等。運(yùn)動(dòng)目的可以是減肥、健身、預(yù)防老年病、增強(qiáng)肌肉力量等,由于每個(gè)人的需求不一樣,其目的因人而異。為了進(jìn)行健身的安全、有效,運(yùn)動(dòng)項(xiàng)目的制定要經(jīng)醫(yī)學(xué)檢查許可,運(yùn)動(dòng)方式、運(yùn)動(dòng)強(qiáng)度、運(yùn)動(dòng)量應(yīng)符合本人的體力等。運(yùn)動(dòng)強(qiáng)度是衡量運(yùn)動(dòng)量的重要指標(biāo)之一,是運(yùn)動(dòng)處方定量化的核心問題,通常情況下通過心率來確定和控制運(yùn)動(dòng)強(qiáng)度。對(duì)于運(yùn)動(dòng)時(shí)間,不能一概而定,可以根據(jù)運(yùn)動(dòng)強(qiáng)度、運(yùn)動(dòng)頻率、年齡和身體條件具體制定??茖W(xué)研究表明,每周鍛煉3-4次是最適宜的頻度,不僅效果可以充分蓄積,也不產(chǎn)生疲勞,如果頻率增加到每周4次或者5次,效果也相應(yīng)提高。
本文運(yùn)動(dòng)處方推薦的算法主要分為以下幾個(gè)步驟:
輸入:用戶—項(xiàng)目評(píng)分矩陣R,簇類數(shù)目K。
輸出:N個(gè)推薦項(xiàng)目。
(1)通過以Mi(i=1,2,3,…,k)為初始簇心,將矩陣R通過K-means算法分成k類;
(2)通過公式(1)計(jì)算用戶和k個(gè)簇心的相似度,把用戶加入到與其最相似的類中;
(3)計(jì)算用戶與同類中的用戶的相似度,得到最近鄰居集合Nj(j=1,2,…,m);
(4)得到用戶對(duì)推薦項(xiàng)目的預(yù)測分。
(6)
算法的執(zhí)行流程圖如圖1所示。
圖1 算法流程圖
本文數(shù)據(jù)獲取來之四川某高校的大學(xué)生信息,主要包括學(xué)生個(gè)人信息和處方信息。個(gè)人信息主要有姓名、身高、BMI、肺活量等數(shù)據(jù)。處方信息包括學(xué)生對(duì)運(yùn)動(dòng)處方的滿意度信息,將滿意度設(shè)定為5分制,5分為最滿意,1分為最不滿意,0分代表未對(duì)運(yùn)動(dòng)處方做出評(píng)價(jià)。本算法用到的數(shù)據(jù)有姓名、項(xiàng)目和評(píng)分3部分組成。
一般相似度計(jì)算的方法常見有兩種,一種是皮爾遜相關(guān)系數(shù),另一種為余弦相似度。本文采用余弦相似度計(jì)算用戶間的相似度,即通過公式(4)計(jì)算用戶的相似性。
(1)通過對(duì)搜集到數(shù)據(jù)進(jìn)行處理,使用MATLAB將原始評(píng)分?jǐn)?shù)據(jù)轉(zhuǎn)換成一個(gè)用戶-項(xiàng)目評(píng)分表,如表1所示。
表1 用戶-項(xiàng)目評(píng)分矩陣
(2)通過計(jì)算用戶與同類其他用戶的相似性,得到用戶的最近鄰居集合。尋找最近鄰居利用公式(4)進(jìn)行計(jì)算。
根據(jù)用戶的最近鄰居集合對(duì)項(xiàng)目的評(píng)分,通過公式(6)計(jì)算用戶對(duì)項(xiàng)目的預(yù)測評(píng)分,對(duì)評(píng)分的項(xiàng)目進(jìn)行從高到低排序后,把前N個(gè)項(xiàng)目推薦給用戶。
本文采用平均絕對(duì)誤差MAE作為評(píng)測標(biāo)準(zhǔn),驗(yàn)證推薦結(jié)果的好壞。MAE是通過計(jì)算用戶預(yù)測評(píng)分與實(shí)際情況評(píng)分之間的誤差來衡量準(zhǔn)確性的,MAE的值越小,代表推薦結(jié)果越準(zhǔn)確。其公式如下所示:
最近鄰的個(gè)數(shù)也是影響推薦效果的重要因素之一,本實(shí)驗(yàn)通過比較傳統(tǒng)運(yùn)動(dòng)處方推薦算法和基于聚類的運(yùn)動(dòng)處方推薦方法在不同最近鄰個(gè)數(shù)情況下的MAE值,說明推薦的效果。結(jié)果如表2。
表2 MAE值比較
通過分析實(shí)驗(yàn)結(jié)果可以看出,本文推薦方法的MAE值更低,由此可見推薦效果更優(yōu),推薦質(zhì)量更高。
本文提出的基于聚類的運(yùn)動(dòng)處方推薦算法,與傳統(tǒng)的運(yùn)動(dòng)處方推薦相比,準(zhǔn)確度更高,效果更好,更能符合用戶的具體需求。通過本文的推薦方法可以找到適合自己的運(yùn)動(dòng)處方進(jìn)行鍛煉,從而提高身體素質(zhì)。