最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat|R語言隨機森林RandomForest、邏輯回歸Logisitc預(yù)測心臟病數(shù)據(jù)和可視化分析

2021-07-28 18:52 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=22596?

原文出處:拓端數(shù)據(jù)部落公眾號

研究大綱

  • 介紹數(shù)據(jù)集和研究的目標

  • 探索數(shù)據(jù)集

    • 可視化

    • 使用Chi-Square獨立檢驗、Cramer's V檢驗和GoodmanKruskal tau值對數(shù)據(jù)集進行探索

  • 預(yù)測模型,Logisitic回歸和RandomForest

    • step()

    • bestglm()

    • 兩個邏輯回歸的實例

    • 使用5折交叉驗證對模型實例進行評估

    • 變量選擇改進

    • 隨機森林模型

    • 用RandomForest和Logisitc回歸進行預(yù)測

  • 使用可視化進行最終的模型探索

  • 結(jié)論和下一步措施

1.簡介

本報告是對心臟研究的機器學習/數(shù)據(jù)科學調(diào)查分析。更具體地說,我們的目標是在心臟研究的數(shù)據(jù)集上建立一些預(yù)測模型,并建立探索性和建模方法。但什么是心臟研究?

我們閱讀了關(guān)于FHS的資料:

心臟研究是對社區(qū)自由生活的人群中心血管疾病病因的長期前瞻性研究。心臟研究是流行病學的一個里程碑式的研究,因為它是第一個關(guān)于心血管疾病的前瞻性研究,并確定了風險因素的概念。

該數(shù)據(jù)集是FHS數(shù)據(jù)集的一個相當小的子集,有4240個觀測值和16個變量。這些變量如下:

  1. 觀測值的性別。該變量在數(shù)據(jù)集中是一個名為 "男性 "的二值。

  2. 年齡:體檢時的年齡,單位為歲。

  3. 教育 : 參與者教育程度的分類變量,有不同的級別。一些高中(1),高中/GED(2),一些大學/職業(yè)學校(3),大學(4)

  4. 目前吸煙者。

  5. 每天抽的煙的數(shù)量

  6. 檢查時使用抗高血壓藥物的情況

  7. 流行性中風。流行性中風(0 = 無?。?/p>

  8. 流行性高血壓(prevalentHyp)。流行性高血壓。如果接受治療,受試者被定義為高血壓

  9. 糖尿病。根據(jù)第一次檢查的標準治療的糖尿病患者

  10. 總膽固醇(mg/dL)

  11. 收縮壓(mmHg)

  12. ?舒張壓(mmHg)

  13. BMI: 身體質(zhì)量指數(shù),體重(公斤)/身高(米)^2

  14. 心率(次/分鐘)

  15. 葡萄糖。血糖水平(mg/dL)

最后是因變量:冠心?。–HD)的10年風險。

這4240條記錄中有3658條是完整的病例,其余的有一些缺失值。

2.了解數(shù)據(jù)的意義

在每一步之前,要加載所需的庫。

然后,加載心臟研究的數(shù)據(jù)集。

2.1 變量和數(shù)據(jù)集結(jié)構(gòu)的檢查

我們對數(shù)據(jù)集進行一次檢查。

2.2 數(shù)據(jù)集的單變量圖

生成一個數(shù)據(jù)集的所有單變量圖。

這是為了獲得對變量,對整個問題和數(shù)據(jù)集的理解,將通過多變量或至少雙變量的可視化來實現(xiàn)。
?

2.3 數(shù)據(jù)集的雙變量圖:因變量和預(yù)測因素之間的關(guān)系

現(xiàn)在我們可以進行一些雙變量的可視化,特別是為了看到因變量(TenYearCHD)和預(yù)測因素之間的關(guān)系。由于圖的數(shù)量太多,不是所有的一對變量都能被調(diào)查到!我們可以在后面的步驟中繼續(xù)調(diào)查。我們可以稍后再回到這一步,深入了解。

下面的代碼可以生成因變量的所有雙變量圖。由于因變量是一個二元變量,所以當預(yù)測變量是定量的時候,我們會有boxplots,或者當預(yù)測變量是定性的時候,我們會有分段的bar圖。

