Upload
meng-ru-tsai
View
703
Download
7
Embed Size (px)
Citation preview
初探「機器學習」
蔡孟儒 (Raymond)
資深協理
開發體驗暨平台推廣事業部
台灣微軟
關於我…
• 建國中學、輔仁大學應用數學系、交通大學工業工程研究所。1999年於南加大取得 M.S. Degree in Computer Science 後,留美由一間小新創公司的軟體工程師開始職涯,後歷任 US. Interactive Inc. 資深工程師、Sierra Systems 技術主管。
• 2005 返台並加入台灣微軟,目前擔任「開發體驗暨平台推廣事業部」資深協理;負責最新或未上市的微軟技術,於新創公司及學界的導入及應用。
• 具多年協助大型企業及新創公司導入新一代技術平台之經驗,如Microsoft Azure 公有雲解決方案、企業搜尋解決方案、企業單一入口及 Windows Apps、Kinect、Windows 10 等。
大數據時代的到來
物聯網
音訊 / 視頻
系統日誌
文字/圖片
社會輿論
整合資料市場
整合e化政府
天氣
維基 / 微博點擊流
感測器/ 射頻識別 / 設備
空間 & GPS 定位座標
WWW 2.0手機
廣告 合作電子商務
數位行銷
搜索行銷
網路日誌
推薦
企業資源規劃 / 客戶關係管理
銷售管道
應收款管理
薪酬管理
庫存管理
聯繫管理
交易追蹤
TeraByte(10E12)
GigaByte(10E9)
ExaByte(10E18)
PetaByte(10E15)
快速增長 多變 多樣性
大數據
1980190,000$
20100.07$
19909,000$
200015$
企業資源規劃 / 客戶關係管理
WWW 2.0 物聯網
Agenda
• 什麼是 Machine Learning (機器學習)
• 使用 Azure ML 進入機器學習
• Azure ML 演算法、實例、架構、R 語言
• Microsoft BizSpark: 微軟新創火花計劃介紹
到底什麼是 Machine Learning?
機器學習並非新的觀念或技術,多年前電腦科學家們即已定義了何謂Machine Learning:
“A computer program is said to learn from experience E with respect
to some class of tasks T and performance measure P, if its performance
at tasks in T, as measured by P, improves with experience E”
- Tom M. Mitchell
“The goal of machine learning is to program computers to use example
data or past experience to solve a given problem.”
– Introduction to Machine Learning, 2nd Edition, MIT Press
維基百科上的 Machine Learning
• Machine learning is a scientific discipline that explores
the construction and study of algorithms that can learn
from data.
• the desired output:
– Classification (分類)
– Regression (迴歸分析)
– Clustering (分群)
– Density estimation
– Dimensionality Reduction
classification
clustering
(linear) regression
http://en.wikipedia.org/wiki/Machine_learning
呃…可以用白話的中文再講一次嗎?
「機器學習,可藉由電腦系統分析歷史資料,來預測未來趨勢和行為。」
所以重點是…?
重點即在於「預測」,若能預期事情將如何發展,企業或個人即能早期投資以開創新商機、或是迴避重大風險的發生。
• 預測使用者行為來調整商業行為– 根據用戶喜好推薦商品– 預測機器損壞的時間
• 分類– 判斷信件是否為垃圾郵件– 判斷客戶是否會續約
• 分群– 社群網路區分性質相近的會員– 精準廣告
7
為何「機器學習」最近愈來愈紅?
• 早期要實作「機器學習」進行實務應用是相當昂貴的。不但需要高階的硬體設備及複雜的軟體環境,同時還需要深諳統計學、人工智慧等的資料科學家團隊,更遑論隨之而來的管理及作業成本。
• 但隨著公有雲服務 (如 Azure) 讓計算機運算以及儲存成本大幅降低、科學家們持續發展出強固的各種演算法、再加上如 Azure ML 等易用工具的產生,將使用成本、學習成本及管理成本一併大幅下降。即是讓傳統上 resources boundary 的 Machine Learning 應用日漸火紅的主要原因。
8
微軟自己有在用 Machine Learning 嗎?
9
照張狗的照片,辨別出是屬於哪個品種
10
(羅得西亞背脊犬)
https://www.youtube.com/watch?v=zOPIvC0MlA4#t=45
Azure Machine Learning (Azure ML)
• 由微軟建立的機器學習平台
• 依照需求匯入及整理巨量資料
• 套用適用的學習演算法
• 建立自己的訓練模型
• 以 Web Service 發佈
Azure Machine Learning (Azure ML)
Azure Machine Learning 包括了…
• 資料源的存取 (與 Azure SQL Database, Azure
Storage 以及 HDInsight 深度整合)
• 資料清理 (抽樣、樣本切割、計算欄位…)
• 敘述性統計
• 有效變數選取
• 建立預測模型
• 評估預測模型
• 應用預測模型
What’s your problem?
「一個腳踏車行,想根據來店客人的基本資料,預測 (predict) 此客人是否會買腳踏車。」
用什麼來學? 1 萬個客人的歷史紀錄 (CSV 格式,可在此下載: http://1drv.ms/1xJuarR)
15
http://1drv.ms/1xJuarR
Azure 「機器學習」初體驗
[小技巧] 善用左上角的 Search 功能,可直接找到元件!
16
在 Azure ML 中評估學習成效
模型優劣的判定並非單一指標可決定。
• ROC 曲線:其基本原則是,若曲線愈往左上方移動,此模型的準確率愈高
17
• ROC
• Precision/Recall
• Lift Curve
單純由人眼來判斷當然是不準確的,故我們可以計算 ROC 曲線下方的面積,並以 AUC 來表示 (此例中 AUC = 0.677),原則即是愈大愈好。
Azure Machine Learning 的擴充性• 資料科學家不必自己從頭開始撰寫程式
– 支援 R 語言,既有的 R 程式碼可直接拖放並執行,你也可在其中自行撰寫 R 程式碼;這兩種方式均支援超過 410 個 R 套件 (on top of R 3.1.0 as of now), CRAN packages, plyr and dplyr, car, datasets, HMisc, MASS, Intel Math Kernal Library,並可使用諸如 ggplot2 之 R plotting 視覺化及 rpart, nnet, survival, boot 等資料探勘工具。
– 可立即混搭預先安裝妥當且最佳化過的演算法
– 已由 XBOX Live、Microsoft Research 及 Bing 驗證
• 運用 Microsoft Azure 的公有雲基礎建設處理巨量資料,包括 HDInsight、Hadoop 巨量資料解決方案、SQL Database 和虛擬機器。
Take a break…常見問題Q: Machine Learning 很神嗎?A: 機器學習其實跟我們人類學習一樣,你餵給它什麼資料它就學什麼,學習資料夠不夠多、學習方法(學習演算法)好不好、是否有抓到重點(選擇訓練的資料欄位)等等都會影響學習的成果,機器學習只是可以大量、快速學習,不代表它就一定會完全正確喔。
Q: 用 Azure ML 需要事先安裝軟體嗎?還是限定作業系統呢?A: Azure ML Studio 是一個完全以 HTML 技術開發的平台,只要在瀏覽器中就可以操作。
Q: 我的資料一定要放在 Azure 上才能學習嗎?A: 在 Azure ML Studio 中的 Data Reader 或 Hive Query 都可以讓您從各個地方將資料透過 HTTP 匯入,並不限制一定得放在 Azure 上。不過 Azure HDInsight、Azure SQL Database 或是 Azure Storage 都很適合處理大數據,也很方便整合。
19
20
談談預測模型
資料分析是關於時間的- Machine Learning 尤其是!
• 建立模型: 歷史資料--結果是已知的
• 應用模型: 現有的資料
• 執行結果: 未來的資料 (下週或是下個月)--結果是未知的
Actions take
place here
Past FuturePresent
Data ends
here
模型穩定性挑戰
錯誤率
模型複雜度
模型測試集的結果
錯誤率
模型複雜度
在此處修剪!因為在此處模型對於未知資料的預測錯誤率最小
Over-fitting
樣本切割 (Split)
Training
Validation
Test
使用訓練組資料建立預測模型
使用鑑校組資料於建模階段評估模型
使用測試組資料驗證模型
建立預測模型
輸入資料集
演算法
模型
26
我該用哪種演算法 (algorithms)?
Azure ML 內建演算法
Azure ML 將內建演算法分為三種類型:
1. Classification (分類)
2. Regression (迴歸分析)
3. Clustering (分群)
27
1. Classification (分類) 演算法
預測結果是屬於哪一種類別的方法。最常見的情境就是二分法了,亦即可以回答 True/False 或 Positive/Negative 的問題,比如:
• 現有的中x電信客戶,會不會轉去遠x電信呢?
• 客戶有沒有潛在升級或加購產品的商機呢?
28
「二分法 (Two-Class)」 Classification 演算法示意圖:
2. Regression (迴歸分析) 演算法
與前者 Classification 方法的不同之處,在於 Regression 演算法通常是預測出一個「數值」。比如:
• 本週台灣股市收盤價是多少?
• 如何根據所在城市、坪數、學區等來預測房價?
29
汽車馬力 (horsepower) 來預測耗油量 (miles per gallon),透過 Linear Regression 演算法的預測示意圖:
3. Clustering (分群) 演算法
通常是用來處理「沒有正確答案」的問題,這種問題該怎麼辦呢?
Clustering 能將有相同特徵者叢集在一塊。比如:Facebook 辨別使用者屬於哪些不同的群組 (運動愛好者、通勤族、蘿莉控…等),以滿足廣告投放商的需求。
30
原始資料,及以 K-means Clustering 分群之後的示意圖:
練習題:你覺得以下範例是利用哪種類型的演算法?
31
小整理:我該用哪類 Azure ML 演算法 (algorithms)?
Rule of thumb:
• 如果您的問題能夠以 Yes/No 來回答 => Classification (分類)
• 如果您期望的解答是一個數值的話 => Regression (迴歸分析)
• 如果您想將具相同特性的資料群集分類 => Clustering (分群)
32
演算法小註
• Azure ML 對演算法分類中,前兩類 (Classification & Regression) 都是屬於「監督式學習」(Supervised Learning);Clustering 則是屬於「非監督式學習」(Unsupervised Learning) 的範疇。
• Azure ML 是根據學習的方法 (如監督式學習/非監督式學習)、以及預期的產出 (output) 類型來作分類。各位應已注意到,如決策樹(Decision Tree) 或類神經網路 (Neural Network) 等,可分別被應用到Classification 或是 Regression 的類別中,以解決不同類型的問題。
33
34
強固的演算法
新型態的決策樹
Decision Tree
決策樹Decision Jungle
決策叢林Decision Forest
決策森林
類神經網路
36
Back-Propagation (倒傳遞類神經網路)
K-means 分群演算法
37
假設我們最後想分成三群 (k=3)
Step 1. 隨機選 3 點:
K-means 分群演算法
38
Step 2. 其他所有的點,與這 3 點的「距離」最小者,視為同一群
K-means 分群演算法
39
Step 3. 各別找出這三群的中心點,設為最新的 3 個點
重複 Step 2 & 3~
雲端服務拉低創業門檻
40
http://news.microsoft.com/features/wherever-there-is-data-
azure-machine-learning-can-make-business-and-life-better/
Lesson Learned: 混合雲 + ML 模型驗證 + 資料選擇 + 跨平台
41
Azure Machine Learning計費模式
實驗設計及模型驗證:
發佈 Web Service 後,被使用收費:
依每 1,000 次預測約台幣 5 塊多來計費,同時依計算時數來計費,每小時約 23 塊台幣。
若少於 1,000 次預測,或不足的計算時數,則按比例計費。
在你按下 “RUN” 之後開始記時。
上傳至多 10GB 的資料、在ML Studio 中作預測及測試、發佈 Web Service 服務等,則都是免費
Microsoft BizSpark微軟新創火花計畫 http://aka.ms/twBizSpark
軟體
• 3 年的MSDN 訂閱服務
• 每個月NT$4,700 元的Microsoft Azure免費額度
• 一年Windows 市集開發帳號
• 2個MSDN professional的技術資源
• 教育訓練
• BizSpark會員專屬聚會
• BizSpark Connect.
• BizSpark.com及http://aka.ms/twBizSpark
• 台灣區的行銷資源
技術支援 能見度
Microsoft BizSpark 是一個全球的方案,旨在協助新創公司發展成長,方案包含提供免費的軟體及雲端資源、技術支援和行銷資源。完全免費! 只要你符合底下資格公司成立小於5年年收入小於一百萬美金以開發軟體產品或服務為公司的主要營業項目
Microsoft VenturesIncubating innovation ecosystem
Microsoft Ventures
Community(BizSpark, etc.)
Accelerator
HiPoStartups
Tiered programs Global Operation
Nurturing industry innovation
Microsoft Ventures
慧德灵智
85 startups in 5 classes,covering:Mobile internet:Gaming, Music, Reading, Picture services
Technical infrastructure: Mobilization, Automated testing, APM,
Information Security, Video Services
Enterprise SaaS:Digital Marketing, Enterprise SNS, HR, Procurement
Traditional industry digitalization:Petroleum、Agriculture、Finance、Education, Travel, Healthcare, Retail
Technology:Big Data, Mobile, Social Network, Smart Cloud, Smart
Device, IoT, Security
2013.12012.7 2013.7
90%Startups got funded (class
1-5)
19 startups selected
from 700 candidates
in class 5, acceptance
rate < 3%
2014.1
http://www.bnext.com.tw/article/view/id/30809
BizSpark畢業成員入選微軟加速器計劃 (第四期 – FY14 H2)
http://www.youtube.com/watch?v=ybRjHxBzDXUhttps://www.youtube.com/watch?v=ybRjHx
BzDXU#t=113
47
大數據不就是 Hadoop?
Machine Learning 與其他數據分析方法
雲端與本地端的分析架構
雲端服務
使用者端
同步
本地端
SQL Data Sync
SSIS
Machine Learning 與其他資料分析有什麼不同?
Analytics Spectrum 光譜: (愈往右,複雜性愈高!)• Descriptive (描述性的):可以回答 “What happened?” 的問題,以增加對資料的了解程度。
• Diagnostic (診斷性的):可以回答 “Why did it happen?” 的問題,通常用來找出事情發生或出錯的原因。
• Predictive (預測性的):可以回答 “What will happen?” 的問題,也就是預測未來可能發生什麼事。Machine Learning (包含迴歸分析及類神經網路) 即是其中重要的分析方式。
• Prescriptive (規範性的):可以回答 “What should I do?” 的問題,也就是不但要預測未來,還要知道若作出某決策後的結果。
49
學術觀點:哪些問題,是適合讓 Machine Learning 解決的?
台灣大學資訊工程系林軒田老師「Machine Learning Foundations」:
• 若有些問題,是需要我們設計一個非常複雜的系統來解決的話,那麼Machine Learning 即能提供另一種解法,而不需實際設計出這樣一個系統。
50
-當人們無法定義出所有可能的規則時 (比如要在火星上探險)、-當沒有簡單、甚或不完全的解法方案時 (如語音/視覺識別)、-需要超快速的判斷時 (如極短線股票交易)、-或是資料量大到人為經驗亦無法負荷的程度(如消費市場行銷策略)
Traditional BI
Modern Predictive BI
資料源
資料源
資料倉儲
資料倉儲
BI Modeling
ETL
ETLBI Modeling
Visualize
Visualize
Machine LearningHadoop
完整的數據分析生命週期
Cloud
53
整合R語言
R語言
• R語言是由紐西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman開發的開源統計語言
• 能夠進行統計、預測模型以及資料視覺化
http://www.r-project.org/
如何整合R語言
輸入資料集1輸入資料集2
Zip
R Device輸出資料集
dataset1 <- maml.mapInputPort(1)
dataset2 <- maml.mapInputPort(2)
data.set = rbind(dataset1, dataset2);
maml.mapOutputPort("data.set");
輸入
輸出
檢視預裝的R Package
data.set<-data.frame(installed.packages())
maml.mapOutputPort("data.set");
如何加入自訂R Packages
• 在電腦本機安裝想要的R Package
• 將R Package原始的Zip檔壓縮為Zip
• 上傳至Azure Machine Learning
開始使用!
• 直接免費試用 Azure Machine Learning (無需信用卡): https://studio.azureml.net– 1 小時的計算時間
– 上傳 50GB 大小的資料集
• 或是加入 BizSpark 新創火花計劃– http://www.microsoft.com/taiwan/bizspark
– 每個月 NT$4,700 元的 Microsoft Azure 免費額度
• 或是註冊 Microsoft Azure 免費試用帳號– http://azure.microsoft.com/zh-tw/pricing/free-trial/
– 使用 Microsoft Account (Windows Live ID) 註冊
在 Azure ML Studio 操作
延伸學習
• Microsoft Azure 機器學習官方學習網站 (含教學影片及文件):http://azure.microsoft.com/zh-tw/documentation/services/machine-learning/
• 尹相志-「當個頂尖雲端資料分析師 - 活用微軟雲端大數據平台,提升企業競爭力」: http://www.microsoftvirtualacademy.com/training-courses/azure-seminar-1009
• O'Rielly 免費電子書下載: “Data Science in the Cloud, with Azure Machine Learning and R.”: http://radar.oreilly.com/2015/01/getting-started-with-data-science-in-the-cloud.html
• 台灣大學資訊工程系林軒田老師 Coursera 線上課程 (中文) https://www.coursera.org/course/ntumlone
• 我的部落格 (Meng-Ru Tsai’s Blog): http://blogs.msdn.com/b/mengtsai/
BizSpark 新創火花計劃: http://www.microsoft.com/taiwan/bizspark
59