Machine Learning(機器學習)是研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,從新組織已有的知識結構使之不斷改善自身的性能。程序員
它是人工智能的核心,是使計算機具備智能的根本途徑,其應用遍佈人工智能的各個領域,它主要使用概括、綜合而不是演譯。web
在過去的十年中,機器學習幫助咱們自動駕駛汽車,有效的語音識別,有效的網絡搜索,並極大地提升了人類基因組的認識。算法
機器學習是當今很是廣泛,你可能會使用這一天幾十倍而不自知。不少研究者也認爲這是最好的人工智能的取得方式。chrome
在本課中,您將學習最有效的機器學習技術,並得到實踐,讓它們爲本身的工做。更重要的是,你會不只獲得理論基礎的學習,並且得到那些須要快速和強大的應用技術解決問題的實用技術。最後,你會學到一些硅谷利用機器學習和人工智能的最佳實踐創新。數據庫
本課程提供了一個普遍的介紹機器學習、數據挖掘、統計模式識別的課程。主題包括:編程
(一)監督學習(參數/非參數算法,支持向量機,核函數,神經網絡)網絡
(二)無監督學習(聚類,降維,推薦系統,深刻學習推薦)app
(三)在機器學習的最佳實踐(誤差/方差理 論;在機器學習和人工智能創新過程)框架
本課程還將使用大量的案例研究,您還將學習如何 運用學習算法構建智能機器人(感知,控制),文本的理解(Web搜索,反垃圾郵件),機器學習
計算機視覺,醫療信息,音頻,數據挖掘,和其餘領域。
本課程須要 10 周共 18 節課,相對之前的機器學習視頻,這個視頻更加清晰,並且每課 都有 ppt 課件,推薦學習。
第一課、 引言(Introduction)
1.1 歡迎
1.2 機器學習是什麼?
1.3 監督學習
1.4 無監督學習
1.1 歡迎
第一個視頻主要講了什麼是機器學習,機器學習能作些什麼事情。 機器學習是目前信息技術中最激動人心的方向之一。在這門課中,你將學習到這門技術的前沿,並能夠本身實現學習機器學習的算法。 你或許天天都在不知不覺中使用了機器學習的算法每次,你打開谷歌、必應搜索到你須要的內容,正是由於他們有良好的學習算法。谷歌和微軟實現了學習算法來排行網頁每次, 你用 Facebook 或蘋果的圖片分類程序他能認出你朋友的照片,這也是機器學習。每次您閱讀您的電子郵件垃圾郵件篩選器,能夠幫你過濾大量的垃圾郵,這也是一種學習算法。對我來講,我感到激動的緣由之一是有一天作出一個和人類同樣聰明的機器。實現這個想法任重而道遠,許多 AI 研究者認爲,實現這個目標最好的方法是經過讓機器試着模仿人的大腦學 習我會在這門課中介紹一點這方面的內容。
在這門課中,你還講學習到關於機器學習的前沿情況。但事實上只瞭解算法、數學並不能解決你關心的實際的問題。因此,咱們將花大量的時間作練習,從而你本身能實現每一個這些算法,從而瞭解內部機理。那麼,爲何機器學習如此受歡迎呢?緣由是,機器學習不僅是用於人工智能領域。 咱們創造智能的機器,有不少基礎的知識。好比,咱們可讓機器找到 A 與 B 之間的最短 路徑,但咱們仍然不知道怎麼讓機器作更有趣的事情,如 web搜索、照片標記、反垃圾郵件。咱們發現,惟一方法是讓機器本身學習怎麼來解決問題。因此,機器學習已經成爲計算 機的一個能力。如今它涉及到各個行業和基礎科學中。我從事於機器學習,但我每一個星期都跟直升機飛行員、生物學家、不少計算機系統程序員交流(我在斯坦福大學的同事同時也是這樣)和 平均每一個星期會從硅谷收到兩、三個電子郵件,這些聯繫個人人都對將學習算法應用於他們本身的問題感興趣。這代表機器學習涉及的問題很是普遍。有機器人、計算生物學、硅谷中 大量的問題都收到機器學習的影響。
這裏有一些機器學習的案例。好比說,數據庫挖掘。機器學習被用於數據挖掘的緣由之一是網絡和自動化技術的增加,這意味着,咱們有史上最大的數據集好比說,大量的硅谷公 司正在收集 web 上的單擊數據,也稱爲點擊流數據,並嘗試使用機器學習算法來分析數據, 更好的瞭解用戶,併爲用戶提供更好的服務。這在硅谷有巨大的市場。再好比,醫療記錄。隨着自動化的出現,咱們如今有了電子醫療記錄。若是咱們能夠把醫療記錄變成醫學知識, 咱們就能夠更好地理解疾病。再如,計算生物學。仍是由於自動化技術,生物學家們收集的大量基因數據序列、DNA序列和等等,機器運行算法讓咱們更好地瞭解人類基因組,你們都 知道這對人類意味着什麼。再好比,工程方面,在工程的全部領域, 咱們有愈來愈大、愈來愈大的數據集,咱們試圖使用學習算法,來理解這些數據。另外,在機械應用中,有些人 不能直接操做。例如,我已經在無人直升機領域工做了許多年。咱們不知道如何寫一段程序 讓直升機本身飛。咱們惟一能作的就是讓計算機本身學習如何駕駛直升機。
手寫識別:如今咱們可以很是便宜地把信寄到這個美國甚至全世界的緣由之一就是當你 寫一個像這樣的信封,一種學習算法已經學會如何讀你信封,它能夠自動選擇路徑,因此我 們只須要花幾個美分把這封信寄到數千英里外。事實上,若是你看過天然語言處理或計算機視覺,這些語言理解或圖像理解都是屬於 AI 領域。大部分的天然語言處理和大部分的計算機視覺,都應用了機器學習。學習算法還普遍 用於自定製程序。每次你去亞馬遜或 Netflix 或 iTunes Genius,它都會給出其餘電影或產品或音樂的建議,這是一種學習算法。仔細想想,他們有百萬的用戶;但他們沒有辦法爲百萬 用戶,編寫百萬個不一樣程序。軟件能給這些自定製的建議的惟一方法是經過學習你的行爲, 來爲你定製服務。
最後學習算法被用來理解人類的學習和了解大腦。
咱們將談論如何用這些推動咱們的 AI 夢想。幾個月前,一名學生給我一篇文章關於最 頂尖的 12 個 IT 技能。擁有了這些技能 HR 絕對不會拒絕你。這是稍顯陳舊的文章,但在這個列表最頂部就是機器學習的技能。在斯坦福大學,招聘人員聯繫我,讓我推薦機器學習學生畢業的人遠遠多於機器學習的畢業生。因此我認爲需求遠遠沒有被知足如今學習「機器學習」很是好,在這門課中,我希 望能告訴大家不少機器學習的知識。
在接下來的視頻中,咱們將開始給更正式的定義,什麼是機器學習。而後咱們會開始學習機器學習的主要問題和算法你會了解一些主要的機器學習的術語,並開始瞭解不一樣的算 法,用哪一種算法更合適。
1.2 機器學習是什麼?
機器學習是什麼?在本視頻中,咱們會嘗試着進行定義,同時讓你懂得什麼時候會使用機 器學習。實際上,即便是在機器學習的專業人士中,也不存在一個被普遍承認的定義來準確 定義機器學習是什麼或不是什麼,如今我將告訴你一些人們嘗試定義的示例。第一個機器學習的定義來自於 Arthur Samuel。他定義機器學習爲,在進行特定編程的狀況下,給予計算機學習能力的領域。Samuel 的定義能夠回溯到 50 年代,他編寫了一個西洋棋程序。這程序神奇之處在於,編程者本身並非個下棋高手。但由於他太菜了,因而就經過編程,讓西洋棋 程序本身跟本身下了上萬盤棋。經過觀察哪一種佈局(棋盤位置)會贏,哪一種佈局會輸,長此以往,這西洋棋程序明白了什麼是好的佈局,什麼樣是壞的佈局。而後就牛逼大發了,程序經過學習後,玩西洋棋的水平超過了 Samuel。這絕對是使人注目的成果。 儘管編寫者本身是個菜鳥,但由於計算機有着足夠的耐心,去下上萬盤的棋,沒有人有這耐心去下這麼多盤棋。經過這些練習,計算機得到無比豐富的經驗,因而漸漸成爲了比 Samuel 更厲害的西洋棋手。上述是個有點不正式的定義,也比較古老。另外一個年代近一點 的定義,由 Tom Mitchell 提出,來自卡內基梅隆大學,Tom 定義的機器學習是,一個好的學習問題定義以下,他說,一個程序被認爲能從經驗 E 中學習,解決任務 T,達到性能度量值 P,當且僅當,有了經驗 E 後,通過 P 評判,程序在處理 T 時的性能有所提高。我認爲經驗 e 就是程序上萬次的自我練習的經驗而任務 t 就是下棋。性能度量值 p 呢,就是它在與一 些新的對手比賽時,贏得比賽的機率。
在這些視頻中,除了我教你的內容之外,我偶爾會問你一個問題,確保你對內容有所理 解。說曹操,曹操到,頂部是 Tom Mitchell 的機器學習的定義,咱們假設您的電子郵件程序會觀察收到的郵件是否被你標記爲垃圾郵件。在這種 Email 客戶端中,你點擊「垃圾郵件」按鈕,報告某些 email 爲垃圾郵件,不會影響別的郵件。基於被標記爲垃圾的郵件,您的電 子郵件程序能更好地學習如何過濾垃圾郵件。請問,在這個設定中,任務 T 是什麼?幾秒鐘 後,該視頻將暫停。當它暫停時,您可使用鼠標,選擇這四個單選按鈕中的一個,讓我知道這四個,你所認爲正確的選項。它多是性能度量值 P。因此,以性能度量值 P 爲標準, 這個任務的性能,也就是這個任務 T 的系統性能,將在學習經驗 E 後獲得提升。
本課中,我但願教你有關各類不一樣類型的學習算法。目前存在幾種不一樣類型的學習算法。 主要的兩種類型被咱們稱之爲監督學習和無監督學習。在接下來的幾個視頻中,我會給出這些術語的定義。這裏簡單說兩句,監督學習這個想法是指,咱們將教計算機如何去完成任務, 而在無監督學習中,咱們打算讓它本身進行學習。若是對這兩個術語仍一頭霧水,請不要擔憂,在後面的兩個視頻中,我會具體介紹這兩種學習算法。此外你將聽到諸如,強化學習和 推薦系統等各類術語。這些都是機器學習算法的一員,之後咱們都將介紹到,但學習算法最經常使用兩個類型就是監督學習、無監督學習。我會在接下來的兩個視頻中給出它們的定義。本課中,咱們將花費最多的精力來討論這兩種學習算法。而另外一個會花費大量時間的任務是瞭解應用學習算法的實用建議。
我很是注重這部份內容,實際上,就這些內容而言我不知道還有哪所大學會介紹到。給你講授學習算法就好像給你一套工具,相比於提供工具,可能更重要的,是教你如何使用這些工具。我喜歡把這比喻成學習當木匠。想象一下,某人教你如何成爲一名木匠,說這是錘子,這是螺絲刀,鋸子,祝你好運,再見。這種教法很差,不是嗎?你擁有這些工具,但更重要的是,你要學會如何恰當地使用這些工具。會用與不會用的人之間,存在着鴻溝。尤爲是知道如何使用這些機器學習算法的,與那些不知道如何使用的人。在硅谷我住的地方,當我走訪不一樣的公司,即便是最頂尖的公司,不少時候我都看到人們試圖將機器學習算法應用 於某些問題。有時他們甚至已經爲此花了六個月之久。但當我看着他們所忙碌的事情時,我想說,哎呀,我原本能夠在六個月前就告訴他們,他們應該採起一種學習算法,稍加修改進行使用,而後成功的機會絕對會高得多因此在本課中,咱們要花不少時間來探討,若是你真 的試圖開發機器學習系統,探討如何作出最好的實踐類型決策,才能決定你的方式來構建你 的系統,這樣作的話,當你運用學習算法時,就不太容易變成那些爲尋找一個解決方案花費6個月之久的人們的中一員。他們可能已經有了大致的框架,只是無法正確的工做因而這就浪費了六個月的時間。因此我會花不少時間來教你這些機器學習、人工智能的最佳實踐以及 如何讓它們工做,咱們該如何去作,硅谷和世界各地最優秀的人是怎樣作的。我但願能幫你 成爲最優秀的人才,經過了解如何設計和構建機器學習和人工智能系統。這就是機器學習,這些都是我但願講授的主題。在下一個視頻裏,我會定義什麼是監督學習,什麼是無監督學習。此外,探討什麼時候使用兩者。
1.3 監督學習
在這段視頻中,我要定義多是最多見一種機器學習問題:那就是監督學習。我將在後面正式定義監督學習。
咱們用一個例子介紹什麼是監督學習把正式的定義放在後面介紹。假如說你想預測房價。 前陣子,一個學生從波特蘭俄勒岡州的研究所收集了一些房價的數據。你把這些數據畫
出來,看起來是這個樣子:橫軸表示房子的面積,單位是平方英尺,縱軸表示房價,單位是千美圓。那基於這組數據,假如你有一個朋友,他有一套 750 平方英尺房子,如今他但願把房子賣掉,他想知道這房子能賣多少錢。那麼關於這個問題,機器學習算法將會怎麼幫助你呢?
咱們應用學習算法,能夠在這組數據中畫一條直線,或者換句話說,擬合一條直線,根據這條線咱們能夠推測出,這套房子可能賣$150, 000,固然這不是惟一的算法。可能還有更好的,好比咱們不用直線擬合這些數據,用二次方程去擬合可能效果會更好。根據二次方程的曲線,咱們能夠從這個點推測出,這套房子能賣接近$200, 000。稍後咱們將討論如何選擇學習算法,如何決定用直線仍是二次方程來擬合。兩個方案中有一個能讓你朋友的房子出售得更合理。這些都是學習算法裏面很好的例子。以上就是監督學習的例子。
能夠看出,監督學習指的就是咱們給學習算法一個數據集。這個數據集由「正確答案」 組成。在房價的例子中,咱們給了一系列房子的數據,咱們給定數據集中每一個樣本的正確價 格,即它們實際的售價而後運用學習算法,算出更多的正確答案。好比你朋友那個新房子的 價格。用術語來說,這叫作迴歸問題。咱們試着推測出一個連續值的結果,即房子的價格。 通常房子的價格會記到美分,因此房價其實是一系列離散的值 可是咱們一般又把房價當作實數,當作是標量,因此又把它當作一個連續的數值。
迴歸這個詞的意思是,咱們在試着推測出這一系列連續值屬性。 我再舉另一個監督學習的例子。我和一些朋友以前研究過這個。假設說你想經過查看病從來推測乳腺癌良性與否,假若有人檢測出乳腺腫瘤,惡性腫瘤有害而且十分危險,而良性的腫瘤危害就沒那麼大,因此人們顯然會很在乎這個問題。
讓咱們來看一組數據:這個數據集中,橫軸表示腫瘤的大小,縱軸上,我標出1和0表示是或者不是惡性腫瘤。咱們以前見過的腫瘤,若是是惡性則記爲 1,不是惡性,或者說良 性記爲 0。我有 5 個良性腫瘤樣本,在 1 的位置有 5 個惡性腫瘤樣本。如今咱們有一個朋友很不幸 檢查出乳腺腫瘤。假設說她的腫瘤大概這麼大,那麼機器學習的問題就在於,你可否估算出 腫瘤是惡性的或是良性的機率。用術語來說,這是一個分類問題。
分類指的是,咱們試着推測出離散的輸出值:0 或 1 良性或惡性,而事實上在分類問題 中,輸出可能不止兩個值。好比說可能有三種乳腺癌,因此你但願預測離散輸出 0 1 2 3 0 表明良性,1 表示第一類乳腺癌,2 表示第二類癌症,3 表示第三類,但這也是分類問 題。由於這幾個離散的輸出分別對應良性,第一類第二類或者第三類癌症,在分類問題中我們能夠用另外一種方式繪製這些數據點。 如今我用不一樣的符號來表示這些數據。既然咱們把腫瘤的尺寸看作區分惡性或良性的特徵,那麼我能夠這麼畫,我用不一樣的符號來表示良性和惡性腫瘤。或者說是負樣本和正樣本 如今咱們不所有畫 X,良性的腫瘤改爲用 O 表示,惡性的繼續用 X 表示。來預測腫瘤的惡性與否。
在其它一些機器學習問題中,可能會遇到不止一種特徵。舉個例子,咱們不只知道腫瘤的尺寸,還知道對應患者的年齡。在其餘機器學習問題中,咱們一般有更多的特徵,我朋友 研究這個問題時,一般採用這些特徵,好比腫塊密度,腫瘤細胞尺寸的一致性和形狀的一致性等等,還有一些其餘的特徵。這就是咱們即將學到最有趣的學習算法之一。那種算法不只能處理 2 種 3 種或 5 種特徵,即便有無限多種特徵均可以處理。
上圖中,我列舉了總共 5 種不一樣的特徵,座標軸上的兩種和右邊的 3 種,可是在一些學習問題中,你但願不僅用 3 種或 5 種特徵。相反,你想用無限多種特徵,好讓你的算法能夠 利用大量的特徵,或者說線索來作推測。那你怎麼處理無限多個特徵,甚至怎麼存儲這些特 徵都存在問題,你電腦的內存確定不夠用。咱們之後會講一個算法,叫支持向量機,裏面有一個巧妙的數學技巧,能讓計算機處理無限多個特徵。想象一下,我沒有寫下這兩種和右邊的三種特徵,而是在一個無限長的列表裏面,一直寫一直寫不停的寫,寫下無限多個特徵, 事實上,咱們能用算法來處理它們。
如今來回顧一下,這節課咱們介紹了監督學習。其基本思想是,咱們數據集中的每一個樣本都有相應的「正確答案」。再根據這些樣本做出預測,就像房子和腫瘤的例子中作的那樣。 咱們還介紹了迴歸問題,即經過迴歸來推出一個連續的輸出,以後咱們介紹了分類問題,其 目標是推出一組離散的結果。
如今來個小測驗:假設你經營着一家公司,你想開發學習算法來處理這兩個問題:
1. 你有一大批一樣的貨物,想象一下,你有上千件如出一轍的貨物等待出售,這時你想預測接下來的三個月能賣多少件?
2. 你有許多客戶,這時你想寫一個軟件來檢驗每個用戶的帳戶。對於每個帳戶,你要判斷它們是否曾經被盜過?
那這兩個問題,它們屬於分類問題、仍是迴歸問題? 問題一是一個迴歸問題,由於你知道,若是我有數千件貨物,我會把它當作一個實數,一個連續的值。所以賣出的物品數,也是一個連續的值。 問題二是一個分類問題,由於我會把預測的值,用 0 來表示帳戶未被盜,用 1 表示帳戶曾經被盜過。因此咱們根據帳號是否被盜過,把它們定爲 0 或 1,而後用算法推測一個帳號是 0 仍是 1,由於只有少數的離散值,因此我把它歸爲分類問題。 以上就是監督學習的內容。
1.4 無監督學習
本次視頻中,咱們將介紹第二種主要的機器學習問題。叫作無監督學習。
上個視頻中,已經介紹了監督學習。回想當時的數據集,如圖表所示,這個數據集中每 條數據都已經標明是陰性或陽性,便是良性或惡性腫瘤。因此,對於監督學習裏的每條數據,咱們已經清楚地知道,訓練集對應的正確答案,是良性或惡性了。
在無監督學習中,咱們已知的數據。看上去有點不同,不一樣於監督學習的數據的樣子, 即無監督學習中沒有任何的標籤或者是有相同的標籤或者就是沒標籤。因此咱們已知數據集,殊不知如何處理,也未告知每一個數據點是什麼。別的都不知道,就是一個數據集。你能 從數據中找到某種結構嗎?針對數據集,無監督學習就能判斷出數據有兩個不一樣的彙集簇。 這是一個,那是另外一個,兩者不一樣。是的,無監督學習算法可能會把這些數據分紅兩個不一樣的簇。因此叫作聚類算法。事實證實,它能被用在不少地方。
聚類應用的一個例子就是在谷歌新聞中。若是你之前歷來沒見過它,你能夠到這個 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,它只是用這些語言來實現會更加複雜。
我已經見到,在我教機器學習將近十年後的如今,發現學習能夠更加高速,若是使用 Octave 做爲編程環境,若是使用 Octave 做爲學習工具,以及做爲原型工具,它會讓你對學習算法的學習和建原型快上許多。
事實上,許多人在大硅谷的公司裏作的其實就是,使用一種工具像 Octave 來作第一步的學習算法的原型搭建,只有在你已經讓它工做後,你才移植它到 C++或 Java 或別的語言。 事實證實,這樣作一般可讓你的算法運行得比直接用 C++實現更快,因此,我知道,做爲 一名指導者,我必須說「相信我」,但對大家中從未使用過 Octave 這種編程環境的人,我仍是要告訴大家這一點必定要相信我,我想,對大家而言,我認爲大家的時間,大家的開發時間是最有價值的資源。我已經見過不少人這樣作了,我把你看做是機器學習研究員,或機器學習開發人員,想更加高產的話,你要學會使用這個原型工具,開始使用 Octave。
最後,總結下本視頻內容,我有個簡短的複習題給大家。
咱們介紹了無監督學習,它是學習策略,交給算法大量的數據,並讓算法爲咱們從數據中找出某種結構。
好的,但願大家還記得垃圾郵件問題。若是你有標記好的數據,區別好是垃圾仍是非垃圾郵件,咱們把這個看成監督學習問題。
新聞事件分類的例子,就是那個谷歌新聞的例子,咱們在本視頻中有見到了,咱們看到,能夠用一個聚類算法來聚類這些文章到一塊兒,因此是無監督學習。 細分市場的例子,我在更早一點的時間講過,你能夠看成無監督學習問題,由於我只是拿到算法數據,再讓算法去自動地發現細分市場。 最後一個例子,糖尿病,這個其實就像是咱們的乳腺癌,上個視頻裏的。只是替換了好、壞腫瘤,良性、惡性腫瘤,咱們改用糖尿病或沒病。因此咱們把這個看成監督學習,咱們可以解決它,做爲一個監督學習問題,就像咱們在乳腺癌數據中作的同樣。 好了,以上就是無監督學習的視頻內容,在下一個視頻中,咱們將深刻探究特定的學習算法,開始介紹這些算法是如何工做的,和咱們還有你如何來實現它們