決策樹實戰:Titanic 生還預測

1 Titanic: Machine Learning from Disaster

該問題是數據科學競賽網站 kaggle 的入門題,其內容為根據乘客的信息預測是否獲救。本例僅很淺顯的介紹決策樹用於數據挖掘的過程。

2 數據

數據可從 kaggle 下載,利用 Pandas 讀入數據,顯示如下。

圖1. 訓練數據

共 11 個屬性和 1 個標籤。乘客的 11 個屬性分別為:

  • PassengerId:乘客ID
  • Pclass: 艙位等級
  • Name:姓名
  • Sex:性別
  • Age:年齡
  • SibSp:同輩親戚個數
  • Parch:不同輩親戚個數
  • Ticket:票號
  • Fare:票價
  • Cabin:客艙號
  • Embarked:登船港口

1 個標籤為是否獲救:

  • (Survived = 0)
  • (Survived = 1)

這裡很簡單的處理特徵選取的問題,根據猜測,影響是否獲救的因素應該主要跟以下幾個因素有關:艙位等級、性別、年齡和票價。主要使用上述4個特徵,先查看以下這 4 個變數的情況以及和獲救的關係。

圖2. 各因素與獲救的關係

可以看到:

  • 頭等艙的生還率最高,生還率隨著艙位的降低而降低;
  • 大概 70% 的女性獲救,明顯高於男性;
  • 票價最高的組生還率明顯高於票價最低的組,該因素與艙位等級應有相關性;
  • 小孩生還率高於其他年齡組,施救原則應該是老幼婦女優先,猜測由於年老行動不便,老年人生還率低於其他年齡組。

考慮到票價和艙位等級相關,去除票價,我們採用三個屬性,利用決策樹演算法預測生還情況。

3 決策樹

在利用 3 屬性標籤訓練決策樹之前,需要對數據進行預處理,包括對缺失值的填充和性別字元處理。我們將缺失的年齡信息填充為平均年齡,將性別轉換為 0 和 1。利用 sklearn 生成的決策樹,如圖。

決定是否生還最重要的屬性為 Sex,其次分別為艙位等級和年齡。圖中藍色和淺藍色部分為生還,其他為不幸遇難。

生成模型之後,我們對模型進行評估,預測精度約在 80%。

推薦閱讀:

選擇:五大決策心態
決策樹及其變種演算法
聊聊機器學習中的那些樹
決策樹的優化 這一刀該不該剪?
淺入淺出:決策樹

TAG:決策樹 | 機器學習 | 數據挖掘 |