Machine Learning Concept

ML(Machine Learning)
an alternative route to build complicated systems
在多個複雜條件的情況下,人類無法在短時間內從中訂義規則時,就可以讓機器自動去發現和學習規則

應用時機可歸納為以下三個關鍵
要有潛在規則可以讓機器學
有規則,但很難或不知如何把規則寫出
要有資料

role of ML
data->ML->skill
ex:
stock data->ML->investment gain


……

數據分析相關領域

DM(data mining):
從資料中找出有價值的property(特性), ex: 購物籃分析

ML(machine learning):
從資料中計算並找出接近理想的結果(找出好的hypothesis), ex:stock prediction
ps:DM和ML常互相幫助

AI(Artificial intelligence):
透過計算達到有智慧行為 ex: chess playing
ps:ML是實現AI的一種方法

Statistics:
從資料中計算某些行為的機率
ps:統計是實現ML的一種方法


…………………………………………………….

machine learning常見定義
data: D:{(x1,y1),(x2,y2),…,}, x1表示第1筆資料,y1表示第1筆資料的結果
input: {x1,x2,…}=X集合 ,
ex:customer data ,
其中各別的x也包含各種維度
x1={f1,f2,….} ,f1表示第一個維度,
ex: tom={18years old, 90K a month, …}
output: {y1,y2,…}=Y集合 ,
ex:good/bad
target function,理想的結果,
定義為 f: X集合 -> Y集合
也就是f可以將input的X正確對應到output的Y
final hypothesis,一個skill讓機器學到的最後結果,
定義為 g:X集合->Y集合
也就是g會根據input的X對應到output的Y


learning model=A and H
H:hypothesis set,各種可能的集合,g屬於H集合中
A:learnning algorithm,學習演算法,要從H中選一個最符合的結果
structure: D -> A(H) -> g similar to f
ps:g(算出來的結果)越接近f(理想結果)表示結果越好

………………………………………………………………………………………………………….


classficiation by input
給ML學的資料,常見有以下三種
concrete feature
raw feature
abstract feature

concrete feature
data is like feature1,feature2,…featureN
ex:
(size,mass) for coin classification

raw feature
picutre recognition: ex digit recognition problem
speech recognition
ps:
it need extracted like below
raw feature -> concrete feature

abstract feature
it is more difficult to extract concreate than raw feature
ex:
extracted method maybe like below
some feature found by machine,some feature make by human

ps:
feature engineer
a method is that how to create concrete feature
ex:deep learnning (how does extarct to concreate feature from many data by unsupervised learning )

………………………………………………………………………………………………

classficiation by label
根據不同的資料label的學習方式,常見有以下幾種
supervised learning:  學習的資料來源,全部有明確的label 
unsupervised learning 學習的資料來,全部沒有label 
semi-supervised learning 學習的資料來源,部份有明確的label 
reinforcement learning  學習的資料來源全部都是不明確的label 

supervised learning
資料特性:資料有label
type of learnning by output as below
binary classification
label只有2種結果
multiclass classification
label有多種結果
regression
label是一個範圍
可用來找出一個範圍(y={ range })或一個有限的範圍(y={ limited range})
structured learning
label是一個結構或組合,使輸出像y={abc,cba,cde,…}, ex:sentence => structure
屬於complicated learning problem

unsupervised learning
資料特性:資料沒有label
目標較分散,所以難衡量演算法好壞
常見的如下
clustering:
類似unsupervised multiclass classification
ex: articles => topics
density estimation
尋找高密度資料
類似unsupervised bounded regression
ex: traffic reports with location => dangerous areas
outlier detection
尋找yes 或no
類似unsupervised binary classification
ex: internet logs => intrusion alert

semi-supervised
機器根據混合資料(有label和沒label)做學習
資料特性:部份資料有label,其他資料無label
優點:leverage unlabeled data to avoid expensive labeling


reinforcement learning(增加式學習)
方法:類似訓練寵物的方式,針對輸出結果加分或扣分來學習什麼是好或不好
資料特性:事件發生後的好或壞
ex:學習下棋

………………………………………………………………………………………………………..

classficiation by protocol
學習到模型,可以分為以下
batch learning
online learning/incremental
active learning

batch learning: (all known data)
整批資料餵給演算法,學到固定的資料模型,
當演算法用此資料模型判斷新進來的資料屬於那個label,就輸出結果
online learning/incremental: (sequential(passive) data)
資料模型可以動態變化,
當演算法用此資料模型判斷新進來的資料屬於那個label後,
我們可以主動調整資料的label,讓演算法根據新的變動,改變資料模型
like reinforcement learning,常用在垃圾信過濾
active learning:(strategically-observed data)
當資料用此資料模型判斷新進來的資料屬於那個label後,
一但演算法不太確定此資料屬於那個label,就有技巧的主動問,然後根據得到的答案更新資料模型
應用時機:當資料標註label很貴,或太多資料沒被label

…………………………………………………………………………………………………………


classficiation by output
假設y=輸出的結果,常見的輸出類型如下
y=(+1,-1)
y={1,2,…k}
y={ range }
y={ limited range}
y={ abc,cba,cde,…}


y=(+1,-1)
只輸出yes或no,也就是輸出2個答案的其中一個
ex:
credit approve/disapprove
email spam/non-spam
patient sick/not sick
ad profitable/not profitable

y={1,2,…k}
可輸出多個答案的其中一個
ex:
coin recognition problem
identify 0~9 or pictures
email category, spam,primary,social,promotion,…

y={ range }
y={ limited range}

要輸出一個範圍(y={ range })或一個有限的範圍(y={ limited range})
ex:
patient features =>how many days before recovery
company data => stock price

y={abc,cba,cde,…}
輸出不同的結構或組合
ex:
sentence => structure
protein data(蛋白質資料庫) => protein folding(蛋白质折叠)
speech data=> speech parse tree

…………………………………………………………………………………………………………………..

機器學習要注意的技巧

occam’s razor
儘量用最簡單的方式描述資料
不要對資料做過多的描述

sampling bias
若抽樣的資料有偏差, 那做出來的結果也會有偏差
ex:
老師教數學,結果考英文

visual data snooping
先看資料的長像,根據資料長像或表現來決定學習方法時, 要注意不要掉進資料陷井中
不要完全根據資料做決定,而是要根據domain know how做決定
建議原則為data-driven modeling(snooping) and validation(no snooping)

………………………………………………………………………………………………………………..


refer
Coursera 機器學習的基石 by 林軒田教授
http://blog.fukuball.com/lin-xuan-tian-jiao-shou-ji-qi-xue-xi-ji-shi-machine-learning-foundations-di-san-jiang-xue-xi-bi-ji/