數據分析秘籍在這裡:Kaggle 六大比賽最全面解析(下)

雷鋒網 AI 研習社按,在數據分析秘籍在這裡:Kaggle 六大比賽最全面解析(上)一文中,AI 研習社介紹了結構化數據和 NLP 數據的處理方式,其中包括對 Titanic,房價預測,惡意評論分類,恐怖小說家身份識別四個比賽的詳細分析。

本文將介紹圖像類比賽的數據處理經驗,以樹葉分類競賽(Leaf Classification)和肺癌檢測比賽(Data Science Bowl 2017)為例。

正文如下,雷鋒網 AI 研習社編譯整理:

圖像

到目前為止,我介紹的都是文本(語言、字符串或數字)數據集,最後我將帶來兩個圖像數據集的分析。

我選的這兩個比賽(肺癌檢測樹葉分類)比我看過的其他比賽更具專業特色,這裡的分析不再是基本分析,着重於探索不同技術,因此適用於更高階的讀者。

在可視化技術以及特徵構建方面,我看到了很多變化。特別是肺癌比賽中,一些作者利用現有的醫學知識構建極具專業特色的特徵,雖然不能說這些特徵的效果有多好,但是這裡可視化效果令人驚嘆。

樹葉分類

競賽中提供的數據集包括 1584 個按品種分類的被標記的樹葉圖像,參賽者需要建立一個對標記之外樹葉圖像分類的模型。

我選擇用於分析的 EDA 是 lorinc 的 Feature Extraction From Images,selfishgene 的 Visualizing PCA with Leaf Dataset 以及 Jose Alberto 的 Fast Image Exploration

第一步最好先仔細瞧一瞧樹葉的圖像。

selfishgene 檢查樹葉標本

Jose 繪製出各個種類的樹葉,並指出每個種類有 10 張圖片。他還觀察了同類樹葉間的相似性。

lorinc 直接跳入分析階段,定位每片葉子的中心並應用邊緣檢測技術,他還將葉子的輪廓轉換為極坐標,以便更有效地測量葉子的中心:

之後,當我們使用邊與中心之間的距離從形狀生成時間序列時,我們可能想要轉換到另一種中心性度量——根據該中心的有效性。一種方法是測量中心和邊緣之間的(歐幾里德)距離......但是有一個更好的方法——我們將笛卡爾坐標投影到極坐標中。

selfishgene 選擇看圖像的方差方向:

在高維圖像空間中,每個圖像都可以被看成是不同的「方向」。

 

Selfishgene 看到的樹葉圖像的方差

selfishgene 也花費了一些時間來研究圖像重建、平均圖像周圍的模型變化以及特徵向量,他解釋道:

最上面一行包含每個特徵向量的數據分佈(沿着「方向」的直方圖),第二行包含了我們在前面的圖中已經看到的方差方向,第四行包含了樹葉的中值圖像,值得注意的是,這一行對於所有的特徵向量是相同的。

 

selfishgene 看到的模型變形

特徵檢測

lorinc 建議將每個樣例分成兩部分,並將它們作為兩個樣例處理(儘管他不採用這種方法)。lorinc 從時間序列中找到局部最大值和最小值(例如,繪製在極坐標中的樹葉)並記錄道:

我很驚訝於這個方法表現得相當不錯。我認為我可以從中構建出一個非常有效的特徵。但是這種方法的魯棒性不是很好:

對於樹葉#19,它沒有找到樹葉的末端,只找到了與中心距離最遠的點。對於樹葉#78,可以看到在更複雜或有旋轉的葉片上效果很差。

lorinc 繪製在極坐標中所測葉子的最小值和最大值

在發現每片樹葉周圍存在噪音之後,lorinc 談到數學形態學。他花了一些時間弄清楚如何去除圖像中的噪點,並用可愛的圖像來顯示疊加在樹葉上的距離圖:

 

lerinc 測量距離葉子中心的距離

肺癌

我選擇的 EDA 是 Guido Zuidhof 的 Full Preprocessing Tutorial,Mikel Bober-Irizar 的 Exploratory Data Analysis 和 Alexandru Papiu 的 Exploratory Analysis Visualization

 

anokas 檢查單個圖像的元數據,可以看到病人出生日期被隱匿(19000101)

2017 年的 Data Science Bowl 比賽要求參賽者通過檢測一組圖像來預測患者是否患有癌症。雖然在這一競賽中確實有結構化數據(自動嵌入圖像中的標籤信息),但其中一些數據是匿名的,也就是說,那些原本具有預測價值的特徵(比如患者的年齡)用不了。這意味着所有的 kernel 只專註於圖像分析。

在三個 kernel 作者中,Guido 是唯一一個結合醫學圖像來討論的人,這點在他對數據集的分析中可以看出來:

