閱讀814 返回首頁    go 阿裏雲 go 技術社區[雲棲]


關於機器學習算法 你需要了解的東西

我們上次已經討論了機器學習能夠影響的業務類型。現在,讓我們來回顧一下你需要了解的技術術語,這樣你才能高效地與數據科學團隊進行合作,並協助他們,讓他們的工作成果可以對你的業務產生盡可能大的影響(或至少讓你知道他們在說什麼)。

算法、模型和數據

從概念層麵上來講,我們正在構建一個機器,給這個機器一組輸入數據,然後通過找到數據中的模式並從中學習,能夠產生某種預期的輸出。

一種非常常見的情況就是讓機器在一組輸入數據中查找,然後產生相對應的輸出數據。機器在輸入數據中識別出模式,並創建一組複雜的規則,然後將其應用於以前從未見過的輸入並產生所需的輸出。例如,給定房屋的麵積、地址和房間數(輸入),我們來預測房屋的銷售價格(輸出)。假設我們有10000組這樣的數據,包括房屋的麵積、地址、房間數量,以及銷售價格。則機器會基於這些數據“訓練”自己,即識別出房間麵積、地址、房間數影響房屋價格的模式,這樣,隻要我們給出一個從未見過的房子的3個輸入項,就可以預測出房子的價格了。

數據科學家的作用是找到給定輸入並能夠獲得預期輸出的最佳機器。她有多個模板,對於機器來說,稱之為**算法**。從這些模板中生成的解決具體問題的機器被稱為**模型**。模板有各種不同的選項和設置,可以通過調整這些選擇和設置來從同一模板生成不同的模型。還可以使用不同的模板或調整相同模板的設置來生成多個模型,以便測試出哪個模型能提供最佳結果。

請注意,模型輸出隻是在一定概率上對決策是正確的或者有用的。模型並不是100%正確的,而是根據模型所看到的大量數據而進行的“最佳猜測”。模型看到的數據越多,提供有用輸出的可能性就越大。

數據科學家用來“訓練”機器的已知輸入和輸出集合(即讓模型識別數據中的模式並創建規則)叫做“**訓練集**”。該數據用於與一個或多個“模板”一起創建用於解決問題的一個或多個模型。記住,即使隻使用了一個“模板”(算法),也可以通過調整某些選項來從同一模板生成多個模型。

在得到了幾個“訓練過”的模型之後,就必須對它們進行檢查,看看它們是否能正常工作,哪一個最有效。用來檢查的一組新的數據稱為“**驗證集**”。將驗證集作為輸入,然後運行模型,查看哪一個模型輸出的結果最接近驗證集的輸出。在我們上麵的例子中,就是看哪一種模型預測出來的房屋的價格與實際售價最接近。在這個階段中,需要有一組新的數據來作為驗證集,因為這些模型是根據訓練集創建的,所以它們在訓練集上能夠工作得很好,不會給出真實的結果。

一旦驗證了哪種模型性能最佳並選擇了最優者,我們的數據科學家就需要確定該模型的實際性能,也就是說,這個最好的模型在解決問題方麵到底好到什麼程度。再一次,我們需要另外一個新的數據集,因為模型在訓練集和驗證集上都能表現良好!這最後一個數據集稱為“**測試集**”。在我們的例子中,係統會檢查對於用測試集作為輸入預測出來的房價有多接近測試集的實際價格。

“學習”的類型

應用於解決機器學習問題的算法類型取決於你所擁有的數據。對學習算法進行分類是基於構建模型時所需的數據:數據是否需要包括輸入和輸出或僅僅是輸入,需要多少個數據點以及何時收集數據。根據上述分類原則,可以分為4個主要的類別:監督學習、無監督學習、半監督學習和強化學習。

監督學習

我們在上一節中詳細討論的案例描述了我們所說的“監督學習”。這種學習類型需要有大量**標記數據**示例,即由輸入和相應的輸出組成的數據。在我們的房屋價格示例中,“標記”是指用模型預測的結果來對輸入進行標記。

