如果你搭上了鐵達尼號,有機會生還嗎?


image

有個網站可以讓你作測試。只要依次選擇艙等、性別、年齡、有幾個同行親屬、購買的票價、由哪個港口出發 (不知道的話就隨便選):

image

然後 Submit,就能得到你的生還機率了:

image

是的! 11.11% 就是我照實填寫之後得到的生還機率,還幫我加註解說我的生存機會渺茫…><~

反正這預測是免費的,所以您可以多方嘗試,看看哪一種乘客是最有可能存活的。首先,我把性別由 Male 改成 Female:

image

是的!! 只要變性為女生我就 100% 可以存活了~ XD

(以下開始包含技術內容)

所以這網站是怎麼作預測的?

簡單來說,即是利用了「機器學習」這方式。先將所有鐵達尼號乘客的資料 (data) 拿來作輸入,經過 ML (Machine Learning) 的學習之後,即得到新的預測技能 (skill):

image

(想先了解一下何謂「機器學習」? 請見 「機器學習」FAQ)

一、取得乘客資料

首先,Kaggle 這網站可以取得當年所有 891 個鐵達尼號的乘客資料 (“train.csv” 檔)。免費下載,以 Excel 打開後如以下:

image

檢視一下可以發現…

  1. 有個 “Survived”欄位代表是否生還 (1 表示生還)。
  2. 各位可先想想,如編號 (PassengerId)、姓名 (Name)、船票序號 (Ticket) 等資料,與最後存活與否,有關連嗎?
  3. 有些資料是不完整的,如編號 6 的 Age,這部份要如何處理?

二、使用「機器學習」的線上工具 (Azure ML Studio)

各位可直接以瀏覽器打開看看鐵達尼號生存機率的 ML 學習機制,以下我即會簡單介紹一下這張圖。

image

(想學習如何使用這工具? 請見 Azure 「機器學習」初體驗)

三、資料整理

所謂 Garbage in, garbage out! 原始資料之中有些對預測沒有幫助、或是不完整的地方,我們都可以用簡單拖拉、設定的方式作資料整理。

如:無視 PassengerId, Name 等欄位: (Exclude column names)

image

又如:將不完整的資料 (missing values) 以中位數 (median) 來代替: 

image

四、建立學習模型

資料整理完後就可開始學習了! 工具內建了不少微軟研究院開發出來的機器學習演算法,使用者只要拖拉合適的演算法進來即可。

如以下鐵達尼號的例子中,用了 2 種演算法來比較哪一個的正確率比較高:

image

(想了解更多演算法? 請見: 我該用哪種演算法 (algorithms)?)

五、檢視學習成果

就像我們上學要考試一樣,我們也要來檢查這個預測模型的學習績效。

如以下我們可以檢查所有的預測 (Scored Labels) 相對於實際是否生還 (Survived) 的對照圖:

image

也可利用如 ROC 等方法,以曲線表示相較於亂猜 (45度對角線) 的準確程度:

image

六、發佈為 Web Service

最後我們當然想作成網站或是 App,讓其他使用者使用。透過發佈為 Web Service 的方式即可讓其他開發者使用你的預測。

image

同時還會提供 C#, Python 及 R 語言的 sample code:

image

註:Azure ML Studio 是微軟所開放出來的「機器學習」工具,主要是設計讓非資料科學家也能輕鬆學習使用。任何一種瀏覽器上都可執行,無需信用卡,登入 Microsoft Account 之後即可。

延伸閱讀:

1. Tutorial: Building a classification model in Azure ML

2. BUILDING AND DEPLOYING A CLASSIFICATION MODEL IN AZURE ML: A Step-By-Step Tutorial

3. 本部落格 Machine Learning 系列文章 (中文): http://blogs.msdn.com/b/mengtsai/archive/tags/machine+learning/

4. Microsoft Azure 機器學習官方學習網站 (含教學影片及文件): http://azure.microsoft.com/zh-tw/documentation/services/machine-learning/

 

Comments (0)

Skip to main content