无监督学习与有监督学习的本质区别是什么_吴恩达老师课程笔记系列第三节-无监督学习定义...
第三節-無監督學習定義
我們將介紹第二種主要的機器學習問題。叫做無監督學習。
上個課程中,已經介紹了監督學習。回想當時的數據集,如圖表所示,這個數據集中每條數據都已經標明是陰性或陽性,即是良性或惡性腫瘤。所以,對于監督學習里的每條數據,我們已經清楚地知道,訓練集對應的正確答案,是良性或惡性了。
在無監督學習中,我們已知的數據。看上去有點不一樣,不同于監督學習的數據的樣子,即無監督學習中沒有任何的標簽或者是有相同的標簽或者就是沒標簽。所以我們已知數據集,卻不知如何處理,也未告知每個數據點是什么。別的都不知道,就是一個數據集。你能從數據中找到某種結構嗎?針對數據集,無監督學習就能判斷出數據有兩個不同的聚集簇。這是一個,那是另一個,二者不同。是的,無監督學習算法可能會把這些數據分成兩個不同的簇。所以叫做聚類算法。事實證明,它能被用在很多地方。
聚類應用的一個例子就是在谷歌新聞中。如果你以前從來沒見過它,你可以到這個URL網址news.google.com去看看。谷歌新聞每天都在,收集非常多,非常多的網絡的新聞內容。它再將這些新聞分組,組成有關聯的新聞。所以谷歌新聞做的就是搜索非常多的新聞事件,自動地把它們聚類到一起。所以,這些新聞事件全是同一主題的,所以顯示到一起。
事實證明,聚類算法和無監督學習算法同樣還用在很多其它的問題上。
其中就有基因學的理解應用。一個DNA微觀數據的例子。基本思想是輸入一組不同個體,對其中的每個個體,你要分析出它們是否有一個特定的基因。技術上,你要分析多少特定基因已經表達。所以這些顏色,紅,綠,灰等等顏色,這些顏色展示了相應的程度,即不同的個體是否有著一個特定的基因。你能做的就是運行一個聚類算法,把個體聚類到不同的類或不同類型的組(人)……
所以這個就是無監督學習,因為我們沒有提前告知算法一些信息,比如,這是第一類的人,那些是第二類的人,還有第三類,等等。我們只是說,是的,這是有一堆數據。我不知道數據里面有什么。我不知道誰是什么類型。我甚至不知道人們有哪些不同的類型,這些類型又是什么。但你能自動地找到數據中的結構嗎?就是說你要自動地聚類那些個體到各個類,我沒法提前知道哪些是哪些。因為我們沒有給算法正確答案來回應數據集中的數據,所以這就是無監督學習。
無監督學習或聚集有著大量的應用。它用于組織大型計算機集群。我有些朋友在大數據中心工作,那里有大型的計算機集群,他們想解決什么樣的機器易于協同地工作,如果你能夠讓那些機器協同工作,你就能讓你的數據中心工作得更高效。第二種應用就是社交網絡的分析。所以已知你朋友的信息,比如你經常發email的,或是你Facebook的朋友、谷歌+圈子的朋友,我們能否自動地給出朋友的分組呢?即每組里的人們彼此都熟識,認識組里的所有人?還有市場分割。許多公司有大型的數據庫,存儲消費者信息。所以,你能檢索這些顧客數據集,自動地發現市場分類,并自動地把顧客劃分到不同的細分市場中,你才能自動并更有效地銷售或不同的細分市場一起進行銷售。這也是無監督學習,因為我們擁有所有的顧客數據,但我們沒有提前知道是什么的細分市場,以及分別有哪些我們數據集中的顧客。我們不知道誰是在一號細分市場,誰在二號市場,等等。那我們就必須讓算法從數據中發現這一切。最后,無監督學習也可用于天文數據分析,這些聚類算法給出了令人驚訝、有趣、有用的理論,解釋了星系是如何誕生的。這些都是聚類的例子,聚類只是無監督學習中的一種。
我現在告訴你們另一種。我先來介紹雞尾酒宴問題。嗯,你參加過雞尾酒宴吧?你可以想像下,有個宴會房間里滿是人,全部坐著,都在聊天,這么多人同時在聊天,聲音彼此重疊,因為每個人都在說話,同一時間都在說話,你幾乎聽不到你面前那人的聲音。所以,可能在一個這樣的雞尾酒宴中的兩個人,他倆同時都在說話,假設現在是在個有些小的雞尾酒宴中。我們放兩個麥克風在房間中,因為這些麥克風在兩個地方,離說話人的距離不同每個麥克風記錄下不同的聲音,雖然是同樣的兩個說話人。聽起來像是兩份錄音被疊加到一起,或是被歸結到一起,產生了我們現在的這些錄音。另外,這個算法還會區分出兩個音頻資源,這兩個可以合成或合并成之前的錄音,實際上,雞尾酒算法的第一個輸出結果是:
1,2,3,4,5,6,7,8,9,10,
所以,已經把英語的聲音從錄音中分離出來了。
第二個輸出是這樣:
1,2,3,4,5,6,7,8,9,10。
看看這個無監督學習算法,實現這個得要多么的復雜,是吧?它似乎是這樣,為了構建這個應用,完成這個音頻處理似乎需要你去寫大量的代碼或鏈接到一堆的合成器JAVA庫,處理音頻的庫,看上去絕對是個復雜的程序,去完成這個從音頻中分離出音頻。事實上,這個算法對應你剛才知道的那個問題的算法可以就用一行代碼來完成。
就是這里展示的代碼:[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
研究人員花費了大量時間才最終實現這行代碼。我不是說這個是簡單的問題,但它證明了,當你使用正確的編程環境,許多學習算法是相當短的程序。所以,這也是為什么在本課中,我們打算使用Octave編程環境。Octave,是免費的開源軟件,使用一個像Octave或Matlab的工具,許多學習算法變得只有幾行代碼就可實現。
后面,我會教你們一點關于如何使用Octave的知識,你就可以用Octave來實現一些算法了。或者,如果你有Matlab(盜版?),你也可以用Matlab。事實上,在硅谷里,對大量機器學習算法,我們第一步就是建原型,在Octave建軟件原型,因為軟件在Octave中可以令人難以置信地、快速地實現這些學習算法。這里的這些函數比如SVM(支持向量機)函數,奇異值分解,Octave里已經建好了。如果你試圖完成這個工作,但借助C++或JAVA的話,你會需要很多很多行的代碼,并鏈接復雜的C++或Java庫。所以,你可以實現這些算法,借助C++或Java或Python,它只是用這些語言來實現會更加復雜。(編者注:這個是當時的情況,現在Python變主流了)
Octave作為編程環境,如果使用Octave作為學習工具,以及作為原型工具,它會讓你對學習算法的學習和建原型快上許多。
事實上,許多人在大硅谷的公司里做的其實就是,使用一種工具像Octave來做第一步的學習算法的原型搭建,只有在你已經讓它工作后,你才移植它到C++或Java或別的語言。事實證明,這樣做通常可以讓你的算法運行得比直接用C++實現更快,所以,我知道,作為一名指導者,我必須說“相信我”,但對你們中從未使用過Octave這種編程環境的人,我還是要告訴你們這一點一定要相信我,我想,對你們而言,我認為你們的時間,你們的開發時間是最有價值的資源。我已經見過很多人這樣做了,我把你看作是機器學習研究員,或機器學習開發人員,想更加高產的話,你要學會使用這個原型工具,開始使用Octave。
最后,總結下本視頻內容,我有個簡短的復習題給你們。
我們介紹了無監督學習,它是學習策略,交給算法大量的數據,并讓算法為我們從數據中找出某種結構。
好的,希望你們還記得垃圾郵件問題。如果你有標記好的數據,區別好是垃圾還是非垃圾郵件,我們把這個當作監督學習問題。
新聞事件分類的例子,就是那個谷歌新聞的例子,我們在本視頻中有見到了,我們看到,可以用一個聚類算法來聚類這些文章到一起,所以是無監督學習。
細分市場的例子,我在更早一點的時間講過,你可以當作無監督學習問題,因為我只是拿到算法數據,再讓算法去自動地發現細分市場。
最后一個例子,糖尿病,這個其實就像是我們的乳腺癌,上個視頻里的。只是替換了好、壞腫瘤,良性、惡性腫瘤,我們改用糖尿病或沒病。所以我們把這個當作監督學習,我們能夠解決它,作為一個監督學習問題,就像我們在乳腺癌數據中做的一樣。
下一節,我們將深入探究特定的學習算法,開始介紹這些算法是如何工作的,和我們還有你如何來實現它們。
總結
以上是生活随笔為你收集整理的无监督学习与有监督学习的本质区别是什么_吴恩达老师课程笔记系列第三节-无监督学习定义...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: l2-004 这是二叉搜索树吗?_Lee
- 下一篇: 从零开始发布前端代码到服务器上_无服务器