Dicom 是醫學影像文件標準,這些文件中包含大量元數據(例如像素大小)。不同掃描中的像素大小、粒度都不同(例如,切片之間的距離可能不同),這可能會影響 CNN 的性能。我們可以用同構重採樣來處理。

另外兩位作者通過對數據集和圖像本身進行更全面的探索開始了他們的 EDA。

apapie 檢查了圖像的形狀,而 anokas 開始觀察每個病人的掃描次數、總掃描次數和每個病人的 DICOM 文件直方圖,他還檢查了 ID 和病人是否患有癌症是否存在關係(他發現沒有關係,這意味着數據集的排列是很有序的)。

Alexandru 對像素進行分配並繪製圖像:

 

Guido 在 EDA 中闡明了 HU 所代表的東西(空氣,組織和骨骼):

圖像

每位作者都在繼續研究這些圖片:

 

Anokas 觀察一組患者圖像

 

Alexandru 通過 X 射線看圖像

Alexandru 花了一些時間研究邊緣檢測是否能增強圖像。

 

提高閾值后,Alexandru 呈現出一些比較醒目的圖像

Alexandru 總結道:

有趣的是,過濾器也能檢測到肺里的血管,因此,一些用於區分球體和管道的三維表面探測區分技術將更適合這種情況。

同時,Guido 討論了重採樣,重點關注了 DICOM 圖像的基本性質:

一次掃描可能存在一個像素間距[2.5,0.5,0.5],這意味着切片之間的距離是 2.5 毫米。對於不同的掃描,可能是[1.5,0.725,0.725],這對於自動分析來說存在一定問題(例如使用 ConvNets 的時候)。處理這一問題的常見方法是將完整的數據集重新取樣到確定的等向性分辨率(isotropic resolution)中,如果我們選擇將所有的數據重新採樣到 1mm*1mm*1mm 的像素中,這樣就可以使用 3D 卷積網絡而不用擔心學習縮放與切片厚度的固定。

之後,Guido 在 EDA 中合併了多個 DICOM 圖像完成檢測部位的三維圖:

在另一個版本中,去除周圍的空氣以減少內存:

 

3D圖像

點評

這次競賽是我所見過的最與眾不同的。鑒於 Guido 對醫學圖像的熟悉,他能夠利用這一背景來得出更微妙的結論。但這並沒有阻止其他兩位缺乏醫學背景的作者得出同樣有趣的結論。

總結

  • 結構化數據

對於結構化數據,分析時傾向於尋找目標變量和其他變量之間的相關性,需要花費相當多的時間進行可視化或對變量進行排序。

對於較小的數據集,可以分析的數據只有這麼多列,然而,不同的參賽者使用了截然不同的可視化方法,在選擇特徵工程方面更極具創造性。

  • 自然語言數據集

從這些 EDA 中可以看到,大家在處理自然語言數據集時有相似之處,但在特徵工程的選擇以及分析中,會得出不同結論,產生很大的變化。

  • 圖像數據集

圖像競賽中,在分析和特徵工程方面表現出了極大的多樣化。我所看到的圖像競賽主要是針對有一定積累的參賽者,而且是在一些特定領域,這可能會產生更超前的多樣性。

當數據集變得更加專業或深奧時,介紹性的分析和解釋就會減少,而比較深入和專業化的分析就會增加,而這正是我所看到的。雖然不同類型的數據有明顯不同的趨勢,但專業領域知識起着重要的作用。在肺癌和葉片競賽中,引入專業領域知識到研究中,可以支撐更深層次的分析。(有趣的是,我在自己的研究中也遇到過這種情況,Jeremy Howard 在他的 fast.ai 課程里討論了 Rossman 的數據集,以及最成功的模型是如何集成第三方數據集,如溫度、存儲位置等,從而做出更準確的銷售預測。)

參賽者處理特徵工程的時候,並沒有一個統一的過程。有些人選擇在分析時開始,而另一些人則在最初的分析完成之後,將其作為一個單獨的步驟。

最後,我看到的每一份分析手冊都有確定的讀者(初學者或資深研究者),這會影響分析和寫作。

在一些更受歡迎的比賽中,或是針對普通研究人員的比賽中,EDA 分析都是詳盡無遺的。在這些 EDA 中,我也看到了一種趨勢,即在分析的同時穿插補充或敘事來幫助初學者更好地理解技術。

相比之下,針對更資深的研究者的筆記則傾向於去掉多餘的敘述性描述,許多還跳過了基本的數據分析,而是直接轉到特定領域的技術中去。

特別鳴謝 Michelle LewAri ZilnikSean Matthews 和 Bethany Basile,感謝他們對這篇文章的審閱。

via:thekevinscott.com

雷鋒網 AI 研習社編譯整理。


想在手機閱讀更多Alexa 排名優化資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems