Monday, April 24, 2017

AI從頭學(二二):Azure Machine Learning - Clustering

AI從頭學(二二):Azure Machine Learning - Clustering

2017/04/24

前言:

本文跟 ML(AI的一支)、Azure、Python 有關,將同步發表在 FB 相關社群。

-----

Summary:

Machine Learning (ML) 基本上屬於 AI 的一支 [1]。本文主要試圖透過 Python 使用 Azure 的 ML 服務 [2], [3]。本次將介紹 Clustering 的 k-means algorithm [4], [5]。

-----

Outline:

1: Introduction to Data Science
2: Introducing Microsoft Azure Machine Learning
3: Data Preparation
5: Integration with Python
6: Introduction to Statistical and Machine Learning Algorithms
 - Clustering Algorithms

-----

在進入主題之前,我們先介紹 [2] 這本書的架構,參考圖1.1。

前面兩章是簡介。第三章是資料預處理,這一章雖然沒有圖,但很重要。第四章是與 R 的連接,雖然重要,但後續有用到時才會介紹。第五章是透過 Python 使用 Azure 的 ML 服務,這是本次的重點之一。在第六章有各種 ML 演算法,都很重要,本次介紹 Clustering 的 k-means algorithm。

另外第十二章是 recommendation systems,由於這個工作上也有需求,將會在下次專文介紹。



Fig. 1.1. Azure Machine Learning [2].

-----

在進入主題之前,我們還是先簡單介紹一下 ML 的流程,參考圖1.2。首先資料會預處理,然後分成兩群,一群用來訓練 Model,當 Model 訓練完畢,另外一群用來測試。最後評估 Model 是否合用。圖1.3 用到 R,請自行參考。

資料預處理,也可以在跑完後重新做。參考圖2.1,當我們把 dayWeek 這一項移除後,整體的解析(相關度的呈現),就提高了,參考圖2.2。



Fig. 1.2. A generalized model training workflow for Azure ML models, p. 5 [3].



Fig. 1.3. Workflow for an R model in Azure ML, p. 7 [3].



Fig. 2.1. Plot of correlation matrix, p. 16 [3].



Fig. 2.2. Plot of correlation matrix without dayWeek variable, p. 16 [3].

-----

1: Introduction to Data Science

首先定義資料科學,參考圖3.1。廣義的資料科學可包括數學、信號處理、機器學習、科學計算、統計學、作業研究、程式、資料庫、以及語言學。

資料分析可分為四個層次,參考圖3.2。第一是描述,第二是診斷,第三是預測、第四是規範。

描述的話,以分群演算法為例,它將資料自動分成幾群。

診斷的部分先跳過。

預測是重點,這裡有幾個演算法:線性迴歸、邏輯迴歸、神經網路、支持向量機,都是用來預測的。

最後是規範,這裡舉出的例子是 Monte Carlo,這個方法,AlphaGo 也有用到 [6]。

圖3.3舉出一個企業應用的實例。分別用 Churn Model、Segmentation Model、以及 Propensity Model 來幫助企業找出有問題的客戶跟高價值的客戶。這本分別在第九章、第十章、第七章 [2],未來有機會將會一一介紹。

圖3.4是資料科學的循環圖,大體上就是圖1.2不斷循環。



Fig. 3.1. Highlighting the main academic disciplines that constitute data science, p. 4 [2].



Fig. 3.2. Spectrum of all data analysis, p. 5 [2].



Fig. 3.3. A smart telco using prescriptive analytics, p. 6 [2].



Fig. 3.4. Overview of the data science process, p. 13 [2].

-----

2: Introducing Microsoft Azure Machine Learning

在進入 Azure 之前,我們先來看一下 ML,以 Clustering 為範例,分群後配合特徵,這裡是年齡跟玩 game 的強度,則可界定潛在的消費者或客戶,參考圖4.1。

Azure 對於 ML,有提供圖像化的服務,能把圖1.2的演算法,在螢幕上實現,參考圖4.2。訓練好的模型,可以存起來,參考圖4.3,也可以發佈,參考圖4.4。



Fig. 4.1. Simple hypothetical customer segments from a clustering algorithm, p. 15 [2].



Fig. 4.2. Regression Model experiment, p. 37 [2].



Fig. 4.3. The experiment that uses the saved training model, p. 39 [2].



Fig. 4.4. A dialog box that promotes the machine learning model from the staging server to a live production web service, p. 40 [2].

-----

3: Data Preparation 

資料預處理很重要,而且一定會遇到,這裡簡單舉幾個例子:

1. 資料不見了。
2. 資料的值是空的。
3. 有重複的資料。
4. Outliers (跟大部分資料值差距太大的)。
5. 正規化。書中舉出幾個方法可以使用:Zscore、MinMax、Logistic、LogNormal、Tanh。也許這個觀念一時不容易,但這個老師調分數就可以活用了!

-----

5: Integration with Python

要達到客製化的需求,最好還是自己 coding。

圖5.1a是用 Python 存取一個 Azure 上的資料檔,並將其值呈現在螢幕上,圖5.1b則是透過 numpy 與 matplotlib 將資料圖像化。

圖5.2是一個完整的 Python 程式,可以存取兩個資料檔,並對其運算。參考圖5.3。



Fig. 5.1a. Viewing the content of the dataframe, p. 114 [2].



Fig. 5.1b. Using the pandas dataframe plot method, p. 115 [2].



Fig. 5.2a. Complete Python Code for the Experiment, p. 125 [2].



Fig. 5.2b. Complete Python Code for the Experiment, p. 126 [2].



Fig. 5.3. Using the Execute Python Script, p. 128 [2].

-----

6: Introduction to Statistical and Machine Learning Algorithms
 - Clustering Algorithms

本節講解 Clustering 的 k-means algorithm。

以圖6.1a為例,這裡有三群,但是如何寫程式將這三群分開來呢?

1. 如果要分成三群,首先要指定三個群的中心,這個中心可以是隨機指定。

2. 第二個步驟,計算每個點到這三個中心的距離,距離最短者,則屬於這個中心這一群。

3. 群分好了,接下來重新計算這三個群的中心。

4. 重複步驟2跟3。一直到最後,或者誤差很小。

可以參考圖6.1b、6.3a、6.3b的演算法。

圖6.3c是 Python 的實現,原則上只要設定相關的參數即可。



Fig. 6.1a. Dataset for k-means clustering, p. 147 [2].



Fig. 6.1b. Iterations of the k-means clustering algorithm with k=3 in which the cluster centroids are moving to minimize error, p. 147 [2].



Fig. 6.2. The k-means clustering algorithm, p. 335 [4].



Fig. 6.3a. The k-means clustering algorithm, p. 313 [5].



Fig. 6.3b. within-cluster sum of squared errors (SSE), p. 314 [5].



Fig. 6.3c. KMeans class from scikit-learn's cluster module, p. 314 [5].

-----

Clonclusion:

所以,在 Azure 上跑 ML 沒有很難吧!:)

-----

References

[1] AI從頭學(二一):A Glance at Deep Reinforcement Learning
http://hemingwang.blogspot.tw/2017/04/aia-glance-at-deep-reinforcement.html

[2] 2015_Predictive analytics with Microsoft azure machine learning, build and deploy actionable solutions in minutes

[3] 2015_Data Science in the Cloud with Microsoft Azure Machine Learning and R

[4] 2016_Practical Machine Learning

[5] 2015_Python Machine Learning

[6] AI從頭學(一一):A Glance at Deep Learning
http://hemingwang.blogspot.tw/2017/02/aia-glance-at-deep-learning.html

No comments: