一、前情提要
????該數(shù)據(jù)集最初來(lái)自美國(guó)國(guó)立糖尿病與消化與腎臟疾病研究所。數(shù)據(jù)集的目的是基于數(shù)據(jù)集中包含的某些診斷指標(biāo),診斷性的預(yù)測(cè)患者是否患有糖尿病。從較大的數(shù)據(jù)庫(kù)中選擇這些實(shí)例受到一些限制。特別是,這里的所有患者均為皮馬印第安人血統(tǒng)至少21歲的女性。
二、內(nèi)容
? ? 本次主要承接之前的《關(guān)于Pima數(shù)據(jù)集研究(4)--Model(模型初探)篇》做后續(xù)探索研究,主要內(nèi)容是關(guān)于Pima數(shù)據(jù)的DC問(wèn)題進(jìn)行針對(duì)性的數(shù)據(jù)清洗重構(gòu)與深入探索。
三、研究方法
????本人是python系,本課題的研究方法與方案均是基于python進(jìn)行擴(kuò)展,研究工具包括Anaconda、panda、numpy、sklearn等第三方成熟開(kāi)源框架。之前操作已在《關(guān)于Pima數(shù)據(jù)集研究(4)--Model(模型初探)篇》中進(jìn)行了詳細(xì)介紹。
四、重刷數(shù)據(jù)清洗(DC)
1、回顧
? ? 根據(jù)上一章模型初探的結(jié)果來(lái)看,之前做的數(shù)據(jù)清洗工作并不好。因此該章節(jié)主要介紹與之前DC不同的探索方式方法。首先回顧一下之前數(shù)據(jù)清洗都用了哪些方法:
? ??a、Pregnancies:將數(shù)據(jù)通過(guò)IQR進(jìn)行了閾值限制,并將超出閾值的數(shù)據(jù)進(jìn)行拉回操作;
? ??b、Glucose:通過(guò)IQR計(jì)算結(jié)果,將為0的數(shù)據(jù)拉回下限值;
? ??c、BMI:將為0的數(shù)據(jù)通過(guò)中位數(shù)替換;
? ??d、BloodPressure:將為0的數(shù)據(jù)通過(guò)回歸算法替換;
? ??e、SkinThickness:將為0的數(shù)據(jù)通過(guò)隨機(jī)插補(bǔ)法進(jìn)行數(shù)據(jù)替換;
? ??f、Insulin:將為0的數(shù)據(jù)通過(guò)定向隨機(jī)插補(bǔ)法進(jìn)行數(shù)據(jù)替換;
? ??g、Age、DiabetesPedigreeFunction、Outcome:均未進(jìn)行處理;
? ? 通過(guò)之前的方法,我們來(lái)看一下可能存在哪些問(wèn)題:
? ??a、不同目標(biāo)的數(shù)據(jù)分布是否相同,如果不相同,是否能夠統(tǒng)一進(jìn)行處理?
? ??b、修復(fù)數(shù)據(jù)占比超過(guò)20%的有SkinThickness、Insulin,在統(tǒng)計(jì)學(xué)上需修復(fù)數(shù)據(jù)占該特征的20%以上則失去該數(shù)據(jù)意義,那強(qiáng)行修復(fù)后是否正有效?
? ??c、隨機(jī)插補(bǔ)法、中位數(shù)填補(bǔ)方法和保留原數(shù)據(jù),哪個(gè)對(duì)最終效果更有效?
2、應(yīng)對(duì)策略
????a、比賽使用高分策略
? ? 這里我們先來(lái)看一下在kaggle上常用的高分方法,目標(biāo)分類中位數(shù)回填,我們來(lái)看一下該方法的情況。

????通過(guò)目標(biāo)分類中位數(shù)數(shù)據(jù)來(lái)看,兩個(gè)類別的中位數(shù)除了在Insulin上無(wú)差別以外,其他所有指標(biāo)均有差異,且部分特征還存在較大差異,例如:Glucose、Age等。若我們通過(guò)不同目標(biāo)分類的數(shù)據(jù)來(lái)進(jìn)行異常數(shù)據(jù)填補(bǔ)的話,將能夠更有效的捕捉到不同分類的數(shù)據(jù)分布。我們來(lái)看一下該方法的模型效果前后對(duì)比:


