CDA字幕組 編譯整理
MIT6.0002課程《計算機科學與用Python編程》(Computer Science and Programming in Python)針對沒有或有少量編程經(jīng)驗的學生,目的是讓學生了解計算在解決問題中的作用,并幫助學生用自己的能力編寫小的程序并實現(xiàn)目標。在當中這節(jié)機器學習導論課中,Grimson教授介紹了機器學習,并展示了使用特征向量進行監(jiān)督學習的例子。
主講人:
Eric Grimson
Eric Grimson是麻省理工學院計算機科學與工程學教授2011年至2014年間,擔任麻省理工學院的校長,此前曾擔任麻省理工學院電子工程和計算機科學系主任。1975年,在加拿大里賈納大學獲得了理學學士學位,并在1980年獲得了麻省理工學院的數(shù)學博士學位。Grimson教授的研究團隊開創(chuàng)了活動和行為識別、對象與人識別、圖像數(shù)據(jù)庫索引、圖像引導手術(shù)、網(wǎng)站建模以及計算機視覺等許多領(lǐng)域的先進體系。Grimson教授是美國人工智能協(xié)會(AAAI)的成、會員,以及IEEE和ACM的會員,并獲得了麻省理工學院工程學院頒發(fā)的工程學院卓越教學“Bose獎”。
CDA字幕組對該視頻進行了漢化,附有中文字幕的視頻如下:
MIT機器學習導論(二)
針對不方面開視頻的小伙伴,CDA字幕組也貼心的整理了文字版本,如下:
本節(jié)課我們將談到機器學習。當我們談到機器學習時,當中會涉及很多要素。首先,毋庸置疑這是一個很大的話題。自然語言處理、計算生物學、計算機視覺、機器人技術(shù)等學科如今在很大程度上依賴于機器學習。
在本課我們會講導論的部分,講解機器學習的基本概念。擁有樣本,以及如何表現(xiàn)出代表樣本的特征。如何測量它們之間的距離,并使用距離的概念來聚集類似的內(nèi)容,從而作為進行機器學習的方法。
我們將看到兩種不同標準方法的結(jié)果。一個稱為分類方法,在例子中我們可以看到K最近鄰。第二類稱為聚類方法。
當具有標注數(shù)據(jù)時,分類方法的效果很好。樣本中的標注,我將用來定義分類。當沒有標注數(shù)據(jù)時,聚類方法的效果很好。一會兒我們將探究當中深意,但我打算給你們一些初步概念。
我們很可能不會向你們展示目前先進的機器學習方法。比如你在新聞中看到的卷積神經(jīng)網(wǎng)絡(luò),或深度學習。但當談到學習算法時,通過看到我們所做的,你會對那些內(nèi)容背后的原理有一些了解。
機器學習無處不在
在此之前,我想指出機器學習是多么普遍。1975年我開始進行AI方面的研究,當時機器學習很簡單,40年來這發(fā)生了驚人的改變。
你不妨想想,AlphaGo來自谷歌的基于機器學習的系統(tǒng),用來擊敗世界一流水平的圍棋選手。國際象棋已經(jīng)被計算機戰(zhàn)勝了一段時間了,如今世界上最強的圍棋選手是計算機。
想必你們很多人都用Netflix推薦系統(tǒng)。Netflix Amazon使用機器學習算法,對你喜歡看的內(nèi)容提出建議。
其實你可能已經(jīng)在谷歌上看到了,谷歌上彈出的廣告就來自機器學習算法。根據(jù)你的喜好,這有點嚇人。
藥物研發(fā),字符識別。郵局對手寫字符進行字符識別,通過使用計算機視覺背后的機器學習算法。
你可能沒聽過這個公司,這實際上是MIT衍生的公司名為Two Sigma 總部在紐約。他們大量使用AI 機器學習技術(shù),兩年前他們的資金獲得56%的回報。去年他們做的不是很理想,但使用機器學習技術(shù)得到了非常驚人的成果。
另一個出色的MIT公司進行計算機視覺系統(tǒng)。當中大量運用機器學習,這運用于輔助駕駛,之后將用于完全的自動駕駛。當你太靠近前面車輛時,它會按下剎車。
人臉識別,F(xiàn)acebook用這個。許多其他系統(tǒng)用此來進行面部檢測和面部識別。
IBM Watson,癌癥診斷。這些都是機器學習無處不在的例子,事實就是如此,我僅僅列出了9個例子。
什么是機器學習?
上周我們講到了線性回歸。這開始有點接近學習算法了。因為我們所做的是給出一組數(shù)據(jù)點,大量的位移數(shù)據(jù)點。然后我們向你展示,計算機如何用曲線擬合數(shù)據(jù)點。某種意義上相當于,為數(shù)據(jù)學習模型。之后可以用來預測其他情況下的行為。這更接近我們談到機器學習算法時所希望看到的。
我們希望有能夠從經(jīng)驗中學習的程序,之后可以用來推斷新的事實。這個問題在AI中存在了很長一段時間。我很喜歡這段話,來自Arthur Samuel,在1959年他給出的機器學習的定義是“讓計算機有學習的能力 而不是直接的進行編程”。
我想很多人會說,他寫的第一個程序就是用于學習經(jīng)驗的。他教會計算機下國際跳棋,這展現(xiàn)了該領(lǐng)域是如何進步的。我們從國際跳棋開始,然后是國際象棋,如今是圍棋。計算機學會下國際跳棋,擊敗了國家級的選手。更重要的是,它學會通過觀察比賽中的行為改善方法,然后進行推斷和改變。
Samuel還做出了許多其他成果,在接下來的課程中你們會看到。他發(fā)明了Alpha-beta剪枝算法,用于進行搜索的有效技術(shù)。但是問題在于,我們?nèi)绾文軌蚴褂嬎銠C學習,而無需進行預先地編程。
方法之一是,思考我們進行標準編程與我們看待機器學習算法間的區(qū)別。我知道你們不相信存在標準編程。但如果你想到傳統(tǒng)編程,那是什么流程?
我寫一個程序,輸入到計算機。從而它獲取數(shù)據(jù),得出適當?shù)妮敵觥N揖帉懘a使用牛頓迭代法得到平方根。然后得到程序,給出任何數(shù)字得出平方根。
機器學習方法的理念是,我給計算機提供輸出,給出我希望程序要做的例子,標注數(shù)據(jù),給出不同類別事物的特征。我希望計算機給出輸出和數(shù)據(jù)的特征,然后機器學習算法能夠為我生成程序。該程序能夠用于推斷新的信息,然后創(chuàng)建出不錯的循環(huán)。當中讓機器學習算法學習程序,接著可以用于解決其他問題。這如果能實現(xiàn)的話是很棒的。
正如我建議的,曲線擬合算法是一個簡單的版本。它學習數(shù)據(jù)的模型,之后我可以用于標記任何數(shù)據(jù)?;蛘哳A測改變質(zhì)量時的彈簧位移。這就是我們要探究的。
學習的方式
我們需要思考“該怎樣學習? 計算機該怎樣學習?”
作為人類來說,有一些可能性。這是一種很無聊的、很傳統(tǒng)的方法。記住例子,盡可能多的記住例子。然后希望在期末考試中提到那些事實中的例子,而不是其他你沒記住的例子。
這是我們在第一節(jié)課提到的陳述性知識,事實的陳述。盡可能多的記憶,把維基百科收入囊中。一個更好的方式是能夠推斷,根據(jù)之前的信息推斷新的信息。如果想到這點,這更接近所謂的程序性知識。推斷新事物的方法。
在第一情況下,我們進行構(gòu)建。編寫計算平方根的程序。而在學習算法中,我們希望有更廣義的概念。我們更希望拓展我們的能力。編寫能夠從數(shù)據(jù)隱含模式中推斷出有用信息的程序,因而不是一些明顯的內(nèi)置信息。比如對權(quán)重和位移的比較,而實際上是數(shù)據(jù)中的隱含模式。從而讓算法分辨這些模式是什么,并用它們生成程序。用來推斷關(guān)于物體以及彈簧位移的新數(shù)據(jù),以及任何你想做的。
讓我們將看到的基本范式。我們將為系統(tǒng)提供一些訓練數(shù)據(jù)和觀測值。正如我們上次針對彈簧位移問題所做的。接著我們要試圖弄清楚,如何編寫代碼,如何編寫程序和系統(tǒng),從而對生成數(shù)據(jù)的流程做一些推斷,就此我們相對未知的事物進行預測。
例子1:橄欖球員分類
我舉一個我最喜歡的例子,我是新英格蘭愛國者球隊的死忠粉。我將用橄欖球隊員舉例。標簽就是他們打的位置。而數(shù)據(jù)我們將用到身高和體重。但是我們想做的是,能否對隱含模式進行描述,即如何通過身高和體重預測出球員所打的位置。從而得出預測新球員位置的算法。想想怎樣通過推斷找到模型,以及怎樣使用模型進行預測。
在今天的多個例子中我們將看到,學習可以通過兩種廣泛的途徑來實現(xiàn)。第一種被稱為有監(jiān)督學習,在有監(jiān)督學習中,對于每個新的例子作為訓練數(shù)據(jù)的一部分,都有一個標簽。我知道它們代表了什么,我將要做的是基于這些例子,如果找到預測關(guān)于未見過的輸入的標簽。這是有監(jiān)督的,因為我知道標簽是什么。
第二種被稱為無監(jiān)督學習。在無監(jiān)督學習中,我將給出一些例子。但我不知道與它們相關(guān)的標簽。我要嘗試找出將這些例子歸類到不同模型的自然方法。有時我會知道一共有多少模型,有時我僅知道這是我所找到的最好分類。
這里有一些愛國者隊現(xiàn)任運動員的數(shù)據(jù)點。有兩類位置,接球手和前鋒。每個隊員都通過姓名,英寸為單位的身高和鎊為單位的體重來標注。
每類位置五個隊員,如果將其繪制成二維圖。我想要知道的是,有沒有特征能夠區(qū)分這兩個類別。在未標注的一類,我有的只是一些例子,所以我要做的是確定什么讓兩個隊員相似。
目標是能否將這個分布劃分為,兩個或者更多的自然分組。類似于距離測量,如何根據(jù)例子的值和特征確定當中的差異。
在無監(jiān)督情況下簡單的實現(xiàn)方式是,如果我知道至少存在K個分組,在這個案例中有兩個不同的分組。那么如何更好地進行聚類,因此一組中的例子都彼此接近,另一組的例子也十分接近,而這兩組之間數(shù)值差的很遠。
有很多實現(xiàn)的方法,我將展示一種非常標準的方式。基本原理如下,如果我所知道的是兩類分組,那么我將選擇兩個例子作為范例。我隨機選擇了兩個,但實際上隨機選擇并不是好。
在訓練數(shù)據(jù)中,哪一個與它最相似的呢?我將要做的是創(chuàng)建簇,簇的特征是當中所有例子的平均差距小??词欠衲苁箖蓚€群集例子間的平均差距盡可能小。
這個算法通過選出兩個例子。通過把例子放入最近的分組進行聚類,一旦得到這些簇,我將找到這組當中的中間元素。將這些作為范例,接著不斷重復這個過程,直到結(jié)果不再改變。這是基于距離的聚類。
針對橄欖球員,如果只根據(jù)體重。這個是自然分割線 ,這有一定道理。這三個點很明顯的聚集在一起,只是在這個坐標軸上,這三個點在分割線下,另外七個點在不同的位置。這有一條自然分割線。
如果根據(jù)身高進行分類,結(jié)果不是很清晰。這是算法給出的結(jié)果。這里的最優(yōu)分割線表明,在這個坐標軸上,這四個之間更接近,這六個更接近,但是不是很清晰。這是我們將要考慮的,如何能夠找到最好的簇。
如果同時使用身高和體重,結(jié)果如下。結(jié)果不錯。那三個聚集在一起,只針對距離的話它們很接近。另外七個距離很近。在這有一條清晰的自然分割線。實際上為我們得到了分類器,這條線是兩個簇中心的等距離分割線,意味著分割線上任意點到兩個簇中心的距離均相等。
因此對于任何新的例子,如果位于這條分割線上為上面的標簽,位于分割線下為下面的標簽。稍后我們將研究如何測量距離。
但是這個思路很簡單,我要得到組內(nèi)相距很近,而組間相距較遠的分組,現(xiàn)在假設(shè)我實際知道這些球員的標簽。這些是接球手,那些是前鋒。對于橄欖球迷的來說,你可以分辨出這兩個是近端鋒,他們塊頭更大。如果你真是愛國者隊的死忠粉,你會知道這個是Bennett 那個是Gronk。
如果我事先知道它們的標簽,我將如何進行分組。這很容易,在這種情況下基本思路是,如果在那個特征空間中有被標記的分組。
我想做的是,找到一個能自然地分割空間的次表面。次表面是一個高大上的詞。在二維圖中,我不想知道哪條是最佳分割線。如果我能找到一條線,能夠?qū)蓚€標簽中的所有例子區(qū)分。如果例子被很好的區(qū)分開來,這將很容易而且很棒。
但在一些情況下更為復雜,因為有些例子可能非常接近于其他例子。這將導致我們之前碰到的問題,我想避免過擬合。我不想生成一個十分復雜的表面來區(qū)分事物。如果不能完美區(qū)分的話,我們得忍受一些沒有被準確標注的例子。
正如你們所知,在有標注數(shù)據(jù)的情況下,這里有一條最佳擬合線。體重超過280鎊(約127千克)的人將會成為優(yōu)秀的前鋒,體重低于280鎊的人更可能成為一個接球手。因此我得到了兩種做標注的不同的方式。
假設(shè)我現(xiàn)在加入了一些新數(shù)據(jù),我想為新的例子進行標注。他們實際上是不同位置的球員,這些是跑衛(wèi)。但假設(shè)我只知道接球手和前鋒,當我得到這兩個新的數(shù)據(jù),我想要搞清楚他們更有可能成為接球手還是前鋒。
這就是這兩位球員的數(shù)據(jù),所以當我繪出這兩個點,你將發(fā)現(xiàn)這個情況,這些(藍色的)是前鋒,紅色的是接球手,這兩個黑色的點是兩個跑衛(wèi)。注意這里很難將這兩個點分開,它們太接近了,這是現(xiàn)在我們需要權(quán)衡的。
要么我需要重新考慮分類情況,要么或許這里不止存在兩種類別,或許這里有三種類別,我想把它們區(qū)分開來。
另一方面,如果我使用標注數(shù)據(jù),這就是我的分割線。這很簡單。這兩個新的樣本都處于分割線以下,他們都是很清晰準確的樣本。我更傾向去將其歸類到接球手,而不是前鋒。這是一個關(guān)于橄欖球的例子,如果你對橄欖球不感興趣。你可以選擇其他的例子。但是你需要了解為什么,我使用標注數(shù)據(jù)和未標注數(shù)據(jù)得出不一樣的分類。
我們也將學習基于標注數(shù)據(jù)的模型,然后思考如何通過一條線、平面或者一些直線,實現(xiàn)對一組樣本和另一組樣本進分類。鑒于需要避免過擬合,我們并不希望建立過于復雜的系統(tǒng)。因此我們要權(quán)衡假正(FP)和假負(FN),但是最后得到的分類器能夠僅通過分割線,實現(xiàn)對于新數(shù)據(jù)的標注。
這里我使用身高和體重來表示橄欖球運動員,但我也可以選擇平均速度和臂長等數(shù)據(jù),那么該如何才能知道哪些是與之相關(guān)的合適特征。我應該如何計量這些特征數(shù)據(jù)之間的差異,怎樣確定哪些接近哪些并不接近,可能根據(jù)體重和身高有所不同,我需要做出抉擇。
特征表示
現(xiàn)在我們討論一下特征,我已經(jīng)得到了一組樣本,被標注或者沒被標注。當我要衡量兩個樣本之間的區(qū)別時,我需要明確這些樣本為何是有用的。但是問題是如果能將這個問題簡化,那么一切就簡單了。但特征并不總能表現(xiàn)得如你所愿。
引用20世紀最偉大的一位統(tǒng)計學家的一句話,我認為這句話很貼切。“關(guān)于特征工作,作為程序員你需要決定我想要測量向量中的哪些特征,以及如何相對地進行測量”。
我本可以讓我們這個學期的工作很輕松,如果我們在課程的開始對你們說,我們已經(jīng)教過很多次這個課程了,我們從成千上萬為學生那里獲取了大量的數(shù)據(jù)。讓我們設(shè)計一個學習算法,能夠通過這些數(shù)據(jù)來預測你們本學科的期末成績。這樣你們不需要來上課,不需要經(jīng)歷難題。直接預測你們的期末成績,是不是很棒?這樣讓我們的工作變得更輕松。
想想特征,我們要測量哪些特征?GPA應該是一個不錯的選擇,你在其它課表現(xiàn)不錯的話,那么你也很有可能在本課得到好的成績。
我將謹慎地使用編程經(jīng)驗這個特征數(shù)據(jù),它確實是一個預測數(shù)據(jù),但并不是那么完美。就算你們中有些人之前沒有編程經(jīng)驗,但仍可能在這門課程之中取得好成績。
另一方面,我不相信星座。因此我并不認為你出生的月份,所處的星座跟你的編程水平有任何的聯(lián)系。我也否定眼球顏色與編程能力之間有聯(lián)系,你懂的,有些特征重要,有些則不重要。
現(xiàn)在我可以加入所有的特征,并希望機器學習算法理清哪些是需要保留的,哪些不需要保留。但是我需要提醒你們過擬合的問題,如果這么做的話存在風險。出現(xiàn)出生月份,眼球顏色以及GPA成績的相關(guān)性,這會導致我們不希望的結(jié)論。
我們需要思考怎樣選擇特征,絕大多數(shù)情況下我們嘗試將所謂的信噪比進行最大化,將帶有絕大部分的信息的特征最大化,去掉那些信息量不足的特征。
例子2:爬行類動物分類
我想要給你們看一個例子,我打算對爬行類動物進行標記。我想試圖標記一個動物是否屬于爬行類動物。
我知道眼鏡蛇能產(chǎn)卵、有鱗片、有毒是冷血動物,它沒有腿,它是爬行類動物。
但是如果給你們第二個例子,剛好也是能產(chǎn)卵、有鱗片、有毒、冷血、無腿。這就是我的模型,完美而合理。無論是我還是機器學習算法這樣設(shè)計,如果這些都標注為爬行類動物。
現(xiàn)在給出一條蟒蛇作為樣本。它是爬行類動物,但是它不符合這個模型。尤其是它不能產(chǎn)卵,并且無毒。因此我或者算法需要重新定義模型。
我想要提醒你們的是,注意這些特征。一開始我們使用的是五個特征。這個不符合。所以或許我們應該減少特征,只關(guān)注是否有鱗片,為冷血動物是否有腿。這包含所有三個樣本的特征,從分類的角度,三個都符合這些特征。
現(xiàn)在給出另一個例子,雞。我不認為它是爬行類動物,但是它依然符合該模型??赡苣銢]有意識到,它有鱗片。它不是冷血動物,它有腿。所以它是一個反例。它強化了該模型。聽起來不錯。
現(xiàn)在給出鱷魚,它是爬行動物。它并不能完全符合該模型。因為它有鱗片,是冷血動物,有腿。
我需要想想如何進行改善,我們可以把模型弄得更復雜。若符合有鱗片的,冷血動物有零到四條腿,則是爬行動物。
看到箭毒蛙。它不是爬行動物,是兩棲動物。沒問題,它依然符合模型,所以它是該類別之外的樣本。沒有鱗片,非冷血動物,剛好有四條腿。它不是爬行類動物。
然后看到蟒蛇(Python),這里必須要有蟒蛇。接著看到鮭魚,現(xiàn)在麻煩來了 ,因為看到是否有鱗片,是否為冷血動物,是否有腿,我不能區(qū)分它們。無法根據(jù)這些特征正確的判斷出蟒蛇是爬行動物。而鮭魚不是爬行動物,所以沒有簡單加入該規(guī)則的方法。
對此最好的方法是回到只有兩個特征的情況,鱗片和冷血動物。也就是說如果某種動物有鱗片,且為冷血動物,那我就判斷它為爬行動物。如果同時不符合這兩點,那就不是爬行動物。這并不完美,會錯誤的標記鮭魚。
但在此我做出了設(shè)計的選擇,這是很重要的。設(shè)計選擇是,沒有任何漏報(FN),也就是說不會出現(xiàn)我將非爬行動物,判斷成爬行動物的情況。漏報(FN)指模型將不是爬行動物的,判斷為爬行動物??赡艽嬖谡`報(FP),會出現(xiàn)少數(shù)被誤標為爬行動物的例子。特別的是,鮭魚就是這樣的例子。關(guān)于誤報和漏報的權(quán)衡是我們需要注意的,因為多數(shù)情況下,沒有辦法將數(shù)據(jù)完美地分開。
一旦決定了使用哪些特性。接著我需要決定距離。怎樣比較兩個特征向量?之所以成為向量,因為存在多個維度。決定怎樣比較它們,因為我想利用距離判斷如何分類,以及如何找到分割線,需要決定的內(nèi)容之一是選哪些特征。同時要要決定距離,最后還要決定如何權(quán)衡特征向量中不同維度的重要性。在做選擇中有些可能更為有價值。
回到動物的例子。一開始特征向量實際存在五個維度。產(chǎn)卵、冷血、有鱗片、腿的數(shù)量,還有一個我忘了。
我能想到的方法之一是每個動物有四個二值特征和一個整數(shù)特征。分離非爬行動物和爬行動物的方法是測量每對例子之間的距離。利用距離來判斷哪些是接近的,哪些不是。
正如之前所說,需要對事物進行聚類,或者需要找到分割它們的分類面。這里有一個簡單的方法,每個例子中,正確標為1錯誤標為0。前四個為0或1。最后是腿的數(shù)量。那么現(xiàn)在該如何測量動物間的距離?或者關(guān)于這些特征向量的其他內(nèi)容。
在這里我們要用到閔可夫斯基度量(Minkowski Metric),或者叫閔可夫斯基區(qū)別。給出兩個向量和系數(shù)P,取變量中每個元素間差值的絕對值,取P次方,求和。然后取和值的P次根。
讓我們看到兩個明顯的例子,P為1測量了每個成分間的絕對距離。加起來這就是距離。稱為曼哈頓度量(Manhattan Metric)。
如果P為2這就是歐幾里得距離(Euclidean Distance)。對元素的差值求平方和,然后開平方根。因為距離的某些屬性,這就是歐幾里得距離。
如果我想測試兩者的距離,問題是這個圈更接近星星還是十字形。根據(jù)使用的度量答案也不一樣。歐幾里得距離為,2的平方根乘以2,約為2.8。另一個為3。因此根據(jù)的標準距離,我們可以說這兩個更近。
曼哈頓距離,之所以稱為曼哈頓距離,因為你只能沿著街道走。在曼哈頓距離上會說,這里為4個單位距離,而這里是3個單位距離。在曼哈頓距離中,這一對比起另一對更近?,F(xiàn)在你已經(jīng)習慣了歐幾里德,當我們打算比較不同物體的距離時,這是很重要的。通常我們會使用歐幾里德,之后會看到曼哈頓的價值。
讓我們回到之前的三個例子,響尾蛇、蟒蛇和箭毒蛙。我想問問它們之間的距離是多少。
現(xiàn)在加入鱷魚,我想進行同樣的比較。沒有得到同樣好的結(jié)果。因此像以前那樣,兩類蛇很接近。但在這種情況下箭毒蛙和鱷魚也很接近。但它們彼此之間并不像。
在這里要提醒一下,我希望鱷魚和兩類蛇更接近,離箭毒蛙更遠。因為這里我們試圖分類爬行動物和非爬行動物。
此時特征工程(Feature Engineering)就很重要了。因為事實上 鱷魚在三個特點上與青蛙不同。但只有兩個特點與蟒蛇不同。特征之一是腿的數(shù)量,在二進制中差異在0與1之間,而這里是0到4的差異。這使得距離要遠的多,腿的維度太大了。
根據(jù)這個數(shù)值它們之間形成了自然的分割。特征的選擇很重要,選擇過多的特征會導致一些過擬合。特別是決定特征的權(quán)重時影響很大。
當你作為設(shè)計師、程序員時如何選擇將帶來很大的影響。因此特征工程真的很重要。
我可以給你一個非常簡單的方法來做聚類。比方說給你100個樣本組建100個簇。每個樣本自身都是一個簇。距離方面非常好,離自身足夠近。但標簽方面非常不理想。
所以我們需要思考如何決定分多少簇,分類的困難度如何。怎樣避免我們不想遇到的過擬合問題。
讓我們以另一個例子結(jié)束該部分。假設(shè)給出標注的樣本。目的是一樣的,每個樣本具有相關(guān)特征并且是多維的。我們也知道與之相關(guān)的標簽。我想知道何為制定規(guī)則的最佳方式。從而接收新樣本并將其分配到合適的組中,
有幾種解決方法。你可以說我想找到分隔這些樣本最簡單的平面。在舉出的橄欖球例子中,最佳分隔線是哪條。這個很簡單。
我可能需要找個更復雜的平面,我們馬上會看到相應例子??赡軙靡幌盗芯€段來做分隔,因為并不只是一條線進行分割。和之前一樣我們要注意,若弄得太復雜,我們可能會得到一個非常好的分隔,但會對數(shù)據(jù)過度擬合。
你們下回會看到,我在這里強調(diào)一下有第三種方法??梢缘贸鰩缀跸嗤慕Y(jié)果,稱作
K近鄰法。
意思是我有一組標注數(shù)據(jù),我要做的是對于每個新樣本,找到K。比方說五個最近的標注樣本,并且決定在這些標簽中,如果五個中有三個符合,五個中有四個符合,或是五個中五個全符合的話,它們就是一組的。如果少于那個數(shù)就作為待分組。這是學習它們的好方法。
例子3:投票數(shù)據(jù)分類
最后再讓展示一個例子。給你們一些投票數(shù)據(jù)。這其實是模擬數(shù)據(jù)。這是一組美國選民以及他們的投票偏向。他們打算選共和黨,他們打算選民主黨。兩種類別為年齡和其居住地到波士頓的距離。我不知道它們是否相關(guān),它們只是我們用來給選民分類的要素。
我想知道如何擬合一條曲線用來區(qū)分這兩類。我將用一半的數(shù)據(jù)來測試,另一半用來訓練。
如果這是我的訓練數(shù)據(jù),我想知道最佳分隔線是哪條。這條實線有個特性是所有的民主黨都在線的一側(cè)。另一側(cè)的都是共和黨,但有些共和黨在線的另一側(cè)。我沒法找到像在橄欖球隊員例子中那樣,能夠完全分隔的一條線,但這條線分隔也得相當好了。
這里還有另一個候選的線。虛線的特性是,在線的右側(cè)幾乎包括所有的共和黨。這樣非常合適。以及一個民主黨。不過這樣的分隔已經(jīng)不錯了。然后在左側(cè)是兩類的混合。但大部分是民主黨都是在線的左側(cè),實際上波士頓的距離與之完全不相干。
問題是我如何進行評估,我怎樣決定哪條線比較好。我打算直接給你們展示一些例子。第一個是混淆矩陣。是指對于這些分類器的其中一個。比如這條實線,基于實線預測出更有可能是民主黨或是共和黨。然后這邊是實際標簽,對于虛線也是同理。這條對角線很重要,因為這些是正確標注的結(jié)果。
它在實線和虛線中包含所有正確的民主黨標簽。一半的共和黨標簽是正確的,但有一些實際上是共和黨但它標注為民主黨。然后得出自然測度稱作準確度。
我們提到過,這些是真正(TP) 也就是說,我標注它為實例結(jié)果也是如此。這些是真負(TN),我標注它不為實例,結(jié)果確實不是這樣。這些是誤報(FP),我標記它為實例,而并不是。這些是漏報(FN),我標記它不為實例而卻是的。
一個簡單的測量方法是,看到所有標簽中的正確標簽。真正和真負,那些我算對的。這種情況下兩個模型的值均為0.7。那么哪個比較好?我應該進行驗證,我想先看看其他數(shù)據(jù)再來驗證。
我們也可以找找具有較小訓練誤差的內(nèi)容。僅得到70%的正確率還不夠好。
這里有個復雜些的模型,這時你該開始擔心過擬合了。我做的是用一系列線用來作分隔,這條線上面的均為共和黨,這條線下面的均為民主黨。所以除去這個那個,仍然能捕捉到很多相同的內(nèi)容。
這種情況下,我得到12個真正,13個真負,只有5個誤報。這樣挺好的。可以看到那5個是下面的這5個紅點,準確度為0.833。
現(xiàn)在如果我把它運用在測試數(shù)據(jù)上,我得到一個還不錯的結(jié)果。準確率大約是0.6。
我可以運用這個想法來嘗試推廣,看是否能找到更好的模型。
還有其他的測量方法,我將把這個用作最后的例子。我們用到的另一個測量方法稱為PPV陽性預測值(positive predictive value)。意思是在所有標注肯定的內(nèi)容中,有多少為真正(TP)。在實線和虛線模型中,我得到的值約是0.57。訓練數(shù)據(jù)中復雜模型效果不錯,測試數(shù)據(jù)的值更好。
靈敏度和特異度
最后另外兩個例子稱為靈敏度(sensitivity)和特異度(specificity)。靈敏度基本上能告訴你正確的百分比;特異度則為否定的百分比。
我給你們看這個是因為這是需要權(quán)衡的地方。我可以理解為靈敏度就是,在所有正確和錯誤標注的集合中,有多少是標注正確的,有多少標注正確的是我想要的。我可以讓靈敏度為1,將所有內(nèi)容標注為我想要的。但是特異度將為0,因為我將有很多標注錯誤的。我也可以使特異度為1,否定一切,認為沒有一個是實例。真負(TN)為1,情況很好,但是靈敏度變?yōu)?。這需要權(quán)衡。
當考慮機器學習算法時,使用選擇的分類,我們將面臨權(quán)衡。我們可以損失靈敏度來提高特異度,反之亦然。你將看到一個不錯的技術(shù),稱為接收者操作曲線??梢宰屇懔私馊绾翁幚磉@種問題。
非常感謝,我們下次見。
聯(lián)系客服