日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

机器学习温和指南

發布時間:2025/3/21 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习温和指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


機器學習溫和指南

發表于2015-09-11 15:00| 253次閱讀| 來源MonkeyLearn| 1 條評論| 作者Raúl Garreta

機器學習深度學習SVM神經網絡 width="22" height="16" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-09-08%2F2825647&type=3&count=&appkey=&title=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E4%B8%8ENLP%E4%B8%93%E5%AE%B6%E3%80%81MonkeyLearn%E8%81%94%E5%90%88%E5%88%9B%E5%A7%8B%E4%BA%BA%26CEO%20Ra%C3%BAl%20Garreta%E9%9D%A2%E5%90%91%E5%88%9D%E5%AD%A6%E8%80%85%E5%A4%A7%E4%BD%93%E6%A6%82%E6%8B%AC%E4%BD%BF%E7%94%A8%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%BF%87%E7%A8%8B%E4%B8%AD%E7%9A%84%E9%87%8D%E8%A6%81%E6%A6%82%E5%BF%B5%EF%BC%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%92%8C%E6%8C%91%E6%88%98%EF%BC%8C%E6%97%A8%E5%9C%A8%E8%AE%A9%E8%AF%BB%E8%80%85%E8%83%BD%E5%A4%9F%E7%BB%A7%E7%BB%AD%E6%8E%A2%E5%AF%BB%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%9F%A5%E8%AF%86%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1442052710439" frameborder="0" scrolling="no" allowtransparency="true">摘要:機器學習與NLP專家、MonkeyLearn聯合創始人&CEO Raúl Garreta面向初學者大體概括使用機器學習過程中的重要概念,應用程序和挑戰,旨在讓讀者能夠繼續探尋機器學習知識。

【編者按】機器學習是如今人工智能領域中進展最大的方面,更多的初學者開始進入了這個領域。在這篇文章中,機器學習與NLP專家、MonkeyLearn聯合創始人&CEO?Raúl Garreta面向初學者大體概括使用機器學習過程中的重要概念,應用程序和挑戰,旨在讓讀者能夠繼續探尋機器學習知識。

機器學習是人工智能的一個分支,它通過構建算法讓計算機學習,并且在數據集上使用這些算法來完成任務,而不需要進行明確編碼。

明白了嗎?我們可以讓機器去學習如何做事情!當我第一次聽到它的時候,讓我非常興奮。那意味著我們可以對計算機進行編碼,讓它們自己去學習東西!

學習的能力是智能最重要的一個方面。將這種能力運用到機器上,應該是向讓計算機更智能邁出了一大步。事實上,機器學習是如今人工智能領域中進展最大的方面;現在它是個時髦的話題,并且使用機器學習也非常可能造就出更智能機器。

這篇文章將會向初學者簡要介紹機器學習。我將大體概括使用機器學習過程中的重要概念,應用程序和挑戰。給出機器學習正式的詳盡的說明不是本文的宗旨,而是向讀者介紹一些初步概念,讓讀者能夠繼續探尋機器學習知識。

機器學習真面目

好了,并不是所有事物都和聽說的那樣美好,機器學習也有它的局限之處。我們不能構建類似于《星際迷航》中的Data或者《2001太空漫游》中的Hal 9000這樣的智能機器。但是,我們擁有足夠的現實世界的應用程序,機器學習在此神奇般的起著作用。下面是一些實用機器學習應用中最常見的分類:

圖像處理