? ? 沒(méi)錯(cuò),我們看到了,相比之前的base模型,效果要高出不少。這么來(lái)看的確獲得了相對(duì)較大的收益。但是往往“理想很豐滿,現(xiàn)實(shí)很骨干”,如果通過(guò)該方法來(lái)進(jìn)行數(shù)據(jù)修復(fù)的話,就會(huì)出現(xiàn)一個(gè)數(shù)據(jù)挖掘領(lǐng)域最常見(jiàn)的“數(shù)據(jù)泄漏”或“數(shù)據(jù)穿越”問(wèn)題。說(shuō)白了,也就是我們站在了未來(lái)的角度來(lái)預(yù)測(cè)已經(jīng)發(fā)生的現(xiàn)象。
? ? 我們說(shuō)明一下為什么不能使用該方法。在參加比賽中,為了獲得高分經(jīng)常會(huì)采用類似的方法,這樣能夠讓我們的數(shù)據(jù)與目標(biāo)更加貼合,最終的模型評(píng)分效果會(huì)更高。但是,在實(shí)際工作操作中,如果我們同樣遇到了數(shù)據(jù)異常和目標(biāo)未知的時(shí)候,該方法就變成了一個(gè)雙向悖論的情況而無(wú)從下手。該現(xiàn)象在數(shù)據(jù)清洗的時(shí)候經(jīng)常會(huì)發(fā)生,我們一定要避免這類問(wèn)題。
? ? b、實(shí)際生產(chǎn)中策略
? ? 通用的比賽策略在實(shí)際生產(chǎn)中不能用了。那我們通過(guò)傳統(tǒng)的數(shù)據(jù)清洗策略來(lái)進(jìn)行數(shù)據(jù)處理。我們秉著“發(fā)現(xiàn)異常,必須處理”的原則開(kāi)展工作,我們先來(lái)看一下需要處理的數(shù)據(jù)都有哪些:

? ? 這里我已經(jīng)將需要處理的數(shù)據(jù)轉(zhuǎn)為了缺失值,上表顯示的為缺失值數(shù)量和相應(yīng)的占比情況。接下來(lái)我們通過(guò)不同的數(shù)據(jù)清洗方法來(lái)比較一下那種方法對(duì)最終的模型更有效:
? ? 1)、中位數(shù)替換:使用中位數(shù)替換缺失值

? ? 2)、均值替換:使用均值替換缺失值

? ? 3)、隨機(jī)插補(bǔ):
????這里我們?nèi)匀谎佑弥疤岬降碾S機(jī)插補(bǔ)法來(lái)進(jìn)行數(shù)據(jù)修復(fù),再根據(jù)修復(fù)后的數(shù)據(jù)進(jìn)行預(yù)測(cè)。由于每次修復(fù)都是隨機(jī)且不可控的,因此這里不再展示數(shù)據(jù)分本,直接上效果:

? ? 從效果來(lái)看,該方法對(duì)于XGB這樣的樹模型有較好的效果。
? ? 4)、模型預(yù)測(cè)(該數(shù)據(jù)集最有效方法):
? ? 這里借助于之前kaggle比賽的套路。只不過(guò)我們通過(guò)無(wú)異常的所有數(shù)據(jù)先預(yù)測(cè)一個(gè)預(yù)測(cè)模型,模型效果如下:

根據(jù)模型的預(yù)測(cè)結(jié)果反向觀察中位數(shù),我們先來(lái)觀察一下原始數(shù)據(jù)的中位數(shù):

我們?cè)賮?lái)看一下模型預(yù)測(cè)后的中位數(shù):

根據(jù)預(yù)測(cè)修復(fù)后的所有數(shù)據(jù)再搭建模型來(lái)進(jìn)行最終模型預(yù)測(cè),效果如下:

