[發明專利]一種基于雙重特征選擇和XGBoost算法的心臟病預測方法有效
| 申請號: | 202010052452.X | 申請日: | 2020-01-17 |
| 公開(公告)號: | CN111243751B | 公開(公告)日: | 2022-04-22 |
| 發明(設計)人: | 孫昊;崔子超 | 申請(專利權)人: | 河北工業大學 |
| 主分類號: | G16H50/70 | 分類號: | G16H50/70;G16H50/30;G06K9/62 |
| 代理公司: | 天津翰林知識產權代理事務所(普通合伙) 12210 | 代理人: | 張國榮 |
| 地址: | 300130 天津市紅橋區*** | 國省代碼: | 天津;12 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 雙重 特征 選擇 xgboost 算法 心臟病 預測 方法 | ||
1.一種基于雙重特征選擇和XGBoost算法的心臟病預測方法,其特征在于,該方法具體步驟如下:
第一步、將開源的心臟病數據集進行預處理,得到樣本數據集D,大小為N;
第二步、通過隨機森林算法判定樣本數據集D的特征的重要性,隨機森林算法會給出所有特征的重要性大小,并對特征重要性進行排序;
第三步、采用斯皮爾曼等級相關系數法對樣本數據集D進行特征相關性分析;
第四步、根據第二步得到的樣本數據集D的特征的重要性排序和第三步得到的樣本數據集D的特征相關性分析,進行雙重特征選擇,選擇出最合適的特征;
第五步、在windows上搭建scikit-learn機器學習框架,建立基于XGBoost算法的心臟病預測模型,并采用第四步選擇出的特征的數據集的70-90%作為訓練集對所述心臟病預測模型進行訓練,并用余下的10-30%作為測試集對訓練好的心臟病預測模型進行調參、測試,得到心臟病預測結果;
XGBoost是一個樹集成模型,它使用的是K棵樹的每棵樹的預測值的和作為該樣本在XGBoost系統中的預測:
對于所給的數據集有N個樣本,每個特征:
D={(Xi,yi)}(|D|=N,Xi∈Rm,yi∈R) (9)
上述公式(9)中,Xi表示第i個樣本,yi表示第i個樣本的標簽;
上述公式(10)中,表示模型的預測值,K表示樹的數量,fk表示第k棵樹模型,q表示每棵樹的結構映射每個樣本得到相應的葉節點的分數,wq(x)表示樹q的所有葉節點的分數組成的集合,T表示每棵樹的葉子節點的數量;
由公式(10)可知,XGBoost的預測值為每棵樹的預測值之和,即每棵樹相應葉節點的得分之和;我們的目標就是學習這樣的K個樹模型f(x);為了學習模型f(x),定義了下面的目標函數:
上述公式(11)中,式右邊第一項為損失函數項,即訓練誤差,是一個可微的凸函數,第二項為正則化項,即每棵樹的復雜度之和,目的是控制模型的復雜度,防止過擬合;我們的目標是在ψ(φ)取得最小化時得出對應的模型f(x);γ和λ表示系數;
所述第一步中的開源的心臟病數據集預處理的過程為:對開源的心臟病數據集存在的數據缺失、數據異常以及某個特征存在多個類別進行缺失數據填充、異常數據的刪除、多類別數據的有序映射或獨熱編碼以及數據的標準化;
上述標準化指的是將特征列的均值設為0,方差為1,使得特征的值呈標準正態分布;標準化的公式為:
上述公式(2)中,μx和σx分別為樣本某個特征的均值和標準差;
所述第二步中特征的重要性大小的計算過程為:隨機森林中包含很多決策樹,決策樹中的每一個節點是某一個特征的條件;這些條件用來將數據分成兩部分,使得每一部分歸為同一個集合,并不斷重復此過程,將數據進行分類;判斷每個特征在隨機森林中每棵樹上做了多大貢獻,然后取平均值,這個值就是該特征的重要性大小;所述的貢獻的計算方式采用基尼指數,將變量重要性評分用VIM表示,Gini系數用GI表示,假設總共有c個特征x1,x2,x3,...xc,要計算出每個特征xj的Gini系數評分即第j個特征在隨機森林的所有決策樹節點分裂不純度的平均改變量;
上述基尼指數的計算公式:
上述公式(3)中,K表示有K個類別,pmk表示節點m中類別k所占比例;
特征xj在節點m的重要性就是節點m分支前后的Gini系數的變化量:
上述公式(4)中,N表示該節點中樣本的數量,Nl和Nr分別表示分枝后兩個新節點中樣本數量,GIl和GIr分別表示分枝后兩個新節點的Gini系數;
那么xj在第i棵樹的重要性為:
上述公式(5)中集合M是決策樹i中特征xj出現過的所有節點的集合;
假設隨機森林中共有n棵樹,則特征xj的重要性為:
最后歸一化處理:
根據上述方法得到所有特征的重要性,并對特征重要性排序;
所述第三步的具體過程為:采用斯皮爾曼等級相關系數法,用希臘字母ρ表示,斯皮爾曼等級相關系數用來估計兩個變量X、Y之間的相關性,其中變量間的相關性使用單調函數來描述;兩個變量之間的ρ取值在-1和+1之間;
上述斯皮爾曼相關系數為:
上述公式(8)中,N’為變量X、Y中的元素個數;對X、Y進行排序,兩個隨機變量取的第i個值分別用X’i和Y’i表示,其中x’i和y’i分別表示X’i和Y’i在X和Y中的排行,di=x’i-y’i;由此完成特征的相關性分析;
所述第四步的具體過程為:根據第二步得到的樣本數據集D的特征的重要性排序和第三步得到的樣本數據集D的特征相關性分析,取出特征重要性的值,取出每個特征與結果標簽的相關系數并根據上述公式(2)進行標準化;并根據所述取出的特征重要性值和每個特征與結果標簽的相關性計算出每個特征的特征指數,求出特征指數之后對特征指數進行歸一化處理并進行排序,設定閾值,選出特征,進而完成特征選擇;
所述計算特征指數的具體方法如下:
首先取出的特征重要性值VIMj,然后把每個特征與結果標簽的相關性值進行標準化,用indexj表示標準化后的相關系數,然后計算出特征指數,特征指數用IOV表示,特征指數的數學計算公式如下公式(12)所示:
上述歸一化指的是將特征的值縮放到區間[0,1],歸一化的公式為:
上述公式(1)中,IOVj表示一個特定的樣本,IOVj-max和IOVj-min分別是某個特征的最大值和最小值。
2.根據權利要求1所述的一種基于雙重特征選擇和XGBoost算法的心臟病預測方法,其特征在于,計算所述特征指數的具體方法如下:選擇所述特征指數時設定的閾值為0.1,選擇出特征選擇指數大于0.1的特征作為最終訓練模型的特征,從開源的心臟病數據集的13個特征中選擇出9個特征。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于河北工業大學,未經河北工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010052452.X/1.html,轉載請聲明來源鉆瓜專利網。