根據(jù)我們掌握的情況,男性與TenYearCHD直接相關(guān),因此男性這個變量似乎是一個相對較好的預(yù)測因素。同樣,年齡似乎也是一個很好的預(yù)測因素,因為TenYearCHD == TRUE的病人有較高的年齡中位數(shù),其分布幾乎相似。相反,不同類別的教育和因變量之間似乎沒有關(guān)系。目前的吸煙者變量與因變量有輕微的關(guān)系,因為目前的吸煙者患TenYearCHD的風險略高。

2.4 使用Goodman&Kruskal tau檢驗定性變量之間的關(guān)系

然而,除了這些本質(zhì)上是定性方法的圖表外,人們可能希望對這種關(guān)聯(lián)有一個數(shù)字值。為了有這樣的數(shù)字測量,我想使用Goodman&Kruskal的tau測量,這是兩個無序因子,即兩個分類/名義變量之間的關(guān)聯(lián)測量。在我們這個數(shù)據(jù)集中的因子變量中,只有教育是序數(shù)變量,即它的類別有意義。這種測量方法比Cramer's V或chi-Square測量方法更具信息量。

可以看出,關(guān)于因變量的變異性,預(yù)測因素的解釋力非常小。換句話說,根據(jù)Goodman和Kruskal's tau度量,我們的預(yù)測因素和因變量之間幾乎沒有關(guān)聯(lián)。這可以從TenYearCHD一欄的數(shù)值中看出。

假設(shè)我的G&Ktau檢驗正確的話,這對模型來說并不是一個好消息。

為了檢驗這些發(fā)現(xiàn),我們可以用Chi-Square檢驗來檢驗分類變量與因變量的關(guān)聯(lián)的顯著性,然后用Phi相關(guān)系數(shù)來評估可能的關(guān)聯(lián)的強度。Phi用于2x2等值表。對于更大的表格,即有更多層次的變量,可以利用Cramer's V。

奇怪的是,當Chi-Square的P值如此之低時,可能的關(guān)聯(lián)的顯著性為零。這兩個測試(Chi-Square和Phi相關(guān))在大量的觀察中基本上得出相同的結(jié)果,因為一個是基于正態(tài)分布的,另一個是基于t分布的。
?

2.5 多重共線性的雙變量分析

該模型的真正問題在于共線性現(xiàn)象。共線性關(guān)系發(fā)生在兩個預(yù)測因子高度相關(guān)的情況下。我們需要檢查這種特性,然后繼續(xù)建立對數(shù)回歸模型。

根據(jù)Goodman和Kruskal's tau圖,我們不應(yīng)該擔心共線性。但是,有序變量的教育變量呢?Cramer's V檢驗顯示,其強度不大。

沒有一個變量顯示與教育有很強的關(guān)聯(lián)。Cramer's V的最高值是0.145,這在教育和性別之間是相當弱的。
?

但是諸如currentSmoker和cigsPerDay這樣的變量呢?很明顯,其中一個是可以預(yù)測的。有一個數(shù)字變量和一個分類變量,我們可以把數(shù)字變量分成幾個類別,然后使用Goodman和Kruskal's tau。GroupNumeric()函數(shù)可以幫助將定量變量轉(zhuǎn)換成定性變量,然而,基于對數(shù)據(jù)的主觀理解,以及之前看到的cigsPerDay的多模態(tài)分布,在這里使用cut()函數(shù)很容易。
現(xiàn)在讓我們檢查一下GKtau的數(shù)值

從矩陣圖上的tau值及其背景形狀,我們可以看到cigsPerDay可以完全解釋currentSmoker的變異性。這并不奇怪,因為如果我們知道一個人每天抽多少支煙就可以斷言我們知道一個人是否是吸煙者!
?

第二個關(guān)聯(lián)是cigsPerDay與男性的關(guān)系,但它并不強烈。因此,前者可以解釋后者的較小的變化性。
?

在下一個數(shù)據(jù)集中,我把所有定量變量轉(zhuǎn)換成定性/分類變量?,F(xiàn)在我們可以有一個全面的矩陣,盡管由于轉(zhuǎn)換,一些信息會丟失。

我們可以看到,sysBP和diaBP可以預(yù)測prevalentHyp,但不是很強。(0.5左右)。因此我們可以在模型中保留prevalentHyp。第二點是關(guān)于GK tau的輸出。


?

3.預(yù)測模型:Logistic回歸和RandomForest

現(xiàn)在是評估模型實例的時候了。在這里,我們把邏輯回歸稱為模型。

我們有兩個實例。

1. 一個包括所有原始變量的模型實例,特別是cigsPerday和currentSmoker變量

