一文讀懂機器學習

2021-03-02 數據分析

本文轉載自公眾號 sigua心底的小聲音 ,數學系的一線小研發,更新數據結構和算法 | 深度學習 | 職場等技術原創文章。
本文以圖文的形式對模型算法中的集成學習,以及對集中學習在深度學習中的應用進行了詳細解讀。Supervised learning  監督學習Unsupervised learning 無監督學習Reinforcement learning 強化學習Training, Testing, and Validation Sets過擬合overfittting和欠擬合underfitting
機器學習概覽在深入探討該主題之前,讓我們退後一步,思考一下真正的學習是什麼。我們需要為機器考慮的關鍵概念是learning from data。人類和其他動物可以通過學習經驗來調整我們的 行為。learning賦予我們生活的靈活性,我們可以調整適應新的情況,並學習新的技巧。人類學習的重要部分是remembering, adapting, and generalising:認識到上一次我們處於這種情況下(看到了此數據),我們嘗試了一些特定的動作(給出了此輸出)並且奏效了(正確),因此我們將再次嘗試,如果無法奏效,我們將嘗試其他操作。概括地說,最後一句話是關於識別不同情況之間的相似性,以便將在一個地方應用的東西可以在另一個地方使用。這就是learning有用的原因,我們可以在很多不同的地方使用我們的知識。於是,機器學習就是要使計算機修改或調整動作,讓這些動作變得更加準確,它的準確性是由所選動作與正確動作的相似程度來衡量。本質是讓計算機learning from data。Machine Learning is about building systems that can learn from data. Learning means getting better at some task, given some performance measure.機器學習類型我們將learning寬鬆地定義為通過在某項任務上的練習變得更好。這就引出了兩個重要的問題:計算機如何知道是否在變好,如何知道如何改進?這些問題有幾種不同的可能答案,它們會產生不同類型的機器學習。現在,我們將考慮機器是否在學習: 我們可以告訴算法問題的正確答案(帶標籤),以便下次可以正確解決;我們希望只需要告訴它一些正確的答案,然後它就可以「解決」如何為其他問題獲得正確的答案;或者,我們可以告訴它答案是否正確,而不是如何找到正確的答案,因此它必須搜索正確的答案;我們根據答案的正確性給答案打分(概率),而不僅僅是「正確或錯誤」的答案;最後,我們可能沒有正確的答案,我們只希望算法查找具有共同點的輸入。這些不同的答案為我們將要討論的不同算法提供了分類。Supervised learning  監督學習監督學習提供了具有正確答案(targets/標籤)的示例訓練集,並且基於該訓練集,算法可以概括為正確響應所有可能的輸入,這也稱為learning from exemplars。
Unsupervised learning 無監督學習無監督學習未提供正確的響應,而是算法嘗試識別輸入之間的相似性,以便將具有共同點的輸入歸類在一起。用於無監督學習的統計方法稱為密度估計(density estimation)。Reinforcement learning 強化學習強化學習這是在監督學習和無監督學習之間的某個地方。當答案錯誤時,系統會告知該算法,但不會告訴你如何更正該算法。它必須探索並嘗試各種可能性,直到找到正確的答案。強化學習有時被稱為與批評者一起學習,因為該監視器可以對答案進行評分,但不能提出改進建議。機器學習的過程數據收集和準備: 通常很難收集,要麼是因為它需要進行很多測量,要確保它是乾淨的;它沒有重大錯誤,缺少數據等,需要考慮數據量。機器學習算法需求大量的數據,最好沒有太多的噪音,但是增加了數據集的大小增加了計算成本,並且用足夠的數據達到了最佳效果而沒有過多的計算開銷通常是不可能的。特徵選擇: 這個始終需要事先了解問題和數據;算法根據給定的數據集,選擇合適的算法。參數和模型選擇:對於許多算法,有一些參數可以必須手動設置,或者需要進行實驗才能確定適當的值。訓練給定數據集,算法和參數: 訓練應該簡單地使用計算資源以建立數據模型以進行預測新數據的輸出。評估: 在部署系統之前,需要對其進行測試和評估以確保其性能, 對未經訓練的數據的準確性計算。
如何衡量一個模型的好壞learning的目的是更好地預測輸出。知道算法成功學習的唯一真實方法是將預測與已知的目標標籤進行比較,這是針對監督學習進行訓練的方式。這表明你可以做的一件事就是僅查看算法對訓練集train set造成的錯誤error。但是,我們希望算法能推廣到訓練集中沒有看到的數據,並且顯然我們無法使用訓練集對其進行測試(因為數據已經被看見過了)。因此,我們還需要一些不同的數據(一個測試集test set)來對其進行測試。我們通過輸入測試集(input, target) 對到訓練好的網絡中,並將預測的輸出與目標進行比較,不做權重或其他參數修改:我們使用它們來確定算法的性能怎麼樣。這樣做唯一的問題是它減少了我們可用於訓練的數據量,但這是我們必須忍受的。但實際情況要比上面的描述要複雜,我們可能還想要了解算法在學習過程中的一般性: 我們需要確保進行足夠的訓練以使算法有很好的一般性。實際上,過度訓練的危險與訓練不足中的危險一樣大。在大多數機器學習算法中,可變性的數量是巨大的-對於神經網絡,權重很多,並且每個權重都可以變化。因此我們需要小心:如果訓練時間太長,那麼我們將過度擬合數據,這意味著我們已經學習了數據中的噪聲和不準確性。因此,我們學習的模型太複雜了,無法推廣。
在學習過程中有兩個不同的點。在圖的左側,曲線很好地擬合了數據的總體趨勢(已將其推廣到基本的通用函數),但是訓練誤差不會接近於零。但是右圖,隨著網絡的不斷學習,最終將產生一個更複雜的模型,該模型具有較低的訓練誤差(接近於零),這意味著它已經記住了訓練示例,包括其中的任何噪聲成分,因此已經過擬合訓練數據。


