標籤:

1-5 Unsupervised Learning

哈哈,由於原版視頻教程沒有了英文字幕

所以,現在就不能翻譯啦,只能用國語寫啦!

各位同志海涵!

這節課我們進行的是第二種主要的機器學習問題,叫做無監督學習,在上一講中我們已經講過了監督學習,回想起上次的數據集,每個樣本都已經被標記為正樣本或者負樣本,即良性和惡性腫瘤,因此對於監督學習中的每一個樣本,我們已經被清楚地告知了什麼是所謂的正確答案,即它們是良性還是惡性。

在無監督學習中,我們用的數據會和監督學習里的看起來有些不一樣,在無監督學習中,沒有屬性或標籤這一概念,也就是說所有的數據都是一樣的,沒有區別。所以在無監督學習中,我們只有一個數據集,沒有人告訴我們該怎麼做,我們也不知道每個數據點究竟是什麼意思,相反它只告訴我們現在有一個數據集,你能在其中找到某種結構嗎?對於給定的數據集無監督演算法可能判定該數據集包含兩個不同的聚類。

你看,這是第一個聚類,這是另一個聚類,你猜對了,無監督學習演算法會把這些數據分成兩個不同的聚類,所以這就是所謂的聚類演算法,實際上它被用在許多地方

我們再看一個關於Google新聞的例子,進入到這個URL news.google.com

去看看谷歌新聞每天都在幹什麼呢?他們每天都會收集成千上萬的網路上的新聞,然後將它們分組,組成一個個新聞專題,比如,我們來看看這個URL有關BP油井事故的報道

所以讓我們點擊這些URL中的一個,就會來到這樣一個網頁,這是一篇來自華爾街的有關BP油井泄露事故的報道標題為《BP殺死了Macondo》Macondo是個地名,就是那個漏油事故的地方,如果你從這個組裡點擊一個不同的URL,那麼你可能會得到不同的新聞,這裡是一則CNN的新聞,是一個有關石油泄漏的視頻,如果你再點擊第三個鏈接,又會出現不同的新聞,這邊是英國衛報有關BP石油泄漏,所以谷歌新聞所做的就是去搜索成千上萬條新聞,然後自動的將他們聚合在一起

因此,有關同一主題的新聞被顯示在一起,實際上聚類演算法和無監督學習演算法也可以被用於許多其他的問題這裡我們舉個它在基因組學中的應用,下面是一個關於基因晶元的例子,基本的思想是給定一組不同的個體,對於每個個體,檢測他們是否擁有某個特定的基因,也就是說你要去分析有多少基因顯現出來了。因此這些顏色,紅綠灰等等,他們展示了這些不同的個體是否擁有一個特定基因的不同程度,然後你能做的就是運行一個聚類演算法把不同的個體歸入不同的類,這就是無監督學習。我們沒有提前告知這個演算法,這些是第一類的人、這些是第二類的人、這些是第三類的人等等,相反我們只是告訴演算法,你看,這兒有一堆數據,我不知道這個數據是什麼,我不知道裡面都有些什麼類型,叫什們名字,我甚至不知道都有哪些類型,但是,請問你能自動找出這些數據中的類型嗎?然後自動地按照得到的類型把這些個體分類,雖然事先我並不知道哪些類型,因為對於這些數據樣本來說,我們沒有給演算法一個正確答案,所以這就是無監督學習

無監督學習或聚類演算法在其他領域也有著大量的應用,它被用來組織大型的計算機集群

大型數據中心,也就是大型計算機集群,並試圖找出那些機器趨向於協同工作,如果你把這些機器放在一起,你就可以讓你的數據中心更加高效的工作。第二種應用是用於社交網路的分析,所以,如果可以得知哪些朋友你用email聯繫的最多或者知道你的Facebook好友,或者你的Google+里的朋友,知道了這些以後我們是否可以自動識別那些是很要好的朋友組,那些僅僅是互相認識的朋友組。許多公司擁有大量的客戶信息資料庫,客戶數據集,你能否自動找出不同的市場分割,並自動將你的客戶分到不同的細分市場中,從而有助於我在不同的細分市場中進行更有效的銷售,這也是無監督學習,我們現在有這些客戶數據,但是我們事先不知道有哪些細分市場,而且對於我們數據集的某個客戶,我們也不能預先知道誰屬於細分市場一,誰屬於細分市場二等等。但是我們必須讓這個演算法自己去從數據中心發現這一切。最後,事實上無監督學習也被應用在天文數據分析,通過這些聚類演算法,我們發現了很多驚人的、有趣的、以及實用的關於星系是如何誕生的理論,所有的這些都是聚類演算法的例子,而聚類只是無監督學習的一種,現在來說另一種。

