機器學習 (八)kaggle競賽之泰坦尼克號項目實戰-1

引言

       機器學習算法都是爲項目爲數據服務的,某一個算法都有它自己的適用範圍,以及優勢與劣勢,研究算法由於平日的日常操練,那麼用它去做項目就如同上戰場殺敵一樣,去發揮它的價值,kaggle就是這樣一個刷怪升級的地方,在kaggle裏面有無數的妖魔,等級從初級到專家級不等,下面就讓我們去嘗試一下。

套路

       我們要做的是泰坦尼克號,通過分析人員的各種屬性數據,研究其獲救率的課題,其實在做任何事情的時候大概都有一定的套路在裏面,就拿軟件工程來說,在開發一個項目的時候從運營、產品、需求、開發、測試是一個完整流程,有的公司可能會省略需求人員,在機器學習裏面研究過程過度依賴於分析人員自身 自身經驗,分析、測試、上線等都是分析人員自己搞定,在每個小的階段有各自的評價指標來觀測我們分析模型的好壞,比如召回率、正確率,按着大概步驟進行的好處是會提高效率以及產出穩定性。

分析利器

       在看泰坦尼克時看了韓小陽老師的博客,寫的很到位,膜拜一下大神人物,不過相信牛人背後的付出也是很堅信,沒有人隨隨便便成爲大神,來讓我們一起成爲大神吧,向前邁進。。。。

sklearn 神器

       一張圖勝過千言萬語,下面這張圖是sklearn庫主要結構和功能,可以看到分了六大塊,分別是分類器、迴歸、聚類、降維、模型選取、預處理,可以說再機器學習裏面完全夠用了,省去了我們自己擼代碼的過程。
這裏寫圖片描述

數據初步分析

對數據的認識很重要
       這句話的意思即在給定的或我們自己分析出來的一堆特徵集合中,每個集合和目標變量是啥關係我們要心裏門清,要不咋分析呢,數據屬性對模型結果其實是影響很大的,這也算是知己知彼,道理都是相通的,大道至簡。
        在認識數據的過程中可以利用pandas、matplotlib這樣常用的數據分析庫來輔助分析,他們可以輕鬆的畫出各種圖標,如柱狀圖、折線圖、合圖、密度分佈圖等等,畢竟數據是死的幾百甚至幾萬條數據中看出來走勢也是很難的,這也算是利用的圖標的優勢,俗話說一張圖勝過千言萬語,大家都知道蒙娜麗莎圖像,這裏面隱含了多少內容是無法預測的,所以,這一步可以多藉助於圖像分析將事半功倍。
該步驟主要目的就是認識數據,我們要達到的目的是清楚每個屬性特徵和目標變量之間的關係,影響程度都要清楚,如此一來我們纔有可能選擇出來好的特徵,去除沒有影響的特徵。

簡單數據處理

特徵工程很重要 feature engineering
       特徵工程即分析組合各種特徵,特徵是模型的輸入數據是算法模型的血液和心臟,在處理各種特徵時很大程度上也是根據每個人的經驗以及理解來處理.

  • 缺失值

       如果缺值的樣本佔總數比例極高,我們可能就直接捨棄了,作爲特徵加入的話,可能反倒帶入noise,影響最後的結果了
如果缺值的樣本適中,而該屬性非連續值特徵屬性(比如說類目屬性),那就把NaN作爲一個新類別,加到類別特徵中
如果缺值的樣本適中,而該屬性爲連續值特徵屬性,有時候我們會考慮給定一個step(比如這裏的age,我們可以考慮每隔2/3歲爲一個步長),然後把它離散化,之後把NaN作爲一個type加到屬性類目中。
有些情況下,缺失的值個數並不是特別多,那我們也可以試着根據已有的值,擬合一下數據,補充上,這個實例中就是屬於缺失值不太多的情況。

  • 枚舉類型
    該類型需要轉換爲dummes類型來處理,sklear preprocessing模塊已經給我們寫好了函數get_dummy直接調用接口,既可以按列來處理,也可以多了一起處理,還是很好用的。
  • 值太大
    這種類型就用到了歸一化處理,將數據處理爲-1到1或者0-1之間的數,歸一化一般是用每個值除以最大值減去最小值的比值。
  • 其它情況
    當然除了這幾種最基本的情況,還有很多情況和種類需要處理,這裏就不一一雷叔

選擇建立模型

把數據處理完後下一步就該選擇模型算法了,首先我們要確定我們是在求解哪一類問題,是迴歸、分類還是聚類,確認了問題類型選擇相應的算法,在這裏我們是想確定乘客獲救不活就顯然是分類問題,我們選擇分類算法 頓時腦海中浮現出KNN 決策樹、邏輯迴歸等等算法,從常用角度來說邏輯迴歸更常用些,我們先試試再說,利用sklearn中的linear_model.LogisticRegression函數即可,第一次不管模型效果咋樣先建立了一個baseline再說,後面可以不斷優化迭代,這類似於我們做事情好多事情需要一步步來,一步到位不好。

模型優化

到這裏baseline模型已經建好了,現在的工作重點已經從建立模型到了如何優化模型,以及測試模型的好壞階段,常用的方式有下面幾種,這也算是常規且好用的套路。
- 係數關聯分析
該思路即分析建好的模型各個係數也是權重對評價結果好壞的影響,一般該值越大影響越大
- 交叉驗證
開始的時候一直不太理解交叉驗證的原因,後來發現使用交叉驗證其實也是又條件的,如果訓練樣本不多的時候如果只訓練一次很容易發生非均衡問題樣本的分佈我們並不知道,也許我們第一次拿來訓練的樣本包含離異值很多,造成模型不穩定或者過擬合現象,交叉驗證可以充分發揮訓練集數據的價值,我們拿10-folder驗證來說,訓練集數據分爲10分需要交叉驗證10次,數據對模型的影響已經很小了,通過交叉驗證可以很好地提高模型效果,所以,這種方式被大多數人在使用。

  • 學習曲線
    學習曲線是進一步觀察模型是否欠擬合或者過擬合的圖形工具,很方便,後面我們會詳細介紹學習曲線

模型融合

在商品或者上線的模型一般都是融合模型,不僅僅利用了一種模型或者算法,沒中模型或者都有一種侷限性,模型融合的思想類似於把衆家的有點集中到一家,發揮特例的特長,是的結果更好的思想技術,當然對於不同的模型有不同的思路,具體還需要去分析那個模型可以和那個模型融合,比如隨機森林、GBT、adaboot、xgboot等等,以後會詳細分析。

問題思考

把下面的問題留給閱讀者
1.如何發現模型過擬合或欠擬合?
2.過擬合或欠擬合有哪些方式解決?

總結

       kaggle 網站裏面的項目感覺還是非常不錯的,裏面也有很多大牛,理論結合實踐纔是提高和提升的快速方法,另外多思考、多想很多問題自然會想明白,作爲一名IT工程師不過學習和不斷理解新知識也是一項基本素養,俗話說活到老學到老,知識是無止境的,這知識剛剛打開了一扇大門,日後將同算法的同胞們共同奮鬥。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章