在監督學習算法中可以看到標記數據(也稱為“**參考標準**”數據),從這些數據中學習並根據這些實例進行預測。他們需要大量的標記數據:雖然數據的數量取決於用例,但幾百個數據點是最起碼的。

使用監督學習解決的兩個經典問題是:

  • 回歸。根據其他明顯的數據集對變量產生的影響來推斷未知變量的值。在時間預測中有兩個常見用途。例如,我們之前的那個根據位置和麵積等變量來預測住宅價格的例子,以及預測未來價格,例如,根據曆史和目前的價格數據,預測房屋從現在到一年以後的價格。回歸是一種統計方法,它用於確定自變量(你已擁有的數據)與其所需預測值的因變量之間的關係。

  • 分類。確定實體屬於多個類別中的哪一個類別。這可以是一個二元分類,例如,確定某個帖子是否會像病毒一樣傳播(是/否);也可以是多標簽分類,例如,在產品照片上標記合適的類別(可能有數百個類別)。

無監督學習

在無監督學習中,算法在試圖識別數據中模式的時候,無需使用預期結果來標記數據集。數據是“未標記的”,即沒有附加任何有意義的標記。通過無監督學習方法可以解決一些經典問題:

  • 聚類給定某個相似性標準,找出哪些與其他另外一個更相似。使用聚類的一個領域是文本搜索,例如,返回的搜索結果包含了很多非常相似的文檔。聚類可用來將它們進行分組,讓用戶更方便地識別出差異較大的文檔。

  • 關聯。根據某種關係將對象分類到不同的桶中,這樣,桶中某個物體的存在預示著另一個物體也存在。比如類似於“買了xxx的人也買了yyy”這樣的推薦問題:如果對大量的購物車進行分析,則可以看出,購物車中商品xxx的存在很有可能暗示著產品yyy也在購物車中,那麼,你可以立即向將產品xxx放入購物車的人推薦產品yyy。

  • 異常檢測在需要標記和處理的數據中識別意外模式。標準的應用範圍包括了對複雜係統的欺詐檢測和健康監測。

半監督學習

這是監督學習和無監督學習混合的結果,在這種“學習”中,算法需要一些訓練數據,但是比監督學習的要少很多(可能要差一個數量級)。其算法可以是在監督學習和無監督學習中使用的方法的擴展:分類、回歸、聚類、異常檢測等等。

強化學習

算法以有限的數據集開始,在學習的同時,還可以獲得更多關於其預測的反饋信息,以進一步改善學習效果。

正如你所看到的,除了要解決的問題類型外,你所擁有的數據量也會影響到你所能使用的學習方法。這也適用於另一種方式:你需要使用的學習方法可能需要比你現在擁有的更多的數據,這樣才能有效地解決你的問題。我們稍後再討論這個。

其他常見的“流行語”

在你的工作中,還會遇到其他一些術語。了解他們與我們今天談論到的類別之間的關係很重要。

深度學習與上麵的那些定義並沒有什麼關係。它隻是應用特定類型的係統來解決學習問題,其解決方案可以是監督的,也可以是無監督的,等等。

人工神經網絡(ANN)是一種學習係統,它試圖通過不同層上的“神經”網絡來模擬我們大腦的工作方式。神經網絡至少有一個輸入層(即數據被攝入網絡的一組神經元),一個輸出層(將結果傳遞出來的神經元)以及兩者之間的一個或多個層,稱為“隱藏層”(真正做計算工作的層)。深度學習隻是使用具有多個隱藏層的神經網絡來完成學習任務。如果你曾經使用過這樣的網絡,恭喜你,你也可以合理地扔掉這個時髦術語了!

集合方法或**綜合學習**是使用多個模型來獲得結果,這樣比利用單個模型獲得的結果要更好。這些模型可以采用不同的算法,或是使用不同參數的相同算法。比如,對於某種類型的預測,你有一組模型,每一個模型都能產生一個預測,有一些處理方法能夠平衡不同的預測結果,並決定應該輸出什麼樣的組合。集合方法通常用於監督學習(它們在預測問題中非常有用),但也可以用於無監督學習。你的數據科學團隊可能會測試這些方法,並在適當的時候使用它們。

