■ SWPC
■ Terence, Huang
■ 2017/05/25
從統計到資料科學
自我介紹
2
學經歷
緯創資通 高級工程師 (2015/3 ~)
長庚醫院 研究助理 (2013/9 ~2014/11)
中山大學 應數系統計碩士 (2011/9 ~ 2013/7)
高雄師大 數學系學士 (2005/9 ~ 2009/7)
獲獎
2017 台南智慧黑客松智慧醫療組第二名
2012 中山高大統計新秀
Terence Huang
Data Scientist
3
• 《哈佛商業評論》宣布,「Data Scientist,資料科學
家」是二十一世紀最性感的職業。
• 所謂性感,既代表著難以名狀的誘惑,又說明了大家都
不知道它幹的是什麼
• 統計知識 + 科學經驗 + 工程經驗 = 資料科學家
1. 資料科學家的分析工具是?
2. 資料大到 Excel 開不了?
3. 資料格式長的好奇怪!!?
資料大到一台電腦存不下?
4. 資料大到一台電腦算不下?
5. 式子太複雜算太久?
6. 資料在哪裡?
7. 如何和別人一起寫程式?
8. Example
→ R, python
→ SQL
→ JSON, XML
NoSQL
→ Spark
→ Deep Learning & GPU
→ Crawler
→ Github
Outline
4
資料科學家的分析工具是?
5
R v.s. Python
6
網路上很多比較文了
自己爬文吧
R v.s. Python
7
時機 Statistical Analysis Computer Science
優點 畫圖超方便 膠水語言真不是蓋的
抱怨 結構很醜很 Geek 有些套件超難裝的
資料大到 Excel 開不了?
8
SQL, Structure Query Language
9
• SQL:用於資料庫中的標準資料查詢語言
CREATE TABLE new
SELECT t1.id, t1.age, t1.sex, t2.income
FROM old_A as t1, old_B as t2
WHERE t1.id = t2.id
SQL, Structure Query Language
10
• 常見的 SQL Database
– Postgres SQL + pgadmin (GUI)
– MySQL + workbench (GUI)
• 真的不想裝 Database (見附錄)
– SAS EG
– Azure Machine Learning
SQL, Structure Query Language
11
• SQL 基礎上為 7 個指令,固定的輸入位置和執行順序
順序 位置 意義
1 CREATE 放新表格的名字
6 SELECT 選需要的變數
2 FROM 從那些表格得到資料,會牽涉到 JOIN
3 WHERE 條件式篩選資料,ex. 年紀 > 60
4 GROUP BY 分群計算,ex. 總和
5 HAVING 篩選分群計算的結果,ex. 總和 > 60
7 ORDER BY 排序資料
SQL, Structure Query Language
12
• Example: 從舊表格部分的欄位建立新表格
old_A
id area age sex
1 S 5 male
2 N 20 female
3 S 30 male
4 S 10 female
5 N 60 male
6 E 90 female
new
id area
1 S
2 N
3 S
4 S
5 N
6 E
SQL, Structure Query Language
13
• Example: 從舊表格部分的欄位建立新表格
• A:
– Note.選擇所有或指定 table 中所有的欄位
CREATE TABLE new
SELECT t1.id, t1.area
FROM old_A as t1
SELECT t1.*
SQL, Structure Query Language
14
• 資料科學家三大基本工具
• 當你學會了基本的指令後
請追求更快更簡潔更自動化的寫法
資料格式長的好奇怪!!?
資料大到一台電腦存不下?
15
JSON & XML
16
• 除了用空白、逗號分開的 txt, csv, … 之外
• 還有 Key-Value 的存法
FirstName lastName
Anna Clayton
Alex Clayton
Excel
JSON & XML
17
• 為什麼 Key-Value 的存法會流行起來
– 以大賣場的資料為例,用 csv 存起來
NoSQL, Not only SQL
18
• NoSQL:
– 通常不會強制執行結構描述
– 會使用分區索引鍵來擷取值、欄集,或半結構化的 JSON、
XML 或其他包含相關項目屬性的文件
– 更靈活的水平擴展資料模型
但犧牲一些關聯式資料庫管理系統 (RDBMS) 的 ACID 屬性
NoSQL, Not only SQL
19
• NoSQL 資料儲存模型介紹
– Key-Value database
Redis
– Wide column database
Cassandra、Hbase
– Document database
MongoDB
– Graph database
Neo4j
資料大到一台電腦算不下?
20
Spark
21
Spark 的前身 Hadoop
• HDFS 分散式檔案系統
• MapReduce 平行運算架構
Ref: 認識大數據的黃色小象幫手 –– Hadoop
Spark
22
Spark 的前身 Hadoop
• HDFS 分散式檔案系統
– 叢集系統 (cluster system)
– 一個機器老大 (Master Node)
用「NameNode」監視小弟
– 許多機器小弟
(Slave/Worker Node)
用「DataNode」放資料
– 資料分割成數小塊 (block)
每小塊拷貝成多份
Spark
23
Spark 的前身 Hadoop
• MapReduce 平行運算架構
– Map (映射) + Reduce (歸納)
– 類似於演算法中個別擊破
ie. 將問題分解成很多個
小問題之後再做總和
Spark
24
• 正式進入 Spark
– Hadoop 再進化
– In memory 運算 (RDD/dataframe):運算速度快上100倍
– 降規回硬碟計算 (HDFS):運算速度快上10倍
– 更多的 MapReduce function
– Spark SQL
– 機器學習分析工具(MLlib)
– 即時串流處理技術(Spark Streaming)
– 定時/定量 的擷取小批次的串流資料,以排程能力來執行分析
式子太複雜算太久?
25
Deep Learning & GPU
26
• 大部分的工具都是單核心單線程運算
– ex. R, python
– 一個程式只用一個 CPU跑不到 0.1 秒,用不到多少資源
所有程式都在排隊
可以平行跑的也一樣
– 開大絕
把所有 CPU都拿下來用
– 了不起才 8 顆
– 所以類神經網路以前沒紅
因為跑太慢了…
Deep Learning & GPU
27
• 聽說顯示卡 (GPU) 是多核心運算,每顆都不強
但拿來算個簡單的線性方程式很夠了
• Nvida → CUDA
– C → Caffe
– Python → Theano → Keras
→ Tensorflow → Keras & Tflearn & Tensorlayer
Deep Learning & GPU
28
• CNN (Convolution Neural Network)
Deep Learning & GPU
29
• RNN (Recurrent Neural Network)
資料在哪裡?
30
Crawler & Text & Image & …
31
• 網路、論壇、BBS 站、Dcard、…,都是資料來源
• 數字、文字、圖片、聲音、影像,都是可用資料
(只是可能要先轉成“類別””連續”變數)
• 對著網頁按右鍵,“檢視網頁原始碼”給他點下去
(Ctrl + U, F12)
Crawler & Text & Image & …
32
Crawler & Text & Image & …
33
• Python
– 自動爬蟲 Requests, selenium, scrapy
– 網頁剖析 beautifulsoup
• 文字分析
– Jieba
– NLP: POS, named entity recognition, …
– Text mining: BOWs, word2vec, LDA, …
• 影像分析
– Registration, segmentation, …
– ANTs, …
如何和別人一起寫程式?
如何在網路上炫耀我的程式
34
Github
35
• GitHub:透過 Git 進行版本控制的軟體原始碼代管服務
Github
36
• GitHub:透過 Git 進行版本控制的軟體原始碼代管服務
這麼多!!好難喔!!該學哪些??
37
38
• 忘記在哪聽過,要把資料科學該會的技能都學通
要……
91 年
→ 從股票下手
→ 網路爬蟲
→ Excel, SQL, NoSQL
→ Spark
→ y?
x?
統計 → R
CS, ML → python
1. 我想賺更多的錢,怎麼做?
2. 股票資料哪來?
3. 存在哪裡?
4. 資料更新的速度很快嗎?很大嗎?
5. 我要分析甚麼?
Example
39
你以為在 Windows 上都可以用嗎
40
Linux & VM, virtual machine
41
• 當聽到 Linux 這個單字時,你或許會想像一個滿臉鬍渣
的軟體工程師對著漆黑的螢幕輸入難解的程式碼
• 但很不幸的是,新技術一開始都只支援 Linux 和 Mac
等可以支援到 Windows,至少一年過去了
• 所以還是學一下 Linux 吧
Linux & VM, virtual machine
42
• Virtual machine
– 在作業系統裡面再搞出一個作業系統
ex. 在 Win10 裡面跑 ubuntu
– 不會影響到母系統
ex. 把 ubuntu 玩死了,砍掉重開一個就好
不過之前有備份的話,可以用之前備份
Linux & VM, virtual machine
43
• 如何開始
1. ubuntu16.04 + virtualbox
2. 叫終端機 (terminal) 出來
3. 裝裝 R, Postgres SQL 吧,遇到問題請拜 google 大神
Windows 下
搜尋 → CMD
• FB 社群
– 台灣資料科學同好交流區
– Python Taiwan
– Kaohsiung Python User Group
– GPU Taiwan Facebook
• Taiwan R
– Meetup:Taiwan R User Group / MLDM Monday (Taipei)
– Youtube:TW use-R
• 書, O'Reilly
– Python:深入淺出程式設計, 深入淺出 Python
– SQL:SQL 學習手冊
• 老師們和博班學長姐
學習資源
44
Road to Data Scientist
45
Q&A
46
Thank You!
SQL, Structure Query Language
47
• SAS Enterprice Guide
– 不要執行 SAS 9.x,執行 SAS Enterprice Guide
• 點選 File -> New -> Program 出現指令視窗
– 在頭尾給特定指令,中間區塊可輸 SQL 指令,不需轉換
• 頭: RROC SQL;
• 尾: ;QUIT;
– 執行後可直接看結果
SQL, Structure Query Language
48
• Azure Machine Learning
SQL, Structure Query Language
49
• Azure Machine Learning
• 將 拖曳出來
– 點選左側 Data Transformation -> Manipulation
– 在右側 SQL Query Script 視窗內輸入 SQL 指令
– 僅能從 3 張表格選取資料 (別名分為 t1, t2, t3)