我先來介紹一下雞尾酒宴問題,想像一下有一個宴會,有一屋子的人大家都坐在一起而且在同時說話,有許多聲音混雜在一起,因為每個人都是在同一時間說話的,在這種情況下你很難聽清楚你面前的人說的話,因此比如這樣一個場景。宴會上只有兩個人同時說話,我們準備了兩個麥克風,把他們放在房間里,然後因為這兩個麥克風距離這兩個人的距離是不一樣的,每個麥克風都記錄下了來自兩個人的聲音的不同組合,也許A的聲音在第一個麥克風裡的聲音會響一點,也許B的聲音在第二個麥克風裡會比較響一點,因為兩個麥克風的位置相對於兩個說話的人的位置是不同的,但是每個麥克風都會錄到來自兩個說話者的重疊部分的聲音,這裡有一個來自一個研究員錄下的兩個說話者的聲音

在這個酒會上有兩個人各自的從1數到10,但用的是兩種不同的語言,我們能做的就是把這兩個語音錄入一種無監督演算法當中,稱為「雞尾酒會演算法」讓這個演算法幫你找出其中蘊含的分類,然後這個演算法就會去聽這些錄音,並且這聽起來像兩個音頻錄音被疊加在一起,所以我們才能聽到這樣的效果。此外這個演算法還會分離出這兩個被疊加在一起的音頻源。事實上這是我們的雞尾酒會演算法的第一個輸出,在電腦分離出來英文聲音和另一個聲音。另一個例子也是在一個類似的場景下。貌似需要一個非常複雜的程序分理處音頻等,實際上要實現剛才的效果只需要一行代碼

當然研究人員花了很長時間想出這個代碼,不是說這是一個簡單的問題,事實上如果你使用一個正確的編程環境,許多學習演算法使用很短的代碼寫出來的,所以這也是為什麼在這門課中我們要講的使用Octave的編程環境,Octave是一個免費的開源代碼的軟體,使用Octave或Matlab這類的工具,許多學習演算法都可以用幾行代碼就可以實現,在後續課程中,會教大家如何使用Octave,學習如何在Octave中實現這些演算法,或者有Matlab可以使用。事實上在矽谷,很多的機器學習演算法我們都是先用Octave寫一個程序原型,當確定可以運行後才考慮在C++或者Java環境中運行。因為在Octave中實現這些學習演算法的速度快的讓你無法想像,在這裡每一個函數,例如SVD,意思是奇異值分解,但這其實是解線性方程的一個慣例,它被內置在Octave軟體中了,如果試圖在C++或者Java中做這個將需要寫N多行代碼,並且還要鏈接複雜的C++庫或Java庫,所以可以在C++或Java或·Python中實現這個代碼,只是會更加複雜而已,如果你使用Octave的話會學得更快,並且你用Octave作為學習工具和開發原型的工具,將會更快。

接下來到了問題時間:

我們談到了無監督學習,它是一種學習機制,你給演算法大量的數據,要求它找出數據中蘊含的類型結構。

上面的問題中:垃圾郵件的標記,我們將此視為一個監督學習問題;新聞故事的例子正是我們在本課中講到的谷歌新聞的例子,我們介紹了你可以如何使用聚類演算法將這些文章聚合在一起,所以這是無監督學習問題;市場細分的例子也是一個無監督學習的例子,因為要拿到數據,然後要求它自動發現細分市場;最後一個例子,糖尿病這實際上就像我們,上節課講到的腫瘤的例子,只不過這裡不是好的或壞的細胞,現在是有糖尿病或者沒有糖尿病,所以這是有監督的學習問題。


推薦閱讀:

關於不平衡數據集以及代價敏感學習的探討
譜聚類的consistency
數據嗨客 | 第6期:不平衡數據處理
學Python,這10道題你一定得會
Learning Explanatory Rules from Noisy Data 閱讀筆記3

TAG:機器學習 |