自然語言處理(NLP)是計算機科學領域的一門研究機器理解語言的學科。不是所有類型的NLP都使用機器學習。例如,如果我們生成一個“標簽雲”(一個詞出現在文本中的次數的視覺表示法),這就不涉及學習。對語言和文字的更加複雜的分析和理解往往需要機器學習。這裏有一些例子:

  • 關鍵字生成。理解正文的主題並自動為其創建關鍵字。

  • 語言歧義。從一個詞或一句句子的多種可能的解釋中確定相關的含義。

  • 情緒分析理解在文字中表達出來的情緒的積極或者消極的程度。

  • 命名實體提取在文本中識別公司、人員、地點、品牌等等;當這些名稱並不特殊時,要提取出來就會特別困難(例如,公司“微軟”比公司“目標”更容易識別,因為“目標”是英文中的一個單字)。

NLP不僅用於機器學習領域裏麵向語言的應用,例如chatbots,它也被廣泛用於準備和預處理數據,這樣,這些數據才能成為許多機器學習模型的有用輸入。我們稍後在討論這個。

請注意:上麵的定義是為了表達其主要思想,讓大家更易理解;對於詳細的科學定義,請參考其他來源。

問題如何影響解決方案(另外還有一些關鍵的機器學習概念)

用機器學習來實現的戰略目標將決定許多下遊決策。為了確保你的數據科學團隊能為業務生成正確的解決方案,了解一些基本的機器學習概念及其對業務目標的影響是非常重要的。

算法的選擇

在問題定義上的一個小變動可能需要有一個完全不同的算法來解決,或者至少要使用不同的數據輸入來構建不同的模型。一個能夠為用戶識別照片類型的約會網站可以使用無監督學習技術(比如聚類)來識別常見的主題。而如果要向特定的某個人推薦潛在的約會對象,則網站可能要使用基於輸入的監督學習,輸入數據需具體到個人,例如他們已經看過的照片。

特征的選擇

機器學習模型識別數據中的模式。輸入到模型中的數據被組織成特征(也稱為變量或屬性):這些特征都是相關的、大部分獨立的數據片段,描述了你想要預測或識別的現象的某些方麵。

以前文提到的那家希望優先考慮貸款申請人外展服務的公司為例。如果我們將問題定義為“根據客戶轉換的可能性優先考慮”,我們將會得到包括類似客戶對公司各種外展活動的響應率等特征。如果我們將問題定義為“優先考慮最可能償還貸款的客戶”,我們就不會得到這些特征,因為它們與評估客戶的可能性無關。

目標函數的選擇

目標函數是你要優化的目標,或者是模型試圖預測的結果。例如,如果你向用戶推薦他們可能感興趣的商品,則模型的輸出可能是用戶在看到商品時點擊該商品的概率,也可能是用戶購買商品的概率。目標函數的選擇主要取決於業務目標,在這個例子中,你對用戶的參與感興趣(目標函數可能是點擊或停留的時間)還是對營業收入感興趣(目標函數是購買)?另一個要考慮的關鍵因素是數據的可用性:對於要學習的算法,你必須提供大量“標記”為正(用戶看到並點擊的產品)或負(用戶看到的產品,但沒有點擊)的數據點。

文章原標題《What You Need to Know About Machine Learning Algorithms and Why You Should Care》,作者:Yael Gavish,譯者:夏天,審校:主題曲哥哥。

文章為簡譯,更為詳細的內容,請查看原文

最後更新:2017-08-14 10:02:14

  上一篇:go  程序猿(媛)們注意啦!Git、SVN、Mercurial版本控製係統被爆遠程命令執行漏洞
  下一篇:go  低價營銷網站建設是陷阱,中小企業要謹記!