? ? 從結(jié)果來(lái)看,這類方法對(duì)于隨機(jī)森林這樣的樹模型有較好的效果;
?? 5)、異常刪除:將缺失值直接剔除

? ? 6)、保持不變:

經(jīng)過(guò)上述6中對(duì)比實(shí)驗(yàn)來(lái)看:
1、隨機(jī)插補(bǔ)法和XGB預(yù)測(cè)后修復(fù)法對(duì)于模型有較好的效果,但其中隨機(jī)插補(bǔ)法每次效果不穩(wěn)定;
2、base版本的效果處于整體實(shí)驗(yàn)中等水平;
3、直接暴力中位數(shù)或均值替換對(duì)于模型來(lái)說(shuō)出現(xiàn)負(fù)向效果;
4、暴力剔除法對(duì)于多模型來(lái)說(shuō)不友好,僅對(duì)于隨機(jī)森林這類的樹模型不會(huì)產(chǎn)生影響。
????根據(jù)總結(jié)發(fā)現(xiàn),我們后續(xù)使用XGB預(yù)測(cè)后修復(fù)法來(lái)開(kāi)展后續(xù)特征工程工作。這里說(shuō)明一下,隨機(jī)插補(bǔ)法每次產(chǎn)生的修復(fù)數(shù)據(jù)均是該特征現(xiàn)有值抽取后修復(fù),每次產(chǎn)生結(jié)果不穩(wěn)定,因此暫不采用此方法來(lái)進(jìn)行后續(xù)工作;
五、重刷特征工程(DC)
? ? 在開(kāi)啟特征工程之旅之前,我們線來(lái)看一下通過(guò)預(yù)測(cè)中位數(shù)填補(bǔ)后的模型效果:

? ? 根據(jù)效果來(lái)看,XGB有了相對(duì)提升,隨機(jī)森林保持不變,羅輯回歸出現(xiàn)了下降。這里進(jìn)一步證明了特征對(duì)于我們的LR模型來(lái)說(shuō)影響性較大;不過(guò)如果我們看recall指標(biāo)的話,整體都出現(xiàn)了較大的提升。特別是在隨機(jī)森林的模型效果上,有較大的提升效果;對(duì)于我們的樣本不均衡的數(shù)據(jù)來(lái)說(shuō),召回指標(biāo)提升更有效;
? ? 之前我們只是加入了預(yù)測(cè)后的分類方向計(jì)算各個(gè)特征的中位數(shù)的特征,而這里我們考慮把最開(kāi)始用于預(yù)測(cè)回填中位數(shù)的模型預(yù)測(cè)分類結(jié)果納入做特征考慮,我們看一下模型效果:

? ? 根據(jù)結(jié)果我們看到,三個(gè)模型的acc都有較為明顯的提升,并且召回的效果也有了較為明顯的特征。說(shuō)明這一個(gè)特征對(duì)于最終的模型有較為正面的影響;
????我們之前采用過(guò)聚類的方案進(jìn)行特征工程,但僅是單特征的聚類,且效果不佳,這里我們直接采用除目標(biāo)意外的所有修復(fù)后特征來(lái)進(jìn)行聚類,作為一列新特征加入到后續(xù)工作中。我們還是使用之前提到過(guò)的kmeans來(lái)進(jìn)行聚類工作,先看看算法給我們推薦的K數(shù)量,效果如下:

? ? 通過(guò)上圖我們發(fā)現(xiàn),最大拐點(diǎn)出現(xiàn)在k=3的位置,但效果不是太明顯,下面我們通過(guò)輪廓系數(shù)來(lái)觀察一下;

? ? 通過(guò)上圖進(jìn)一步證實(shí)我們的k=3是最佳選擇,因此我們除目標(biāo)外的所有特征聚類數(shù)為3是最佳效果,我們?cè)賮?lái)觀察一下加入聚類特征后的模型效果:

? ? 根據(jù)效果來(lái)看,加入聚類特征對(duì)與樹模型來(lái)說(shuō)并不會(huì)產(chǎn)生影響,但對(duì)于LR模型來(lái)說(shuō),效果會(huì)有小幅度提升。