驗證集的出現我們想在算法過擬合之前停止學習過程,這意味著我們需要知道它在每個時間步上的推廣程度。我們不能為此使用訓練數據,因為它是用來訓練參數的,我們不會檢測到過度擬合;我們也不能使用測試數據,它是用來看模型性能的,我們將其保存為最終測試。因此,我們需要用於此目的的第三組數據,稱為驗證集validation set,因為到目前為止我們正在使用它來驗證學習,這被稱為統計中的交叉驗證cross-validation。這是模型選擇model selection的一部分:為模型選擇正確的參數,以便儘可能地泛化。
Training, Testing, and Validation Sets不同數據集的作用訓練集train set: 用於實際訓練算法的訓練集,把它拿來做函數擬合,使得模型好一點。驗證集validation: 用於跟蹤算法學習情況, 觀察函數好不好調整(改模型的時候依賴它),每次訓練完後把模型拿到它的上面去測試一下看看模型好不好,用於沒見過的數據,防止模型過擬合,雖然沒有訓練模型,但是改模型是依據模型的,對於模型來說,validation實際上是見過的,測試真正的效果應該給模型從來沒有見過的數據。測試集test set: 當我們的模型都能忍受兩個值的時候就定了,最後一步就是拿test來模型上作用看最終的看好壞(用過一次就不用第二次)。如果test數據上了效果還是不好,就要重新選擇這三個數據了,因為test數據集已經被見過了。
數據集劃分每種算法都需要一些合理量的數據去學習(精確度有所不同,但是算法看到的數據越多,看到每種可能輸入類型的示例的可能性就越大,儘管更多的數據也會增加計算時間)。



一般來說,數據劃分比例取決於你,如果有大量數據,通常執行2:1:1,否則進行3:1:1。拆分方式也很重要。如果你選擇前幾個作為訓練集,接下來選擇測試集,依此類推,那麼結果將是非常糟糕的,因為訓練沒有看到所有的類別。這可以通過以下方法解決:首先對數據進行隨機重新排序,或者將每個數據點隨機分配給一組數據,如下圖。


