back to index
ML Lecture 4: Classification

link |
剩下的時間,我們要進入新的主題,我們要來講分類這件事情。
link |
好,在分類這件事情呢,我們要找的是一個function,它的input是一個object x,
link |
它的output是這個object屬於哪一個class,屬於underclass的哪一個。
link |
那這樣子的task有很多application其實信手拈來就有一大堆,比如說在金融上,
link |
他們可以用classification的model來決定說要不要貸款給某一個人。
link |
你就找一個function,它的input是某一個人的income,saving,他的工作,他的年紀,
link |
還有他過去的financial record,他過去有沒有欠債等等。
link |
那output就是要借錢給他還是不借錢給他,這是一個binary classification的product,
link |
那或者是拿來做醫療的診斷,比如說input就是某一個人的症狀,
link |
還有他的年紀,性別,過去的就醫的歷史等等。
link |
那output就是他生的是哪一種病,就自動來做醫療的診斷,
link |
或者是做手寫的數字,手寫的文字的辨識,比如說你就手寫一個字給機器看,
link |
機器看到就上圖,這個是金這樣子,鄉民都叫我大金,就是金這樣子。
link |
然後output就是這個字,這個image,它是屬於哪一個case。
link |
那如果你是做中文的手寫辨識的話,那中文有至少8000個character,
link |
那它就是一個8000個class的classification。
link |
你的model要從這8000個class裡面選一個class當作output。
link |
或者是做人臉辨識,就是input一個人臉,然後告訴他說這個人臉是誰的。
link |
好,那我們要用的是什麼樣的example application呢?
link |
你可能以為說我只有前面那個predict CP值的例子,其實我還有很多其他的例子。
link |
好,我又做了一些有關寶可夢的研究,我這個研究是這樣子的,
link |
我們知道說寶可夢有不同的屬性,有幾種呢?
link |
其實有18種屬性,包括就是水,就是火啊,水啊,電啊,草啊,還有冰啊,等等。
link |
總共有18種屬性,到第6代為止總共有18種屬性。
link |
這個分類的問題就是要找一個function,這個function的input就是某一隻寶可夢,
link |
然後它output就是要告訴你說這一隻寶可夢它是屬於哪一種type的。
link |
比如說input給它一隻皮卡丘,它output就是雷。
link |
input給它一個那個傑尼龜,它output就是水。
link |
那input給它一個妙蛙草,它的output就是草。
link |
所以是一個classification的問題。
link |
第一個你的問題就是怎麼把一個寶可夢當作function的input。
link |
你要把一個東西當作function的input,它得數值化。
link |
你要用數字來表示一隻寶可夢,你才能把它放到一個function裡面。
link |
那我們要怎麼把一隻寶可夢用數字來表示呢?
link |
一隻寶可夢其實它有很多的特性,這些特性是可以數值化的。
link |
比如說它整體的強度,我先說一下這個其實不是pokemon go的那個東西,
link |
你聽不懂我講這個就算了,就當作沒聽到這句話。
link |
好,那一個寶可夢它其實可以用一組數字來描述它的特性。
link |
比如說這個寶可夢它的total的strength,
link |
就是它有多強,你可以用一個數字來表示它。
link |
它的生命值,你可以用一個數字來表示它。
link |
它的攻擊力,你可以用一個數字來表示它。
link |
它的防禦力,你可以用一個數字來表示它。
link |
它的特殊攻擊力,就是它用特殊攻擊的時候,
link |
這我不知道怎麼解釋,反正就是另外一個特殊攻擊的攻擊力。
link |
然後特殊攻擊的防禦力,還有它的速度,
link |
速度的時候可以決定說兩隻寶可夢相遇的時候,誰可以先攻擊。
link |
比如說皮卡丘,它的整體的強的程度是320,
link |
它的HP是35,它的攻擊力是55,防禦力是40,
link |
特殊攻擊力是50,然後它的特殊防禦力是50,
link |
所以一隻皮卡丘,我們就可以用一個vector來描述它。
link |
這個vector裡面有1,2,3,4,5,6,7,總共有7個數字。
link |
所以一隻寶可夢,它就是一個7個數字所組成的一個vector,
link |
所以一隻皮卡丘可以用這7個數字來描述它。
link |
我們能不能夠把7個數字輸進一個function,
link |
這個function就告訴我們說,它的output是哪一種種類的寶可夢。
link |
總共有18種態的,所以是18x18的屬性相剋表。
link |
左邊這個是攻擊方,上面這個是防禦方,
link |
所以格鬥系遇到一般的時候,它的攻擊就乘2,
link |
你看得懂這個圖了,所以這個是很重要的。
link |
可是寶可夢的屬性不是寶可夢圖鑑上面都有了嗎?
link |
對方出的是圖鑑上沒有的,你沒有見過的寶可夢。
link |
如果你現在有這個預測的model的話,
link |
你就可以預測說,它出的寶可夢是哪一種屬性的,
link |
而且我發現說寶可夢圖鑑其實是隱象辨識的功能,
link |
你照一張圖它就可以告訴你說它是哪一種寶可夢。
link |
我們應該要把這個預測的model加到寶可夢的圖鑑裡面,
link |
我們就說我把寶可夢編號400以下的當作training data,
link |
編號400以上的就當作testing data,
link |
就假設說,因為你知道寶可夢其實是越來越多的,
link |
所以編號在比較前面的是比較早發現的那些寶可夢,
link |
所以要模擬說我們已經發現那些寶可夢的情況下,
link |
比如說我們的data就是一些pair,
link |
告訴我們說function的input output是什麼,
link |
比如說input皮卡丘叫output電,
link |
那怎麼解這個classification的問題?
link |
假設有人沒有學過classification,
link |
他就說classification就當作regression的問題來硬解,
link |
我們用binary的classification來當作定義,
link |
input的x屬於class1或者class2,
link |
那就把它當作一個regression的問題,
link |
class1就代表說它的target,
link |
class2就代表說它的target是-1,
link |
你就這樣,就當作regression的problem,
link |
然後train完這個model以後,
link |
因為regression的output不會正好是0或是1,
link |
它是一個number,它是一個數值,
link |
所以你可以想成說現在就是以0為分界,
link |
如果你的regression model output是大於0的話,
link |
所以你的model就會說是class1,
link |
所以你的model會說是class2,
link |
我們現在的model的input和output的關係,
link |
那如果你用regression來想的話,
link |
input到這個regression的model,
link |
input到regression的model,
link |
也就是class1和class2的分界點,
link |
regression的output是0,
link |
代表regression的output是小於0的,
link |
代表regression的output是大於0,
link |
他的output可能會是遠大於1的,
link |
但是如果你用regression的話,
link |
他其實是對regression來說,
link |
但是如果你用regression認下去的話,
link |
對classification來說,
link |
但是顯然對classification來說,
link |
綠色的才是一個好的function,
link |
但是如果你當作regression的problem來做,
link |
因為regression對model好壞的定義,
link |
你的regression model,
link |
其實像這種把classification
link |
如果你今天有multiple class的話,
link |
我把class1當作target是1,
link |
class3和class2是比較近,
link |
class2跟class1是比較近的,
link |
class1,class2,class3,
link |
他們中間並沒有某種特殊的relation,
link |
你這樣子把他當regression的問題來處理,
link |
就是在做regression的時候,
link |
它output是real number,
link |
但是在classification的時候,
link |
那我們想辦法讓model做到這件事情,
link |
是binary classification的話,
link |
我們要找的function f裡面,
link |
當然我們g也是要根據training data被找出來的。
link |
如果我選了某一個function f,
link |
它在我們training data上面,
link |
summation over all training examples,
link |
就是如果f of xn的output,
link |
但是,如果叫你解這個function,
link |
因為我們學過的是gradient descent,
link |
你可能會用gradient descent解,
link |
比如說acceptron就是一個方法,
link |
machine learning的三個step
link |
有藍球跟綠球,盒子二裡面也有藍球跟綠球,
link |
你從盒子2裡面抽一個球的機率是三分之一,
link |
這沒什麼好解釋的,我相信大家都瞄懂。
link |
它從某一個class裡面sample出來的機率
link |
乘上class1 sample出來一個object
link |
它從哪一個class裡面來的機率最大。
link |
機率最大的那個class就是正確答案。
link |
假設我們是考慮一個二元分類的問題的話
link |
training data去把這些值
link |
叫做generative model。
link |
為什麼它叫一個generative model呢?
link |
你就可以用這個distribution
link |
你就可以用這個distribution來sample X出來。
link |
加上你從class2裡面挑一個X的機率
link |
叫做generative model。
link |
就當作是training data。
link |
剩下的當作是testing data。
link |
你可以把training data裡面切成validation的data出來。
link |
為什麼選水系跟一般系的當作二元分類的問題。
link |
如果我們現在知道說training data裡面
link |
sample出一支寶可夢的機率是多少呢?
link |
那從class 2裡面sample出
link |
那我們現在的training data
link |
沒有在我們的training data裡面的寶可夢
link |
在training data裡面從來沒有出現
link |
Gaussian distribution裡面
link |
但是從那個Gaussian distribution裡面
link |
是一個從一個Gaussian distribution裡面
link |
Gaussian distribution
link |
Gaussian distribution
link |
我這邊還做了幾個投影片要說Gaussian distribution
link |
假設你不知道Gaussian distribution是什麼的話
link |
它是probability的density
link |
到底這個Gaussian長什麼樣子呢
link |
看過的點它不在這個sampling裡面
link |
distribution的function寫出來
link |
知道mu跟x我們就可以把這個function寫出來
link |
而這個function是dependent on mu跟x
link |
它的covariance matrix是sigma的Gaussian裡面
link |
如果你對這個function沒什麼概念的話
link |
它當然是sample出來的機率是比較大的
link |
就是maximum的likelihood
link |
Gaussian裡面被sample出來
link |
然後它的covariance matrix長這個樣子
link |
但沒有一個地方機率是exactly等於0的
link |
它sample出左下角這個點的機率很低
link |
它們sample出這79個點的likelihood
link |
顯然說如果你的Gaussian是這個的話
link |
它sample出這79個點的likelihood
link |
它sample出這79個點的Gaussian
link |
我們就可以算這個Gaussian的likelihood
link |
我們就可以算這個Gaussian的likelihood
link |
可能會跟loss function有點混淆
link |
但是likelihood我覺得用別的notation
link |
那這個L它的input就是Gaussian的μ
link |
帶到這個likelihood的function裡面
link |
一直到sample出第79個點的機率
link |
一直到sample出第79個點的機率
link |
它是從某一個Gaussian被sample出來
link |
那個Gaussian它sample出這79個點的機率
link |
或它sample出這79個點的likelihood
link |
sample出這79個點的Gaussian
link |
likelihood最大的Gaussian
link |
likelihood的function寫作這樣子
link |
看哪一個可以讓上面這個likelihood的式子最大
link |
它就是我們認為最有可能產生這79個點的
link |
mu star跟sigma star
link |
就從這個mu star跟這個sigma starsample出來
link |
哪一個mu star可以讓這個最大呢
link |
xn-mu star的transpose
link |
假設xn的mean是mu star的話
link |
那最有可能sample出這79個點的高權
link |
那我們一樣算它的mean跟算它的variance
link |
我們只要算得出p of class 1
link |
這個東西它就是一個高權distribution
link |
covariance是sigma1的distribution裡面
link |
它的這個高權distribution
link |
covariance是sigma2的distribution裡面
link |
是class1就是水系神奇寶可夢的機率
link |
因為水系神奇寶可夢的分布還是在這邊比較多
link |
是比較多的藍色的點是在這個紅色的區間
link |
因為他們中間沒有一個明確的boundary
link |
把它apply到testing set上
link |
他們的class1和class2的寶可夢
link |
把他們的class1和class2的寶可夢
link |
class1和class2在七維空間中
link |
有quire的probability
link |
經過一番運算我們算出每一個class的
link |
Gaussian distribution
link |
給每一個Gaussian都有自己的mean
link |
input的feature size
link |
所以covariance matrix
link |
當你的feature size很大的時候
link |
如果你把兩個不同的Gaussian都給它
link |
不同的covariance matrix
link |
的這些feature分佈的Gaussian
link |
同樣的covariance matrix
link |
同一組covariance matrix
link |
這個covariance matrix
link |
是從另外一個Gaussian所generate出來
link |
但是它的covariance matrix
link |
他們用的covariance matrix
link |
這兩個class他們share同一個
link |
generate這總共兩個class合起來
link |
因為這兩個class是共用同一個covariance matrix
link |
讓這個likelihood的function最大的
link |
class1和class2的covariance
link |
class2裡面的x平均起來就變μ2
link |
因為它在網路上有available的版本
link |
所算出來的covariance matrix
link |
所算出來的covariance matrix σ2
link |
各自算的covariance matrix
link |
所得到的covariance matrix
link |
因為如果你看defense跟special defense
link |
我們今天共用covariance matrix
link |
在沒有共用之前class1和class2的
link |
如果我們今天共用同樣的covariance matrix
link |
強迫他們的covariance matrix
link |
兩個class你用不同的covariance
link |
matrix的話他們就不是linear
link |
如果我們考慮所有的feature會怎麼樣呢
link |
但是神奇的是當我們共用covariance
link |
matrix的時候就得到73%的正確率
link |
但是這個就是machine learning
link |
那其實你根本就用不上machine learning
link |
那我們講說machine learning
link |
這個model就是你的function set
link |
這個function set裡面的function
link |
prior probability class2的prior probability
link |
probability distribution
link |
class2產生x的probability distribution
link |
這些prior probability
link |
probability distribution
link |
不同的probability distribution
link |
那你把這些不同的probability distribution
link |
那你把這些不同的probability distribution
link |
跟不同的covariance metric
link |
你就得到不同的probability distribution
link |
你把這些probability distribution集合起來
link |
這個posterior probability
link |
0.5的話就output class1
link |
我們要evaluate的對象其實就是
link |
也就是mean跟covariance metric
link |
跟一個covariance metric
link |
來定義你的probability distribution
link |
我們的training data的likelihood
link |
找一個probability distribution
link |
這個probability distribution
link |
那你的bias就大variance就小
link |
這些機率分佈他們是independent的話
link |
每個dimension機率分佈是independent的話
link |
一維的Gaussian大家知道意思嗎
link |
我們之前討論的都是multivariable的Gaussian
link |
在model它們都是一維的Gaussian的話
link |
它的covariance metric
link |
feature間的covariance
link |
model它們之間的covariance
link |
某個feature它是binary的
link |
這個就是binary的feature
link |
如果是binary的feature的話
link |
你說它是用Gaussian distribution產生的
link |
不太可能是用Gaussian所產生的
link |
這時候你就會假設別人的distribution
link |
比如說假設你的feature是binary的
link |
它是一個binary的distribution
link |
而不是一個Gaussian的distribution
link |
feature和feature之間covariance的關係
link |
naive based classifier很強
link |
他們之間是independent這件事情是很
link |
naive based classifier它確實就可以
link |
提供給你很好的performance
link |
那其實naive based classifier
link |
它就不是一個好的classifier
link |
我們要分析這一項posterior probability
link |
都同處p of x given c1
link |
log以後取natural log以後
link |
我們假設這一項取natural log以後它等於z
link |
這個posterior probability
link |
1除以1加exponential的負z次方
link |
就是上下顛倒再取exponential
link |
把exponential跟natural log
link |
然後你就得到posterior probability
link |
我們已經知道說posterior probability
link |
它是一個z的sigmoid function
link |
它在training data裡面出現的數目
link |
它在training data裡面出現的
link |
所以p of c1就是n1除以n1加n2
link |
p of c2就是n2除以n1加n2
link |
probability distribution
link |
這個Gaussian的probability distribution
link |
另一個Gaussian的probability distribution
link |
probability相除再取neutral log
link |
然後這個exponential的部分呢
link |
sigma1的inverse再乘上x-mu1
link |
前面呢是sigma1和sigma2的
link |
一般我們會假設covariance matrix
link |
這個sigma2的determinant
link |
所以sigma1的determinant
link |
如果sigma1等於sigma2的話
link |
負1x2t sigma1 inverse x
link |
負1t sigma2 inverse x
link |
就變成μ1減μ2的transpose
link |
你把這個vector的transpose
link |
這個inverse再乘上一個vector
link |
我們可以把posterior probability
link |
把這個posterior probability呢
link |
其實posterior probability它根本就
link |
你的boundary你的class1和class2
link |
generative model裡面
link |
n1 n2 mew1 mew2跟sigma