從統計到資料科學

  • 1.
    ■ SWPC ■ Terence,Huang ■ 2017/05/25 從統計到資料科學
  • 2.
    自我介紹 2 學經歷 緯創資通 高級工程師 (2015/3~) 長庚醫院 研究助理 (2013/9 ~2014/11) 中山大學 應數系統計碩士 (2011/9 ~ 2013/7) 高雄師大 數學系學士 (2005/9 ~ 2009/7) 獲獎 2017 台南智慧黑客松智慧醫療組第二名 2012 中山高大統計新秀 Terence Huang
  • 3.
    Data Scientist 3 • 《哈佛商業評論》宣布,「DataScientist,資料科學 家」是二十一世紀最性感的職業。 • 所謂性感,既代表著難以名狀的誘惑,又說明了大家都 不知道它幹的是什麼 • 統計知識 + 科學經驗 + 工程經驗 = 資料科學家
  • 4.
    1. 資料科學家的分析工具是? 2. 資料大到Excel 開不了? 3. 資料格式長的好奇怪!!? 資料大到一台電腦存不下? 4. 資料大到一台電腦算不下? 5. 式子太複雜算太久? 6. 資料在哪裡? 7. 如何和別人一起寫程式? 8. Example → R, python → SQL → JSON, XML NoSQL → Spark → Deep Learning & GPU → Crawler → Github Outline 4
  • 5.
  • 6.
  • 7.
    R v.s. Python 7 時機Statistical Analysis Computer Science 優點 畫圖超方便 膠水語言真不是蓋的 抱怨 結構很醜很 Geek 有些套件超難裝的
  • 8.
  • 9.
    SQL, Structure QueryLanguage 9 • SQL:用於資料庫中的標準資料查詢語言 CREATE TABLE new SELECT t1.id, t1.age, t1.sex, t2.income FROM old_A as t1, old_B as t2 WHERE t1.id = t2.id
  • 10.
    SQL, Structure QueryLanguage 10 • 常見的 SQL Database – Postgres SQL + pgadmin (GUI) – MySQL + workbench (GUI) • 真的不想裝 Database (見附錄) – SAS EG – Azure Machine Learning
  • 11.
    SQL, Structure QueryLanguage 11 • SQL 基礎上為 7 個指令,固定的輸入位置和執行順序 順序 位置 意義 1 CREATE 放新表格的名字 6 SELECT 選需要的變數 2 FROM 從那些表格得到資料,會牽涉到 JOIN 3 WHERE 條件式篩選資料,ex. 年紀 > 60 4 GROUP BY 分群計算,ex. 總和 5 HAVING 篩選分群計算的結果,ex. 總和 > 60 7 ORDER BY 排序資料
  • 12.
    SQL, Structure QueryLanguage 12 • Example: 從舊表格部分的欄位建立新表格 old_A id area age sex 1 S 5 male 2 N 20 female 3 S 30 male 4 S 10 female 5 N 60 male 6 E 90 female new id area 1 S 2 N 3 S 4 S 5 N 6 E
  • 13.
    SQL, Structure QueryLanguage 13 • Example: 從舊表格部分的欄位建立新表格 • A: – Note.選擇所有或指定 table 中所有的欄位 CREATE TABLE new SELECT t1.id, t1.area FROM old_A as t1 SELECT t1.*
  • 14.
    SQL, Structure QueryLanguage 14 • 資料科學家三大基本工具 • 當你學會了基本的指令後 請追求更快更簡潔更自動化的寫法
  • 15.
  • 16.
    JSON & XML 16 •除了用空白、逗號分開的 txt, csv, … 之外 • 還有 Key-Value 的存法 FirstName lastName Anna Clayton Alex Clayton Excel
  • 17.
    JSON & XML 17 •為什麼 Key-Value 的存法會流行起來 – 以大賣場的資料為例,用 csv 存起來
  • 18.
    NoSQL, Not onlySQL 18 • NoSQL: – 通常不會強制執行結構描述 – 會使用分區索引鍵來擷取值、欄集,或半結構化的 JSON、 XML 或其他包含相關項目屬性的文件 – 更靈活的水平擴展資料模型 但犧牲一些關聯式資料庫管理系統 (RDBMS) 的 ACID 屬性
  • 19.
    NoSQL, Not onlySQL 19 • NoSQL 資料儲存模型介紹 – Key-Value database Redis – Wide column database Cassandra、Hbase – Document database MongoDB – Graph database Neo4j
  • 20.
  • 21.
    Spark 21 Spark 的前身 Hadoop •HDFS 分散式檔案系統 • MapReduce 平行運算架構 Ref: 認識大數據的黃色小象幫手 –– Hadoop
  • 22.
    Spark 22 Spark 的前身 Hadoop •HDFS 分散式檔案系統 – 叢集系統 (cluster system) – 一個機器老大 (Master Node) 用「NameNode」監視小弟 – 許多機器小弟 (Slave/Worker Node) 用「DataNode」放資料 – 資料分割成數小塊 (block) 每小塊拷貝成多份
  • 23.
    Spark 23 Spark 的前身 Hadoop •MapReduce 平行運算架構 – Map (映射) + Reduce (歸納) – 類似於演算法中個別擊破 ie. 將問題分解成很多個 小問題之後再做總和
  • 24.
    Spark 24 • 正式進入 Spark –Hadoop 再進化 – In memory 運算 (RDD/dataframe):運算速度快上100倍 – 降規回硬碟計算 (HDFS):運算速度快上10倍 – 更多的 MapReduce function – Spark SQL – 機器學習分析工具(MLlib) – 即時串流處理技術(Spark Streaming) – 定時/定量 的擷取小批次的串流資料,以排程能力來執行分析
  • 25.
  • 26.
    Deep Learning &GPU 26 • 大部分的工具都是單核心單線程運算 – ex. R, python – 一個程式只用一個 CPU跑不到 0.1 秒,用不到多少資源 所有程式都在排隊 可以平行跑的也一樣 – 開大絕 把所有 CPU都拿下來用 – 了不起才 8 顆 – 所以類神經網路以前沒紅 因為跑太慢了…
  • 27.
    Deep Learning &GPU 27 • 聽說顯示卡 (GPU) 是多核心運算,每顆都不強 但拿來算個簡單的線性方程式很夠了 • Nvida → CUDA – C → Caffe – Python → Theano → Keras → Tensorflow → Keras & Tflearn & Tensorlayer
  • 28.
    Deep Learning &GPU 28 • CNN (Convolution Neural Network)
  • 29.
    Deep Learning &GPU 29 • RNN (Recurrent Neural Network)
  • 30.
  • 31.
    Crawler & Text& Image & … 31 • 網路、論壇、BBS 站、Dcard、…,都是資料來源 • 數字、文字、圖片、聲音、影像,都是可用資料 (只是可能要先轉成“類別””連續”變數) • 對著網頁按右鍵,“檢視網頁原始碼”給他點下去 (Ctrl + U, F12)
  • 32.
    Crawler & Text& Image & … 32
  • 33.
    Crawler & Text& Image & … 33 • Python – 自動爬蟲 Requests, selenium, scrapy – 網頁剖析 beautifulsoup • 文字分析 – Jieba – NLP: POS, named entity recognition, … – Text mining: BOWs, word2vec, LDA, … • 影像分析 – Registration, segmentation, … – ANTs, …
  • 34.
  • 35.
    Github 35 • GitHub:透過 Git進行版本控制的軟體原始碼代管服務
  • 36.
    Github 36 • GitHub:透過 Git進行版本控制的軟體原始碼代管服務
  • 37.
  • 38.
  • 39.
    → 從股票下手 → 網路爬蟲 →Excel, SQL, NoSQL → Spark → y? x? 統計 → R CS, ML → python 1. 我想賺更多的錢,怎麼做? 2. 股票資料哪來? 3. 存在哪裡? 4. 資料更新的速度很快嗎?很大嗎? 5. 我要分析甚麼? Example 39
  • 40.
  • 41.
    Linux & VM,virtual machine 41 • 當聽到 Linux 這個單字時,你或許會想像一個滿臉鬍渣 的軟體工程師對著漆黑的螢幕輸入難解的程式碼 • 但很不幸的是,新技術一開始都只支援 Linux 和 Mac 等可以支援到 Windows,至少一年過去了 • 所以還是學一下 Linux 吧
  • 42.
    Linux & VM,virtual machine 42 • Virtual machine – 在作業系統裡面再搞出一個作業系統 ex. 在 Win10 裡面跑 ubuntu – 不會影響到母系統 ex. 把 ubuntu 玩死了,砍掉重開一個就好 不過之前有備份的話,可以用之前備份
  • 43.
    Linux & VM,virtual machine 43 • 如何開始 1. ubuntu16.04 + virtualbox 2. 叫終端機 (terminal) 出來 3. 裝裝 R, Postgres SQL 吧,遇到問題請拜 google 大神 Windows 下 搜尋 → CMD
  • 44.
    • FB 社群 –台灣資料科學同好交流區 – Python Taiwan – Kaohsiung Python User Group – GPU Taiwan Facebook • Taiwan R – Meetup:Taiwan R User Group / MLDM Monday (Taipei) – Youtube:TW use-R • 書, O'Reilly – Python:深入淺出程式設計, 深入淺出 Python – SQL:SQL 學習手冊 • 老師們和博班學長姐 學習資源 44
  • 45.
    Road to DataScientist 45
  • 46.
  • 47.
    SQL, Structure QueryLanguage 47 • SAS Enterprice Guide – 不要執行 SAS 9.x,執行 SAS Enterprice Guide • 點選 File -> New -> Program 出現指令視窗 – 在頭尾給特定指令,中間區塊可輸 SQL 指令,不需轉換 • 頭: RROC SQL; • 尾: ;QUIT; – 執行後可直接看結果
  • 48.
    SQL, Structure QueryLanguage 48 • Azure Machine Learning
  • 49.
    SQL, Structure QueryLanguage 49 • Azure Machine Learning • 將 拖曳出來 – 點選左側 Data Transformation -> Manipulation – 在右側 SQL Query Script 視窗內輸入 SQL 指令 – 僅能從 3 張表格選取資料 (別名分為 t1, t2, t3)