如果你確實缺乏訓練數據,那麼如果你有單獨的驗證集,可能會擔心算法將無法得到充分訓練;那麼就可以執行leave-some-out, multi-fold cross-validation。這個想法如下圖所示。數據集被隨機分為K個子集,一個子集用作驗證集,而算法對其他所有數據進行訓練。然後遺漏另一個子集,並在該子集上訓練一個新模型,並對所有不同的子集重複相同的過程。最後,測試並使用產生最小驗證誤差的模型。由於我們不得不訓練K個不同的模型,而不僅僅是一個模型,因此我們權衡了數據的運行時間。在最極端的情況下,存在留一法交叉驗證,該算法僅對一項數據進行驗證,並對其餘所有數據進行訓練。
無論我們使用多少數據來測試訓練過的算法,我們仍然需要確定結果是否良好。我們將在這裡介紹一種適用於分類問題的方法,稱為混淆矩陣。混淆矩陣:製作一個包含水平和垂直方向上所有可能類別的方矩陣,並沿著表格頂部列出這些類別作為預測輸出,然後在左側向下列出目標類別。因此,例如矩陣(i,j)的元素告訴我們輸入的數據中,本來是i類的,結果算法判別它呈j類的數據有多少個。算法判斷對的數據是對角線上的任何內容。假設我們有三個類:C1,C2和C3。現在,我們計算次數,當類別是C1時候,算法判別它是C1的次數,判別它是C2的次數,等等。直到填寫完表格:
該表告訴我們,對於這三個類,大多數示例已正確分類,但是C3類的兩個示例被錯誤分類為C1,依此類推。對於類少的時候,這是查看輸出的好方法。如果只需要一個數字,則可以將對角線上的元素之和除以矩陣中所有元素的總和,這就是所謂的準確性accuracy,我們將看到它並不是評估機器學習算法結果的唯一方法。我們不僅可以測量準確性,還可以做更多分析結果的工作。如果考慮這些類的可能輸出,則可以將它們安排在這樣的簡單圖表中,ture positive是真實情況,predicted condition 是預測情況,condition positive是真實情況是真的,condition negative是真實情況是假的,predicted condition positive是預測情況是真的,predicted condition negative是預測情況是假的。就像混淆矩陣一樣,此圖表的對角線上的輸入是正確的(預測情況和真實情況一致),而副對角線上的輸入則是錯誤的(預測情況和真實情況不一致)。準確性的問題在於,它無法告訴我們結果的所有信息,因為它將四個數字變成一個。有一些互補的測量值可以幫助我們解釋分類器的性能,即 sensitivity 和 specificity  以及 precision 和 recall。接下來顯示它們的定義,然後進行一些解釋。
sensitivity(也稱為true positive rate)是正確的陽性樣本與分類為陽性的樣本之比。specificity 是正確的陰性樣本與分類為陰性的樣本之比。precision 是正確的陽性樣本與實際陽性樣本數量的比率,預測正確的值中,真正預測正確的是對少,準確率是多少。recall 是分類為陽性的陽性樣本中正確陽性的樣本數量的比率,這與sensitivity相同。所有正的值中,實際找到它多少個。如果再次查看該圖表,你會發現 sensitivity 和 specificity 的分母是各列的和,而 precision 和 recall 的分母是第一列和第一行的和,因此錯過了一些在否定示例中的信息。總之,這些任何一個都提供了更多的信息,而不僅僅是準確性。如果你考慮 precision 和 recall,你會發現它們在某種程度上是負相關的,因為如果 false positive 的數量增加,那麼 false negative 的數量通常會減少,反之亦然。可以將它們組合在一起以給出一個單獨的度量標準,即F1度量標準:
基礎的數據分析如果數據是數字類型,可以提前做一個數據分析,以下幾個量是比較常見的:中位數: 數據從小到大排列,最中間的數字就是中位數。百分位數: 如果將一組數據從小到大排序,並計算相應的累計百分位,則某一百分位所對應數據的值就稱為這一百分位的百分位數。數據的標準化normalization: 以前的數據差距大,通過標準化,將它們的差距縮小,這樣使得程序更好的計算,數據集和測試集都要標準化。異常值outline: 異常值的定義方法有很多,一種方法是比25%的1.5倍還小或75%的1.5倍(大太多了)還大,就是異常值。
過擬合overfittting和欠擬合underfitting過擬合overfittting: 訓練數據上效果非常好,沒見過的數據就不行 。欠擬合underfitting: 訓練數據上的效果都不怎麼行。過擬合發生在相對於訓練數據的量和噪聲,模型過於複雜的情況。可能的解決辦法有:簡化模型,可以通過選擇一個參數更少的模型(比如線性模型,而不是高階多項式模型),減少訓練數據的 屬性數或限制模型。收集更多的訓練數據(然而獲取額外的訓練數據並不是那麼輕易和廉價的)。減小訓練數據的噪聲(錯誤測量引入的教噪聲,比如修改數據錯誤,去除異常值)。欠擬合發生在你的模型過於簡單的時候,可能解決的辦法有:機器學習重點解決的事情如何克服overfitting和underfitting。在統計學中,underfitting和overfittting是bias and variance。bias: 隨著模型複雜度的上升,錯誤有一些變化。模型不夠完整,沒有把相關的特性挖掘出來。這種情況叫bias。variance: 對訓練數據太過敏感,數據稍微一變就會產生錯誤。隨著模型的複雜度越來越高,overfitting的情況會越來越多(variance),underffting的情況越來越小。期望達到對於現有的數據比較好,對於預期的數據也比較好。


Machine learning: an algorithmic perspective