2. 一個包括所有原始變量的模型實例,除了currentSmoker,cigsPerday被轉(zhuǎn)換為一個因子變量
為了評估模型實例,我們可以使用數(shù)學調(diào)整訓(xùn)練誤差率的方法,如AIC。另一種方法是使用驗證數(shù)據(jù)集,根據(jù)模型在這個數(shù)據(jù)集上的表現(xiàn)來評估模型。在后一種方法中,我選擇使用K-fold Cross-Validation(CV)技術(shù),更具體地說是5-fold CV。在這里,還有其他一些技術(shù),如留一法交叉驗證。

3.1 兩個Logistic回歸模型實例

這個模型是基于原始數(shù)據(jù)集的。有缺失值的記錄被從數(shù)據(jù)集中省略,模型顯示變量男性、年齡、cigsPerDay、totChol、sysBP和葡萄糖是顯著的,而prevalentHyp在某種程度上是顯著的。

?

在第二個模型實例中,重要變量與前一個模型實例相同。

一個非常重要的問題是,如何衡量這兩個模型實例的性能以及如何比較它們?有各種方法來衡量性能,但我在這里選擇了5折交叉驗證法。

為了進行交叉驗證和評估模型實例,我們需要一個成本函數(shù)。boot軟件包推薦的一個函數(shù),是一個簡單的函數(shù),它可以根據(jù)一個閾值返回錯誤分類的平均數(shù)。閾值默認設(shè)置為0.5,這意味著任何觀察到的超過50%的CHD機會都被標記為有持續(xù)疾病的TRUE病例。從醫(yī)學的角度來看,我把閾值降低到0.4,這樣即使是有40%機會得心臟病的病例,也會被標記為接受進一步的醫(yī)療關(guān)注。降低閾值,增加了假陽性率,從而增加了醫(yī)療費用,但減少了假陰性率,挽救了生命。我們可以使用敏感度或特異性作為成本函數(shù)。此外,也可以使用cvAUC軟件包將曲線下面積(AUC)與CV結(jié)合起來。

3.2 模型實例的交叉驗證評估

我們可以看到,兩個模型非常相似,然而,模型2顯示出輕微的優(yōu)勢。準確率確實相當高。但是,讓我們看看我們是否可以通過刪除一些變量來改進model1。
?

3.3 通過變量選擇改進模型

我們看一下model1的總結(jié)。

到現(xiàn)在為止,我們一直假設(shè)所有的變量都必須包含在模型中,除非是共線性的情況?,F(xiàn)在,我們被允許通過刪除不重要的變量。這里有幾種方法,如前向選擇和后向選擇。

例如,后向選擇法是基于不顯著變量的P值。淘汰繼續(xù)進行,直到AIC顯示沒有進一步改善。還有stats::step()和bestglm::bestglm()函數(shù)來自動進行變量選擇過程。后者的軟件包及其主要函數(shù)有許多選擇信息標準的選項,如AIC、BIC、LOOCV和CV,而前者的逐步算法是基于AIC的。

現(xiàn)在讓我們來看看這兩個模型和它們的交叉驗證誤差。

基于BIC的bestglm::bestglm()將模型變量減少到5個:男性、年齡、cigsPerDay、sysBP和葡萄糖。所有的變量都是非常顯著的,正如預(yù)期的那樣。

基于AIC的step()函數(shù)將模型變量減少到8個:男性、年齡、cigsPerDay,prevalentStroke、prevalentHyp、totChol、sysBP和glucose。值得注意的是,通過step()找到的最佳模型實例具有不顯著的變量。
?

交叉驗證誤分類誤差

交叉驗證-準確度

AIC方法和BIC方法都能產(chǎn)生相同的準確性。該選擇哪種方法呢?我寧愿選擇AIC,因為該模型實例有更多的預(yù)測因素,因此更有洞察力。然而,選擇BIC模型實例也是合理的,因為它更簡明。與model1的準確度相比,我們通過變量選擇在準確度上有0.8475-0.842=0.00550.8475-0.842=0.0055的提高。然而,我們失去了關(guān)于其他預(yù)測因子和因變量關(guān)系的信息。
?

3.4 RandomForest模型

到目前為止,我只做了邏輯回歸模型。有更多的模型可以用來為當前的問題建模,而RandomForest是一個受歡迎的模型。讓我們試一試,并將結(jié)果與之前的模型進行比較。

在這里,我同時使用了CV和out-of-bag(OOB)來評估隨機森林性能。

