機器學習Kaggle入門學習筆記以及問題匯總
這是一篇我自己學習過程中的筆記以及問題匯總貼
A. 看知乎Kaggel 入門筆記
I. General Approach通用方法
1 Data Exporation數據探索
1.1 Visualizaton可視化
- 這一步先對數據進行探索性分析,並做一些簡單的可視化來理解數據。名詞EDA 是Exploratory Data Analysis的縮寫,常用工具包是matplotlib和seaborn
- 常用圖表,查看目標變數分布,注意分布不平衡,若是分布不平衡問題,可以使用以下方法進行處理,如對小類進行過採樣,對大類進行欠採樣,或者是採用異常檢測演算法等。
- 何為分布不平衡,在很多機器學習任務中,訓練集中可能會存在某個或某些類別下的樣本數遠大於另一些類別下的樣本數目。即類別不平衡,為了使得學習達到更好的效果,因此需要解決該類別不平衡問題。來自於博客 在分類中如何處理訓練集中不平衡問題 - 我和我追逐的夢~~~ - CSDN博客
- 對於數值類型的數據,可以使用Box Plot來直觀查看數據分布。啥是Box Plot呢?箱形圖(英文:Box plot),又稱為盒須圖、盒式圖、盒狀圖或箱線圖,是一種用作顯示一組數據分散情況資料的統計圖。因型狀如箱子而得名。在各種領域也經常被使用,常見於品質管理。不過作法相對較繁瑣。箱形圖於1977年由美國著名統計學家約翰·圖基(John Tukey)發明。它能顯示出一組數據的最大值、最小值、中位數、及上下四分位數, 異常值,離群值。
- 以下圖片來自Wikipedia
- 坐標類數據,可以用Scatter Plot(通俗點說就是散點圖)來查看分布趨勢以及離群點。如下,圖片來自Python Data Visualizations | Kaggle坐標類數據,可以用Scatter Plot(通俗點說就是散點圖)來查看分布趨勢以及離群點。如下,圖片來自Kaggle Iris可視化
- 分類問題,可以根據label著不同顏色繪製。
- 繪製變數之間,兩兩分布和相關圖標。比如說輸出label與各個變數之間的分布圖,查看是否有關聯之類的吧
- 作者說kaggle上有個使用Iris數據做的圖表很有啟發,接下來我們就研究一下
- TODO, 我先瀏覽完整篇文章,再來發散研究這篇文章。或許以另外一篇文章給出可能會更好
1.2 Statistics Tests統計測試
對數據進行一些統計性的測試,我的理解就是使用如dataframe.describe以及info等,查看一下數據是否有缺損,是否有類型不一致,以及數據有異常的,比如年齡最大值超過100了。
作者還講了縮寫IID,這是個啥呢?independent and identically distributed獨立同分布,拷貝了一份來自CSDN用戶的解釋,舉的例子挺只管的,就是拋硬幣,正方面的概率分布是一樣的,並且誰也不影響誰。
在概率統計理論中,如果變數序列或者其他隨機變數有相同的概率分布,並且互相獨立,那麼這些隨機變數是獨立同分布。
隨機變數X1和X2獨立,是指X1的取值不影響X2的取值,X2的取值也不影響X1的取值.隨機變數X1和X2同分布,意味著X1和X2具有相同的分布形狀和相同的分布參數,對離散隨機變數具有相同的分布律,對連續隨機變數具有相同的概率密度函數,有著相同的分布函數,相同的期望、方差。反之,若隨機變數X1和X2是同類型分布,且分布參數完全相同,則X1和X2完全一定同分布!英文資料中寫成i.i.d,iid或者IID。
如實驗條件保持不變,一系列的拋硬幣的正反面結果是獨立同分布
- Public LB,應該是Public Leader Board吧,因為Kaggle會針對預測得分結果進行公開排名,這個公開排名就放在Public LB。
- Local CV,應該是Local CrossValidation吧,即本地交叉驗證。
2. Data Prepocessing數據預處理
對數據進行一些預測處理,如
- 數據存在不同文件,需要join起來
- 處理Missing Data,處理缺失數據,在統計調查過程中,由於受訪者對問題的遺漏、拒絕,或是調查員與調查問卷本身存在的一些疏忽,使得記錄經常會出現 缺失數據 (Missing Data) 的問題。缺失數據的處理方式一般有解決缺失數據問題的方法主要有:成列刪除、成對刪除、虛擬變數調整、插補、多重插補和最大似然。可以看知乎機器學習中如何處理缺失數據?pro-am的回答,其附帶有實例和python處理程序
- 處理Outlier Data,即離群數據,有哪些比較好的做異常值檢測的方法?里猴子的回答,可以用四分位數是自動識別出可能的異常值的,即上面提到的Box Plot。
- 必要時候轉換一些Categorical Variable分類變數,即將多類別變數處理成One Hot Encoding,如性別set列處理成sex-male, set-female兩列。對於sex-male, 是男性為1,非男性為0;對於set-female, 是女性就處理為1, 非女性處理為0。總結起來就是非當前的類別的都處理為0,只有當前類比的處理為0。尤其是多類別的時候會比較明顯,這樣有助於突出某個類別的對於結果的貢獻。
- 所謂OneHotEncoding,中文叫做獨熱編碼,又稱為一位有效編碼,文章機器學習實戰:數據預處理之獨熱編碼(One-Hot Encoding)更為詳細的解釋這個機制以及好處。首先對於一個分類屬性,將其數字化後轉換成了0,1,2,3進行區分後,由於分類器默認數據是連續的,並且是有序的,但是呢分類屬性轉換後的數字其實沒有任何關係,就是一個不同數字,只要不同即可,而且是隨機分配的,比如我也可以將其轉換成0, 100, 150, 1000,也同樣可以達到分類,但這些數字大小並不具備任何對結果的貢獻。因此呢,將每個類別轉換成0,1編碼後,就可以讓分類器對該類別有個明確的認識,是該分類就為1,不是就是0,就能夠很明白的說清楚該類別對結果的貢獻。
- Python代碼
import pandas as pdpd.get_dummies(series, prefix=prefix)# 具體API# pandas.get_dummies(data, prefix=None, prefix_sep=_, dummy_na=False, columns=None, sparse=False, drop_first=False)[source]In [1]: import pandas as pdIn [2]: s = pd.Series(list(abca))In [3]: sOut[3]:0 a1 b2 c3 adtype: object# 比如s表示某個類,具有a,b,c,d四個類別,經過以下one hot編碼後,生成了一個4*3的data frameIn [4]: pd.get_dummies(s, prefix=char_)Out[4]: char__a char__b char__c0 1 0 01 0 1 02 0 0 13 1 0 0
3. Feature Engineering
作者原文原話還是要拿過來強調一遍的
Kaggle比賽是以「Feature 為主,調參和 Ensemble 為輔」。特徵工程的深度取決於對數據領域的了解程度。 當一個變數從直覺上來說對所要完成的目標有幫助,就可以將其作為 Feature。
第二點需要驗證相關性,即畫圖查看
3.1 Feature Selection
生成盡量多的 Feature,相信 Model 能夠挑出最有用的 Feature
不太同意這句話,在數據量小,且發生了overfiting的就需要縮減特徵了吧
4. Model Selection
5. Ensemble Generation
6. Pipeline
原文作者使用了署名 - 非商業性使用 - 禁止演繹 3.0 中國大陸許可協議,不太清楚這樣是否屬於侵權呢?如是則侵刪。
B. 看CSDN Kaggle泰坦尼克之災
推薦閱讀:
※機器學習實戰:k-means實現客戶分類
※機器學習基石筆記14:正則化(Regularization)
※Hulu機器學習問題與解答系列 | 第七彈:非監督學習演算法與評估
※機器學習-決策樹 Decision Tree
※[貝葉斯八]之極大似然估計
TAG:機器學習 |