圖像處理的問題基本上都需要分析圖像獲取數據或是做一些轉換。下面是一些例子:

  • 圖像標記,比如在Facebook中,算法可以自動檢測照片中出現的你的或者你朋友的臉。基本上是機器學習算法從你手動標記的照片中學習。
  • 光學字符識別(OCR),算法學會將手稿或者掃描文本轉換成數字化版本。該算法需要學會將手寫字符圖像轉換成相應的數字化字母。
  • 自動駕駛汽車,讓汽車通過圖像處理來自動駕駛的機制之一。機器學習算法通過攝像機拍攝的每一幀圖像來學習哪里是道路的邊緣,是否有停車標志或者是否有車靠近。
  • 文本分析

    文本分析是我們從文本文件,比如推特,郵件,聊天記錄,文檔等中提取或分類信息。下面是一些流行的例子:

  • 垃圾郵件過濾,是最為人知也是最常用的文本分類應用(給文本分類)之一。垃圾郵件過濾器學習如何基于內容和主題將郵件歸類為垃圾郵件。
  • 情感分析,文本分類的另一個應用,該算法必須學會基于作者表達的情緒,來將一個觀點分類成積極、中立或者消極。
  • 信息提取,從文本中,學會提取特定的信息或數據塊,比如,提取地址,實體,關鍵詞等。
  • 數據挖掘

    數據挖掘是用來從數據中發現某些模式或者做出預測。這個定義有點普通,不過你可以理解成從海量數據庫表中挖掘有用的信息。每一行都可以是我們的訓練實例,每一列都可以作為一個特征。我們可能會感興趣用表中剩下的列來預測一條新的列,或者發現某種模式來對行進行分組。比如:

  • 異常檢測:檢測異常值,例如信用卡欺詐檢測,你可以從一個用戶平常的購物模式來檢測哪些購物方式是異常行為。
  • 關聯規則:比如,在超市或者電子商務網站,你可以通過觀察哪些產品會一起被購買來發現客戶的購買習慣。這些信息可以用于營銷目的。
  • 分組:比如,在SaaS平臺,可以通過用戶行為和資料來對用戶進行分組。
  • 預測:從剩余變量中預測出另一個變量(數據庫中的一列)。比如,你可以通過對現有客戶資料和信用評分這些信息來學習并預測新客戶的信用評分。
  • 視頻游戲與機器人

    視頻游戲和機器人是機器學習得到應用的一個巨大領域。一般來說我們有一個Agent(游戲角色或機器人),它必須根據環境(視頻游戲中的虛擬環境或者對于機器人來說的真實環境)來行動。機器學習可以使這個Agent執行任務,比如移動到某個環境中而同時避開障礙或者敵人。在這些情形下一個最受歡迎的機器學習技術是強化學習,Agent通過學習環境的強化系數(如果Agent碰到了障礙物強化系數則為負,如果達到目標則為正)來執行任務。

    好了,我現在知道什么是機器學習了,但是它是如何工作的呢?

    大約10年前我讀過的第一批關于機器學習書籍中有一本是Tom Mitchell寫的《機器學習》。這本書是1997年寫的,但是書中的總體概念在今天仍然有用。

    在那本書中,我喜歡書中對機器學習的正式定義,如下:

    對于某類任務T和性能度量P,如果一個計算機程序在T上以P衡量的性能隨著經驗E而自我完善,那么我們稱這個計算機程序在從經驗E學習。

    比如,人工游戲玩家要學會下國際象棋(任務T),可以通過查看以前國際象棋比賽或與導師對弈(經驗E)來學習。它的性能P可以用它與人類玩家對弈獲勝的比例來度量。

    讓我們用更多例子來闡述:

    案例1:向系統中輸入一張圖片,系統需要判別圖片中是否有巴拉克·奧巴馬的臉(一般來說是類似于Facebook的圖像自動標記)。

    案例2:向系統中輸入一條推文,系統判別這條推文是否帶有積極或消極情感。

    案例3:向系統中輸入某人的一些信息,系統計算出此人償還信用卡貸款的概率。

    在案例1中,系統任務是檢測巴拉克·奧巴馬的臉何時在圖像中出現。可以將他出現在哪些照片或不出現在哪些照片中的信息作為經驗。系統的性能可以用系統正確識別出奧巴馬臉的次數比例來度量。

    在案例2中,系統任務是對一條推文進行情感分析。系統的經驗可以是一組推文和與它們相對應的情緒。系統的性能可以由系統對新推文情感分析正確的比例來度量。

    在案例3中,系統任務是進行信用評分。系統可以將一系列用戶資料和相對應的信用評分作為經驗。可以用平方誤差(預測和預期得分之間的差異)作為性能度量。

    為了讓算法學習將輸入轉換成期望的輸出,你必須提供訓練實例或者訓練樣例,也就是Mitchell所定義的經驗E。一組訓練集是一系列實例的集合,它們將作為樣例,機器學習算法從這些樣例中學習并且完成預期任務。很好理解,不是嗎?這就像你給小孩示范如何扔球一樣,你扔幾次球來教他如何做,然后通過觀看那些樣例,他開始學會自己扔球了。

    每一個訓練實例通常表示為一組固定的屬性或特征。特征是用來表示每一個實例的方式。例如,在案例1中,一張圖片可以由每個像素的灰度級別來表示。在案例2中,推文可以用推文中出現的字詞來表示。在案例3中,信用記錄可以用此人的年齡、薪水、職業等來表示。

    計算和選擇合理的特征來表示一個實例是使用機器學習的過程中最重要的任務之一,在本文稍后部分我們將討論這點。

    機器學習算法的種類

    在本節中我們將討論兩大類機器學習算法:監督式學習和非監督式學習算法。這兩類算法的主要區別在于我們提供給算法的訓練樣例,算法使用樣例的方式以及它們解決問題的類別。

    監督式學習

    在監督式學習中,機器學習算法可以看作是將特定輸入轉換成期望輸出的過程。

    機器學習需要學會如何將所有可能輸入轉換成正確/期望輸出,所以每個訓練樣例都有特定的輸入和期望輸出。

    在人工國際象棋手的案例中,輸入可以是特定的棋盤狀態,輸出則可能是在這一狀態下最好的下棋方式。

    根據輸出的不同,我們又可以把監督式學習分為兩小類:

    分類

    當輸出值屬于離散和有限集合,那么這就是一個分類問題。案例2可以看作是一個分類問題,輸出是一個有限集合:積極,消極或者中立,我們的訓練樣例是這樣的:


    回歸

    當輸出是連續的數值,比如,概率,那么這就是一個回歸問題。案例3就是一個回歸問題,因為結果是介于0到1的數字,它代表一個人償還債務的概率。在這個案例下,我們的訓練樣例是這樣的:


    監督式學習是機器學習算法中最受歡迎的一類。使用這種方法的缺陷是,對于每一個訓練樣例,我們都需要提供與之對應的正確輸出,在大多情況下,這會耗費大量人力物力財力。比如,在情感分析案例中,如果我們需要10000條訓練案例(推文),我們需要對每一條推文都標記上正確的情感(積極,消極或者中立)。這將需要一組人來閱讀并標記每一條推文(非常耗時又無聊的工作)。這通常是機器學習算法最常見的瓶頸:收集正確標記的訓練數據。

    非監督式學習

    第二類機器學習算法叫做非監督式學習。在這種情況下,訓練數據只需要輸入到算法中即可,不需要有與之對應的期望輸出。典型的用例就是發現訓練樣例之間隱藏的結構或者關系。典型的案例就是聚類算法,我們學習找到相似實例或者一組實例(集群)。比如我們有一條新聞,我們希望推薦一條相似的新聞。一些聚類算法比如K-means從輸入數據中來學習。

    機器學習算法

    好了,現在來講講數學和邏輯知識了。為了將輸入轉換成期望輸出,我們可以使用不同的模型。機器學習并不是唯一的算法,你可能聽說過支持向量機,樸素貝葉斯,決策樹或者深度學習。那些是不同的機器學習算法,它們都可以解決同樣的問題:學習將輸入轉換成正確的輸出。

    那些不同的機器學習算法使用不同的范式或技術來執行學習過程,并將它們所學知識表示出來。

    在我們講解每一個算法之前,我們要了解,最常見的原則是,機器學習算法試圖達到一般化。也就是說,它們試圖用最簡單的理論來解釋事物,這被稱為奧卡姆剃刀原則。所有機器學習算法,不管它所使用的范式如何,都將嘗試創建最簡單的假設(做出最少假設的那個)來說明大部分的訓練實例。

    有很多機器學習算法,不過我們來簡要介紹下三種流行的算法:

    支持向量機:該模型試圖構建一個超平面高維空間集,它試圖通過計算與最近實例最大距離來區分不同類的實例。這個概念直觀簡單,但是該模型有時候也會非常復雜和強大。事實上,對于某些領域支持向量機是你目前可以使用的最好的機器算法之一。

    概率模型:這類模型通常通過對問題進行概率分布建模來預測正確的響應。這類算法中最流行的可能要屬樸素貝葉斯分類器了,它使用貝葉斯定理和特征之間獨立性假設來構建分類器。這個模型的優勢之一是即簡單又強大,而且不僅會返回預測值還會返回預測值的確定度,這是非常有用的。

    深度學習:是基于大名鼎鼎的人工神經網絡模型的機器學習的新領域。神經網絡有著聯結的操作方式,它們試圖模仿(以非常簡單的方式)大腦的工作方式。基本上,它們由一組相互關聯的神經元(處理的基本單位)組成,這些神經元被組織成許多層。簡單來說,深度學習使用更深的層構建了新的結構,通過高層次抽象改進了算法,不僅改進了學習方式,而且構建了自動表示最重要特征的結構。

    機器學習中的重要方面

    機器學習聽起來是個美妙的概念,它確實如此,但是機器學習中有一些過程并不是那么自動完成的。事實上,在設計解決方案時,很多時候需要人工操作。然而,這是得到優良結果至關重要的一環。其中一些方面有:

    我該使用哪類機器學習算法?

    監督式還是非監督式?

    你有標記的數據嗎?也就是輸入和對應的輸出。如果有,那么你可以使用監督式學習算法。如果沒有,那么使用非監督式算法可以解決問題。

    分類,回歸還是聚類?

    這主要取決于你想要解決什么樣的問題。如果你想標記數據(用離散的選項來標記),分類可能是正確的選擇。相反,如果你想選擇一個數字,比如說分數,回歸則是你最佳的選擇。或者你想在電子商務網站上針對用戶目前瀏覽信息來推薦相似產品,那么聚類則是你最好的選擇。

    深度學習,SVM,樸素貝葉斯,決策樹···哪個最好?

    我的答案是:沒有最好的。顯然,深度學習和支持向量機已經證明,在不同應用中它們是最強大和最靈活的算法。但考慮到根據不同特定應用,一些機器學習算法可能比其他算法更好。分析它們各自的優勢并且使用它們!

    特征工程

    特征工程是我們提取、選擇用來表示訓練樣例和實例的最重要的特征供機器學習算法處理的過程。這個過程是機器學習(有時沒有給予足夠的贊譽和重視)中最重要的方面。

    請注意:如果你不向算法提供有質量保證的特征,結果會是糟糕的,即使你使用了此情形下最好的機器學習算法。這就像是你在黑暗中努力學習如何用肉眼閱讀,不管你有多聰明你都不能做到。

    特征提取

    為了向機器學習算法輸入數據,你通常需要將原始數據轉換成算法能夠“理解”的東西。這個過程被稱作特征提取。通常我們將原始數據轉換成特征向量。

    在案例1中,我們如何向機器學習算法輸入一張圖像呢?

    一個直接的方式就是將圖像轉換成向量,每一個成分是圖像中每一個像素的灰度值。所以每一個成分或者特征,都可以用0到255的值表示,0表示黑色,255表示白色,1到254是不同程度的灰色。

    這種方式可能可行,但是如果我們提供更高層次的特征可能會工作得更好:

    • 圖像包含人臉嗎?
    • 膚色是什么?
    • 眼睛是什么顏色的?
    • 臉上有毛發嗎?

    這些是更高層次特征,它們向算法提供了更多的知識而不只是每個像素的灰度值(它們的計算可以用其他機器學習算法來完成)。通過提供更高層次特征我們就在“幫”機器學習算法得到更好的學習信息來判斷我的或者其他某個人的臉是否出現在一張圖像中。

    如果我們實施更好的特征提取:

    • 我們算法能夠學習并得到預期結果的可能性會更高。
    • 我們可能不需要那么多訓練樣例。
    • 這樣一來,我們可以顯著減少訓練模型所需的時間。

    特征選擇

    有些時候(并不是大多情況下),我們選擇向算法輸入的特征可能并沒多大用處。比如,當對一條推文進行情感標記的時候,我們可能將推文的長度,推文發表的時間等作為特征,這些特征可能有用也可能沒有用,而且有自動的方法來識別它們是否有用。直觀地,特征選擇算法通過技術手段對每條特征打分,然后根據它們的分值返回最重要的那些特征。

    另一個需要記住的要點是:避免使用海量特征集。有些人可能嘗試添加所有可能的特征到模型中讓算法來學習。但這不是個好主意,當我們添加更多的特征來代表實例時,空間的維度就增加了,使得矩陣更加稀疏。直觀地,因為我們得到更多的特征,我們必須有非常多的實例在表示每個特征的組合。這就是所謂的維度災難,隨著模型復雜度的增長,訓練樣例的數目需要以指數形式隨著增長,相信我,這將是棘手的問題。

    訓練樣例

    你必須向機器學習算法輸入訓練樣例。取決于你想要解決的問題,我們將會使用到幾百,幾千,幾百萬甚至上億的訓練樣例。而且,保持樣例的質量也至關重要,如果你向算法中輸入了錯誤的樣例,得到良好結果的可能性會降低。

    收集大量的優質數據來訓練機器學習算法通常是一項耗費人力物力的工作。除非你已經有標記好的數據,否則你需要自己手動或者雇傭他人來標記數據。一些眾包平臺的工具嘗試解決這樣的問題,你可以在這里找到一些工具來完成任務。或者通過使用自己的機器學習模型生成的輔助程序也可以將標記操作變得更高效。

    訓練樣本的一般規則是:你收集了越是優質的訓練數據,你可能就可能得到更好的訓練結果。

    測試樣本和性能指標

    在我們訓練完一個機器學習模型之后,我們需要測試它的性能。這是非常重要的,否則你不知道你的模型是否學會了東西!

    這個概念非常簡單,我們使用一個測試集,一個不包含在訓練集中的實例集合。基本上,我們將輸入每個測試樣本到模型中,然后觀察它是否會得出預期結果。在監督式學習分類的情形中,我們只需要輸入每條測試數據,然后檢查模型輸出是否與預期一樣。如果我們的模型正確得出了95%的測試樣本的結果,我們說這個模型的準確率是95%。

    需要牢記的是,訓練和測試數據集不能重合,這是測試模型泛化能力和預測能力的唯一途徑。你可能在你的訓練數據上能夠得到較高的準確率,但如果在單獨的測試集上則得到較差的準確率。這就是過擬合,也就是算法對訓練樣本過度擬合導致糟糕的預測能力。通常避免過擬合的方法是使用較少特征的,更簡單的模型,簡化模型,并使用更大更具代表性的訓練集。

    準確率是最基本的指標,同時你也應該關注其他的指標,比如精準度和召回率,這將會告訴你算法的在每一個分類上(當使用監督式學習分類時)的性能如何。混淆矩陣是觀察分類算法在哪里出現混淆預測的好工具。

    對于回歸和聚類問題,有其他的指標來度量算法的性能。

    性能

    在實際應用中,如果你要實施解決方案,你必須建立一個強大和高性能的解決方案。在機器學習應用中,這會是一個復雜的任務。首先,你需要選擇機器學習框架,這不是項容易的工作,因為并不是所有的編程語言都有相關的強大工具。Python和Scikit-learn是構建強大機器學習框架可以使用的編程語言的良好例子。

    選擇好框架之后,就要考慮性能問題了。取決于數據量,復雜度和設計的算法,運行訓練算法可能會耗費大量的計算時間和內存。你可能需要運行多個訓練算法直到得到優良的結果。而且,通常你可能會用新實例來重新訓練模型來提高準確率。

    為了在使用時訓練大量模型并快速的到結果,我們通常使用較大內存和多核處理器的機器來并行訓練模型。

    這些大多是實際問題,如果你想部署機器學習解決方案到實際應用中,考慮這些問題是非常重要的。

    結束語

    就是這樣,我簡要概述了什么是機器學習。還有許多實際應用以及機器學習算法和概念本文沒有涉及,我們將這留給讀者自行研究。

    機器學習是很強大的,但訓練它也是艱難的,這篇文章中所說的訓練模型時可能出現的困難只是冰山一角。

    通常具有計算機科學特別是機器學習的背景是取得優良結果所必須的。一個人可能會在步入正軌前因為諸多困難而失望。

    這就是我們創建MonkeyLearn的原因,使用于文本分析的機器學習技術大眾化。避免重新發明輪子,讓每一個軟件開發人員或企業家迅速獲得實用的結果。以下是我們主要的工作方面,抽象所有這些問題的最終用戶,從機器學習復雜度到實際擴展性來排序,得到即插即用的機器學習。

    總結

    以上是生活随笔為你收集整理的机器学习温和指南的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。