我們可以看到,在50到1000棵樹的范圍內(nèi),RandomForest模型的最高精度可以通過設(shè)置CV方法的樹數(shù)等于400來獲得。圖中的紅線顯示了我們從邏輯回歸模型實例中得到的最佳CV精度。由于OOB的最高準確率高于CV的最高準確率,所以我選擇了CV的準確率,使其更加謹慎。ntree=400的CVaccuracy=0.8486CVaccuracy=0.8486,比最好的邏輯回歸模型差0.00020.0002! 然而,如果我們考慮OOB的準確性,那么RandomForest模型比最佳邏輯回歸模型好0.00120.0012。
?

在RF中,模型的準確性有所提高,但代價是失去了可解釋性。RF是一個黑箱,我們無法解釋預(yù)測因子和因變量之間的關(guān)系。

3.5 模型對個人數(shù)據(jù)如何預(yù)測?

這里為了完成這個報告,我想在一個新的數(shù)據(jù)集上增加一個預(yù)測部分。該數(shù)據(jù)集只有一條記錄,其中包括我自己的個人數(shù)據(jù)。換句話說,我已經(jīng)創(chuàng)建了一個模型,我想知道它是否預(yù)測了我的CHD。

邏輯回歸模型的預(yù)測輸出。

隨機森林預(yù)測。

因此,現(xiàn)在看來,我沒有風險! 然而,正如我之前提到的,這些模型是為了教育和機器學習的實踐,而不是為了醫(yī)學預(yù)測!所以,我認為這些模型是有價值的。

4.最終模型探索

讓我們最后看一下這個模型

結(jié)果大多符合預(yù)期。根據(jù)GKtau值,預(yù)測因子之間的關(guān)聯(lián)最小。這正是我們想要的,以避免共線性現(xiàn)象。
然而,平行坐標仍然顯示了一些有趣的點。例如,年齡組與 "十年健康發(fā)展 "結(jié)果之間的關(guān)聯(lián)很有意思。較低的年齡組在TenYearCHD==TRUE中的參與度很低,這意味著年齡與該疾病有正相關(guān)。另一方面,與男性相比,女性(男性==FALSE)在0支煙和[1,20]支煙組的貢獻更大。換句話說,男性傾向于抽更多的煙,而且是重度吸煙者。

桑吉圖可以產(chǎn)生更好的洞察力,因為我們可以沿著坐標軸觀察樣本。

5.結(jié)論

在這項研究中,為了建立預(yù)測模型,使用了包括4240個觀測值和16個變量的心臟研究的數(shù)據(jù)集。這些模型旨在預(yù)測十年后的冠心?。–HD)。
在對數(shù)據(jù)集進行探索后,利用邏輯回歸和隨機森林模型來建立模型。使用K-Fold Cross-Validation對模型進行了評估。

為了擴展這項研究,可以使用進一步的分類方法,如支持向量機(SVM)、梯度提升(GB)、神經(jīng)網(wǎng)絡(luò)模型、K-近鄰算法,甚至決策樹。

最受歡迎的見解

1.從決策樹模型看員工為什么離職

2.R語言基于樹的方法:決策樹,隨機森林

3.python中使用scikit-learn和pandas決策樹

4.機器學習:在SAS中運行隨機森林數(shù)據(jù)分析報告

5.R語言用隨機森林和文本挖掘提高航空公司客戶滿意度

6.機器學習助推快時尚精準銷售時間序列

7.用機器學習識別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用

8.python機器學習:推薦系統(tǒng)實現(xiàn)(以矩陣分解來協(xié)同過濾)

9.python中用pytorch機器學習分類預(yù)測銀行客戶流失


拓端tecdat|R語言隨機森林RandomForest、邏輯回歸Logisitc預(yù)測心臟病數(shù)據(jù)和可視化分析的評論 (共 條)

分享到微博請遵守國家法律
娱乐| 新河县| 独山县| 双流县| 育儿| 巫山县| 太白县| 凤山市| 娄烦县| 双辽市| 盖州市| 铜山县| 南川市| 从化市| 广宁县| 修水县| 威远县| 长宁区| 会昌县| 正阳县| 广饶县| 南川市| 静海县| 马尔康县| 防城港市| 伊宁市| 宜阳县| 平定县| 会东县| 胶南市| 龙岩市| 株洲县| 绍兴市| 辽阳县| 乐山市| 疏勒县| 固始县| 连南| 邹城市| 广灵县| 白城市|