李博,胡世平,賈年
(西華大學計算機與軟件工程學院,成都 610039)
快節(jié)奏、高強度的生活方式使人們出現(xiàn)神經(jīng)衰弱、精神緊張等亞健康狀態(tài),長時間久坐不動又讓人們有了頸腰椎疾病、肩周炎、肥胖等慢性疾病。如何通過科學有效的運動處方改善這些癥狀,是當下人們最關(guān)心的問題。但是大多數(shù)人對慢性疾病缺少正確的認識,同時對運動處方認識不夠,造成嘗試了很多處方卻達不到預期效果的情況。因此,我們要通過科學、健康、合理的運動處方即通過科學的體育鍛煉達到健身的目的,從而使自己的機能水平進一步提高。
運動處方可以理解為:由康復醫(yī)師、體育教師、私人健身教練等,根據(jù)患者或者體育健身者年齡、性別、康復醫(yī)學檢查、運動試驗、身體素質(zhì)測試等結(jié)果,按其年齡、性別、健康狀況、身體素質(zhì)以及心血管、運動器官的功能狀況,結(jié)合主客觀條件,用處方的形式制定對患者或體育健身者適合的運動內(nèi)容、運動強度、運動時間及頻率,并指出運動中的注意事項,以達到科學地、有計劃地進行康復治療或預防健身的目的。
針對上述問題,本文提出一種基于K-means聚類的運動處方推薦方法,將個性化推薦技術(shù)應用于運動處方推薦,為用戶提供個性化的運動處方。
K-means的中心思想是要確定常數(shù)k,常數(shù)k表示最終的類別數(shù)。首先隨機選定初始點為簇心,并通過計算每一個樣本與簇心之間的距離(一般為歐氏距離),將樣本點歸到最相似的類中,接著,重新計算每個類的簇心,重復這樣的過程,直到簇心不再改變,這樣就確定了每個樣本的類別以及每個類的簇心。
假設待聚類的數(shù)據(jù)集為:X={xi|xi∈Rp,i=1,2,3,…,m},包含m個數(shù)據(jù)樣本,K個聚類中心分別為:C1,C2,C3,…,Ck。用Wj(j=1,2,3,…,k)來表示聚類的類別[2],具體算法步驟如下:
定義1:兩個數(shù)據(jù)對象間的距離:
(1)
定義2:每個簇中對象的平均值:
(2)
定義3:準則函數(shù):
(3)
(1)從m個數(shù)據(jù)對象中任意選擇k個對象作為初始中心,每個對象代表一個聚類中心;
(2)利用公式(1)計算X中各個樣本數(shù)據(jù)到聚類中心的距離,根據(jù)計算得出的最小距離,將樣本歸入到最相似的簇中;
(3)更新簇的平均值,即通過公式(2)重新計算聚類中心,作為新的簇心;
(4)重復步驟(2)-(3),直到準則函數(shù)E取值不再變化為止。
假設有m個用戶的集合U={U1,U2,…,Um}和n個項目的集合I={I1,I2,…,I3},rij表示用戶i對項目j的評分,則用戶評分矩陣如下所示:
余弦相似度:
(4)
其中,計算的結(jié)果值越接近1,說明用戶的相似度越高。
皮爾遜相關(guān)系數(shù):
(5)

運動處方內(nèi)容主要包括運動目的、運動項目、運動強度、運動時間、運動頻率、注意事項等。運動目的可以是減肥、健身、預防老年病、增強肌肉力量等,由于每個人的需求不一樣,其目的因人而異。為了進行健身的安全、有效,運動項目的制定要經(jīng)醫(yī)學檢查許可,運動方式、運動強度、運動量應符合本人的體力等。運動強度是衡量運動量的重要指標之一,是運動處方定量化的核心問題,通常情況下通過心率來確定和控制運動強度。對于運動時間,不能一概而定,可以根據(jù)運動強度、運動頻率、年齡和身體條件具體制定。科學研究表明,每周鍛煉3-4次是最適宜的頻度,不僅效果可以充分蓄積,也不產(chǎn)生疲勞,如果頻率增加到每周4次或者5次,效果也相應提高。
本文運動處方推薦的算法主要分為以下幾個步驟:
輸入:用戶—項目評分矩陣R,簇類數(shù)目K。
輸出:N個推薦項目。
(1)通過以Mi(i=1,2,3,…,k)為初始簇心,將矩陣R通過K-means算法分成k類;
(2)通過公式(1)計算用戶和k個簇心的相似度,把用戶加入到與其最相似的類中;
(3)計算用戶與同類中的用戶的相似度,得到最近鄰居集合Nj(j=1,2,…,m);
(4)得到用戶對推薦項目的預測分。
(6)

算法的執(zhí)行流程圖如圖1所示。

圖1 算法流程圖
本文數(shù)據(jù)獲取來之四川某高校的大學生信息,主要包括學生個人信息和處方信息。個人信息主要有姓名、身高、BMI、肺活量等數(shù)據(jù)。處方信息包括學生對運動處方的滿意度信息,將滿意度設定為5分制,5分為最滿意,1分為最不滿意,0分代表未對運動處方做出評價。本算法用到的數(shù)據(jù)有姓名、項目和評分3部分組成。
一般相似度計算的方法常見有兩種,一種是皮爾遜相關(guān)系數(shù),另一種為余弦相似度。本文采用余弦相似度計算用戶間的相似度,即通過公式(4)計算用戶的相似性。
(1)通過對搜集到數(shù)據(jù)進行處理,使用MATLAB將原始評分數(shù)據(jù)轉(zhuǎn)換成一個用戶-項目評分表,如表1所示。

表1 用戶-項目評分矩陣
(2)通過計算用戶與同類其他用戶的相似性,得到用戶的最近鄰居集合。尋找最近鄰居利用公式(4)進行計算。
根據(jù)用戶的最近鄰居集合對項目的評分,通過公式(6)計算用戶對項目的預測評分,對評分的項目進行從高到低排序后,把前N個項目推薦給用戶。
本文采用平均絕對誤差MAE作為評測標準,驗證推薦結(jié)果的好壞。MAE是通過計算用戶預測評分與實際情況評分之間的誤差來衡量準確性的,MAE的值越小,代表推薦結(jié)果越準確。其公式如下所示:

最近鄰的個數(shù)也是影響推薦效果的重要因素之一,本實驗通過比較傳統(tǒng)運動處方推薦算法和基于聚類的運動處方推薦方法在不同最近鄰個數(shù)情況下的MAE值,說明推薦的效果。結(jié)果如表2。

表2 MAE值比較
通過分析實驗結(jié)果可以看出,本文推薦方法的MAE值更低,由此可見推薦效果更優(yōu),推薦質(zhì)量更高。
本文提出的基于聚類的運動處方推薦算法,與傳統(tǒng)的運動處方推薦相比,準確度更高,效果更好,更能符合用戶的具體需求。通過本文的推薦方法可以找到適合自己的運動處方進行鍛煉,從而提高身體素質(zhì)。