有個網站可以讓你作測試。只要依次選擇艙等、性別、年齡、有幾個同行親屬、購買的票價、由哪個港口出發 (不知道的話就隨便選):
然後 Submit,就能得到你的生還機率了:
是的! 11.11% 就是我照實填寫之後得到的生還機率,還幫我加註解說我的生存機會渺茫…><~
反正這預測是免費的,所以您可以多方嘗試,看看哪一種乘客是最有可能存活的。首先,我把性別由 Male 改成 Female:
是的!! 只要變性為女生我就 100% 可以存活了~ XD
(以下開始包含技術內容)
所以這網站是怎麼作預測的?
簡單來說,即是利用了「機器學習」這方式。先將所有鐵達尼號乘客的資料 (data) 拿來作輸入,經過 ML (Machine Learning) 的學習之後,即得到新的預測技能 (skill):
(想先了解一下何謂「機器學習」? 請見 「機器學習」FAQ)
一、取得乘客資料
首先,Kaggle 這網站可以取得當年所有 891 個鐵達尼號的乘客資料 (“train.csv” 檔)。免費下載,以 Excel 打開後如以下:
檢視一下可以發現…
- 有個 “Survived”欄位代表是否生還 (1 表示生還)。
- 各位可先想想,如編號 (PassengerId)、姓名 (Name)、船票序號 (Ticket) 等資料,與最後存活與否,有關連嗎?
- 有些資料是不完整的,如編號 6 的 Age,這部份要如何處理?
二、使用「機器學習」的線上工具 (Azure ML Studio)
各位可直接以瀏覽器打開看看鐵達尼號生存機率的 ML 學習機制,以下我即會簡單介紹一下這張圖。
(想學習如何使用這工具? 請見 Azure 「機器學習」初體驗)
三、資料整理
所謂 Garbage in, garbage out! 原始資料之中有些對預測沒有幫助、或是不完整的地方,我們都可以用簡單拖拉、設定的方式作資料整理。
如:無視 PassengerId, Name 等欄位: (Exclude column names)
又如:將不完整的資料 (missing values) 以中位數 (median) 來代替:
四、建立學習模型
資料整理完後就可開始學習了! 工具內建了不少微軟研究院開發出來的機器學習演算法,使用者只要拖拉合適的演算法進來即可。
如以下鐵達尼號的例子中,用了 2 種演算法來比較哪一個的正確率比較高:
(想了解更多演算法? 請見: 我該用哪種演算法 (algorithms)?)
五、檢視學習成果
就像我們上學要考試一樣,我們也要來檢查這個預測模型的學習績效。
如以下我們可以檢查所有的預測 (Scored Labels) 相對於實際是否生還 (Survived) 的對照圖:
也可利用如 ROC 等方法,以曲線表示相較於亂猜 (45度對角線) 的準確程度:
六、發佈為 Web Service
最後我們當然想作成網站或是 App,讓其他使用者使用。透過發佈為 Web Service 的方式即可讓其他開發者使用你的預測。
![]()
同時還會提供 C#, Python 及 R 語言的 sample code:
![]()
註: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/