本文轉載自公眾號:sigua心底的小聲音 

版權聲明:本號內容部分來自網際網路,轉載請註明原文連結和作者,如有侵權或出處有誤請和我們聯繫。

更多相關知識請回覆:「 月光寶盒 」;

數據分析(ID : ecshujufenxi )網際網路科技與數據圈自己的微信,也是WeMedia自媒體聯盟成員之一,WeMedia聯盟覆蓋5000萬人群。

相關焦點

  • 獨家 | 一文讀懂Adaboost
    【集成學習】系列往期回顧:獨家 | 一文讀懂集成學習(附學習資源) 參考資料:1. 李航.《統計學習方法》2. 周志華.《機器學習》3. 曹瑩,苗啟廣,劉家辰,高琳. AdaBoost 算法研究進展與展望.
  • 一文讀懂機器學習!
    01 機器學習分類傳統機器學習機器學習可以理解成是生產算法的算法。需要人來先做特徵提取,然後在把特徵向量化後交給機器去訓練。傳統機器學習分為 監督學習 和 無監督學習。深度學習深度學習是基於深度神經網絡的學習(DNN)。深度學習可以自動提取特徵。
  • 一文讀懂機器學習中的正則化
    一提到正則化,很多同學可能馬上會想到常用的L1範數和L2範數,在匯總之前,我們先看下LP範數是什麼鬼。範數簡單可以理解為用來表徵向量空間中的距離,而距離的定義很抽象,只要滿足非負、自反、三角不等式就可以稱之為距離。LP範數不是一個範數,而是一組範數,其定義如下:pp的範圍是[1,∞)[1,∞)。
  • 一文讀懂深度學習與機器學習的差異
    機器學習和深度學習變得越來越火。突然之間,不管是了解的還是不了解的,所有人都在談論機器學習和深度學習。無論你是否主動關注過數據科學和人工智慧,你應該已經聽說過這兩個名詞了。下文詳細解釋了機器學習和深度學習中的術語。並且,我比較了他們兩者的不同,別說明了他們各自的使用場景。什麼是機器學習和深度學習?
  • 一文讀懂機器學習中奇異值分解SVD
    點擊上方「計算機視覺life」,選擇「星標」快速獲得最新乾貨目錄:矩陣分解1.1 矩陣分解作用1.2 矩陣分解的方法一文讀懂機器學習中奇異值分解上面把主要的矩陣分解方法給列出來了,比較混亂,再給大家擺上一張矩陣分解發展的歷史:    圖1:矩陣分解發展歷史1.3 推薦學習的經典矩陣分解算法矩陣分解的算法這麼多,給大家推薦幾個經典的算法來學習:1) 經典的PCA、SVD是機器學習入門必學算法。
  • 機器學習 101:一文帶你讀懂梯度下降
    而想要建立一個機器學習模型,我們通常需要至少3個要素——問題T、性能度量P和經驗E,我們的模型將從這其中學習到一些模式知識。 為了解決問題T,我們將使用一個簡單的線性回歸模型。該模型將從經驗E中學習,經過訓練,模型就能將其知識推廣到未知數據中。 線性模型是一個很好的學習模型。
  • 獨家 | 一文讀懂Hadoop(三):Mapreduce
    讀者可以通過閱讀「一文讀懂Hadoop」系列文章,對Hadoop技術有個全面的了解,它涵蓋了Hadoop官網的所有知識點,並且通俗易懂,英文不好的讀者完全可以通過閱讀此篇文章了解Hadoop。本期獨家內容「一文讀懂Hadoop」系列文章先介紹Hadoop,繼而分別詳細介紹HDFS、MAPREDUCE、YARN的所有知識點,分為四期內容在近幾天推送。敬請關注後續內容。
  • 一文帶你讀懂機器學習和數據科學的決策樹
    Seif 翻譯 | 姚秀清 校對 | 醬番梨 整理 | 菠蘿妹 原文連結: https://towardsdatascience.com/a-guide-to-decision-trees-for-machine-learning-and-data-science-fe2607241956 決策樹是一類非常強大的機器學習模型
  • 一文讀懂機器學習分類算法(附圖文詳解)
    說起分類算法,相信學過機器學習的同學都能侃上一二。可是,你能夠如數家珍地說出所有常用的分類算法,以及他們的特徵、優缺點嗎?比如說,你可以快速地回答下面的問題麼:KNN算法的優缺點是什麼?Naive Bayes算法的基本假設是什麼?
  • 獨家 | 一文讀懂機器學習中的貝葉斯統計學
    如果我相信明天太陽不升起的概率是一百萬分之一,然後它發生了,我的信念(我的模型)是錯的可能性會非常高,然後後驗概率將被更新來預測它更有可能會再次發生。 一開始,你可能會感到沮喪,並且有點懷疑。隨著你的一天,你讀報紙,它告訴你,這位名人去世了,這種信念將進一步加強。也許你會在電視上看到他們家人哀悼的新聞,你的信念會更加堅定。然而,如果你看到電視上被採訪的人說他死亡的謠言正在被擴散,你對朋友告訴你的話的可信度就會被降低。
  • 一文讀懂電容傳感器
    藍色標題,獲取文章】 10、一文讀懂光纖傳感器 11、一文讀懂溫溼度傳感器 12
  • 學界丨一文讀懂機器學習需要哪些數學知識---附精品資源
    一文讀懂機器學習需要哪些數學知識0.前言本篇文章是由留德華叫獸 在知乎的優秀回答改編擴展而成的另外本文所列舉的課程比較多,要想一下子去窮盡所有課程顯然也不現實,大可不必打好所有的數學基礎再去學機器學習,最好的做法是當你對機器學習本身的理解達到一定瓶頸的時候,你可以補一補一些相關的數學基礎之後再回去看機器學習的問題也許會更快的有所突破。所以本文針對不同學習基礎的朋友們,劃分初,中,高三個學習階段,供大家在學習中進一步去取捨。
  • 一文讀懂量子機器學習:量子算法基石已經奠定
    量子系統能生產出一些非典型(atypical)模式,而一般認為經典系統無法高效地生產出這些模式。所以,有理由假定,量子計算機在某些機器學習任務上將優於經典計算機。量子機器學習這一研究領域探索如何設計和實現量子軟體,如何使量子機器學習速度比經典計算機更快。該領域最近的工作已經建造出了可以擔當機器學習程序基石的量子算法,但在硬體和軟體方面仍面臨巨大挑戰。
  • 一文讀懂磁傳感器(必須收藏)
    【點擊藍色標題,獲取文章】 >、一文讀懂接近傳感器 3、一文讀懂磁傳感器 4、一文讀懂流量傳感器
  • 教程 | 一文讀懂自學機器學習的誤區和陷阱(附學習資料)
    有些書籍雖然是經典,比如Tom Mitchell的《機器學習》,但因為其出版已經超過20年,還是不建議大家購買。在這篇文章中我所推薦的書籍和課程都相對比較經典,同時屬於緊跟時代潮流的。入門階段我推薦了1門課程和2本書,進階階段推薦了1本書,深度學習推薦了1門課程一本書,高級階段推薦了2本額外書籍。2.
  • 一文讀懂「2020限塑令」!
    一文讀懂「2020限塑令」!06 16:58 來源:澎湃新聞·澎湃號·政務 一張圖讀懂限塑令新規
  • 一文讀懂機器學習大殺器XGBoost原理
    最終得到一棵回歸樹。  二、XGBoost算法思想  該算法思想就是不斷地添加樹,不斷地進行特徵分裂來生長一棵樹,每次添加一個樹,其實是學習一個新函數,去擬合上次預測的殘差。  其中g_i為一階導數,h_i為二階導數:
  • 一文讀懂可解釋機器學習簡史,讓你的模型再也不是「Black Box」
    儘管這個領域才剛剛起步,但是它在回歸建模和基於規則的機器學習方面的相關工作卻始於20世紀60年代。最近,arXiv上的一篇論文簡要介紹了解釋機器學習(IML)領域的歷史,給出了最先進的可解釋方法的概述,並討論了遇到的挑戰。 當機器學習模型用在產品、決策或者研究過程中的時候,「可解釋性」通常是一個決定因素。
  • 一文介紹機器學習中基本的數學符號
    如果你能了解一些基本的數學符號以及相關的小技巧,那你就在看懂機器學習方法的論文或書籍描述上前進了一大步。在本教程中,你將學到機器學習技術描述中遇到的基本數學符號。數列符號機器學習中的符號常用來描述數列運算。一個數列可以是一列數據,或者代數項。索引讀懂數列符號的關鍵是要弄明白數列中的索引符號。
  • 一文讀懂即將引爆的TinyML:在邊緣側實現超低功耗機器學習【物女心經】
    這類設備也能實現機器學習嗎?一個趨勢是,人工智慧AI正在加快速度從「雲端」走向「邊緣」,進入到越來越小的物聯網設備中。在終端和邊緣側的微處理器上,實現的機器學習過程,被稱為微型機器學習,即TinyML。