0
本文作者: skura | 2019-10-12 11:34 |
你不需要重新發(fā)明輪子,你需要知道如何使用現(xiàn)有的輪子更好地完成你想做的事情。
由 Kaggle 主辦的泰坦尼克號(hào)挑戰(zhàn)賽是一場(chǎng)比賽,其目標(biāo)是根據(jù)一組描述某位乘客的變量(如年齡、性別或船上乘客等級(jí))來預(yù)測(cè)該乘客的生死。
我玩泰坦尼克號(hào)的數(shù)據(jù)已經(jīng)有一段時(shí)間了。在寫這篇文章的時(shí)候,我在 11002 名參與者中排名第 113 位。
你一定想知道我是怎么做到的。所以我們就直接切入主題吧。
背景
泰坦尼克號(hào)的沉沒是歷史上最著名的沉船事件之一。1912 年 4 月 15 日,泰坦尼克號(hào)在處女航中與冰山相撞后沉沒,2224 名乘客和船員中有 1502 人遇難。這一聳人聽聞的悲劇震驚了國際社會(huì)。
沉船事故導(dǎo)致如此多人喪生的原因之一是沒有足夠的救生艇供乘客和船員使用。雖然在沉船事件中幸存下來有一些運(yùn)氣因素,但有些人比其他人,更有可能幸存下來,如婦女、兒童和上層階級(jí)。
環(huán)境和工具
scikit-learn
numpy
pandas
matplotlib
seaborn
數(shù)據(jù)集可以從 kaggle 網(wǎng)站下載到。
代碼在哪里?
關(guān)于 github 的完整項(xiàng)目可以在這里找到。
以下是數(shù)據(jù)集中提供的特征。
Passenger Id:船上每位旅客的身份編號(hào)
Pclass:客艙等級(jí),它有三個(gè)可能的值:1,2,3(一級(jí)、二級(jí)和三級(jí))
The Name of the passenger :乘客姓名
Sex
Age
SibSp:與乘客同行的兄弟姐妹和配偶人數(shù)
Parch:與乘客同行的父母和兒童人數(shù)
The ticket number :票號(hào)
The ticket fare:票價(jià)
The cabin number :船艙號(hào)
The embarkation:這描述了泰坦尼克號(hào)上三個(gè)區(qū)域,人們從這些區(qū)域出發(fā)。其三個(gè)可能值為 S,C,Q
我從導(dǎo)入所有庫和依賴項(xiàng)開始。
接下來我加載了包含所有細(xì)節(jié)的 csv 文件。
特征工程與特征選擇
這可能是機(jī)器學(xué)習(xí)工作流中最重要的部分。由于算法完全取決于我們?nèi)绾屋斎霐?shù)據(jù),因此特征工程應(yīng)該是每個(gè)機(jī)器學(xué)習(xí)項(xiàng)目的首要任務(wù)。
特征工程是將原始數(shù)據(jù)轉(zhuǎn)換為能更好地將潛在問題表示為預(yù)測(cè)模型特征的過程,從而提高模型對(duì)未知數(shù)據(jù)預(yù)測(cè)的精度。
特征工程的優(yōu)勢(shì)
減少過擬合:更少的冗余數(shù)據(jù)意味著做出基于噪音的決策的概率更小。
提高準(zhǔn)確性:更少的誤導(dǎo)性數(shù)據(jù)意味著建模精度提高。
減少訓(xùn)練時(shí)間:更少的數(shù)據(jù)點(diǎn)降低算法復(fù)雜度,使得算法訓(xùn)練更快。
我創(chuàng)建了一些特征,用于判斷乘客是否有客艙,計(jì)算家庭規(guī)模,以及判斷一個(gè)人是否獨(dú)自旅行。另外,我做了一些數(shù)據(jù)清洗,比如從數(shù)據(jù)集中刪除空值。
我繼續(xù)進(jìn)行特征工程,創(chuàng)建一個(gè)函數(shù)來獲得一個(gè)人的頭銜。此外,我把所有不常用的列數(shù)據(jù)歸為一組。然后我根據(jù)以下幾個(gè)特征對(duì)人們進(jìn)行了分類——sex, title, embarked, fare 和 age。
然后我刪除了一些列,如 PassengerId, name, ticket, cabin, sibSp,因?yàn)檫@些值對(duì)我們的預(yù)測(cè)看起來并不重要。
接下來,我制作了一個(gè)混淆矩陣來可視化不同特征之間的相互關(guān)系。
混淆矩陣
到現(xiàn)在為止,一直都還不錯(cuò)。我繼續(xù)創(chuàng)建一個(gè)名為 title 的特征。另外,我將 Sex 映射為一個(gè)二進(jìn)制特征,并創(chuàng)建了一個(gè)按標(biāo)題分組的 Sex 分布表。
我使用決策樹作為機(jī)器學(xué)習(xí)模型。我使用一個(gè)自定義的特征計(jì)算了基尼不純度分?jǐn)?shù),以優(yōu)化樹節(jié)點(diǎn)。這個(gè)自定義特征被定義為幸存的人數(shù)在總登船人數(shù)中的占比。
我用這個(gè)超參數(shù)玩了一段時(shí)間,直到得到滿意的結(jié)果。
在最后一部分,我使用了十個(gè)切分的 k-fold 交叉驗(yàn)證模型。在 k 重交叉驗(yàn)證中,數(shù)據(jù)被劃分為 k 個(gè)子集。現(xiàn)在,holdout 方法被重復(fù) k 次,這樣每次其中一個(gè) k 子集被用作驗(yàn)證集,而另一個(gè) k-1 子集被組合在一起形成訓(xùn)練集。當(dāng)我們使用大多數(shù)數(shù)據(jù)進(jìn)行擬合時(shí),會(huì)顯著地減少偏差,同時(shí)也顯著地減少方差,因?yàn)榇蠖鄶?shù)數(shù)據(jù)也在驗(yàn)證集中使用。
此步驟用于檢查模型是否過擬合。過擬合是指對(duì)訓(xùn)練集上的數(shù)據(jù)建模得太好的模型。這種模型不適用于新數(shù)據(jù),過擬合會(huì)對(duì)模型的泛化能力產(chǎn)生負(fù)面影響。
過擬合就像學(xué)校里的學(xué)生記憶概念而加理解。
最后,在決策樹中的深度是不同的,讓我們看看模型的準(zhǔn)確性。
結(jié)果
結(jié)論
我認(rèn)為,對(duì)于一個(gè)正在踏上數(shù)據(jù)科學(xué)/機(jī)器學(xué)習(xí)之旅的人來說,這場(chǎng)比賽是一個(gè)很好的起點(diǎn)。一個(gè)人可以玩不同的分類模型,如 logistic 回歸,隨機(jī)森林,樸素貝葉斯,支持向量機(jī)等。這場(chǎng)比賽應(yīng)該是一個(gè)很好的試驗(yàn)臺(tái),你還可以嘗試一些更復(fù)雜的算法,如 xgboost,自動(dòng)編碼,梯度增強(qiáng),神經(jīng)網(wǎng)絡(luò)或以上算法的集合。
相應(yīng)的源代碼可以在這里找到:https://github.com/abhinavsagar/Kaggle-Titanic-Solution?source=post_page-----7716386ba298----------------------
當(dāng)然,如果同學(xué)們已經(jīng)學(xué)過這個(gè)經(jīng)典項(xiàng)目了,需要進(jìn)一步提高怎么辦?為滿足大家的需求,AI 研習(xí)社最新上線了一個(gè)有趣的比賽——英文垃圾信息分類挑戰(zhàn)賽!
參賽地址:https://god.yanxishe.com/11
大賽簡(jiǎn)介
數(shù)據(jù)集
本次比賽數(shù)據(jù)來源于 SMS Spam Collection,感謝新加坡國立大學(xué)靳民彥教授對(duì)本次比賽提供的支持!
在這個(gè)數(shù)據(jù)集中,訓(xùn)練集共3450條數(shù)據(jù),測(cè)試集1672。
數(shù)據(jù)集下載鏈接:https://dwz.cn/NaPIpNg7 。
比賽任務(wù)
正確識(shí)別測(cè)試集樣本數(shù)是否為垃圾信息(0是正常短信,1是垃圾短信)。
比賽獎(jiǎng)金
本次比賽共設(shè)置3種獎(jiǎng)項(xiàng),獎(jiǎng)金將在比賽后提現(xiàn)時(shí)發(fā)放到微信零錢。
1.參與獎(jiǎng)(Participation Award)
金額:占總獎(jiǎng)金的30%;
獲獎(jiǎng)人數(shù):所有人(每人僅能獲得一次參與獎(jiǎng));
獲獎(jiǎng)條件:提交結(jié)果大于標(biāo)準(zhǔn)分,標(biāo)準(zhǔn)分=90;
R為得分區(qū)間系數(shù),R1(0.45)、R2(0.2)、R3(0.15)、R4(0.12)、R5(0.08);
money為已經(jīng)發(fā)放的參與獎(jiǎng)獎(jiǎng)金;
2.突破獎(jiǎng)(Prizes)
金額:占總獎(jiǎng)金20%;
獲獎(jiǎng)人數(shù):所有人;
score為參數(shù)選手得分,N表示第N次更新排行榜;Prizes_N-1表示:排行榜更新后已發(fā)放的突破獎(jiǎng)金。
3.排名獎(jiǎng)(Ranking Award)
金額:占總獎(jiǎng)金50%;
獲獎(jiǎng)人數(shù):得分前5名
T為獎(jiǎng)金時(shí)間系數(shù),比賽上線第一周、一個(gè)月,T(周)=0.5,T(月)=0.5;
K為排名獎(jiǎng)金分配系數(shù),前5名分配系數(shù)分別為0.45、0.2、0.15、0.12、0.08;
評(píng)審標(biāo)準(zhǔn)
我們將會(huì)對(duì)比選手提交的csv文件,確認(rèn)正確識(shí)別短信數(shù)據(jù):
True:模型分類正確數(shù)量
Total :測(cè)試集樣本總數(shù)量
參賽條件
歡迎所有在校學(xué)生、在職工程師和AI愛好者參賽!歡迎點(diǎn)擊:https://god.yanxishe.com/11 訪問相關(guān)頁面,查看比賽詳情~
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。