第二章_機器學習基礎

文章目錄

第二章 機器學習基礎

2.1 各種常見算法圖示

迴歸算法 基於實例的算法 正則化方法
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-W9m1pBvQ-1575791211700)(./img/ch2/2.1/1.jpg)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Vwp48r0u-1575791211702)(./img/ch2/2.1/2.jpg)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nQbtynR8-1575791211703)(./img/ch2/2.1/3.jpg)]
決策樹學習 貝葉斯方法 基於核的算法
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9CM88DAz-1575791211703)(./img/ch2/2.1/4.png)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0a4R5qV7-1575791211704)(./img/ch2/2.1/5.jpg)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UE1YyADf-1575791211705)(./img/ch2/2.1/6.jpg)]
聚類算法 關聯規則學習 人工神經網絡
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-X5rFjlmh-1575791211706)(./img/ch2/2.1/7.jpg)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ayzBWwwr-1575791211707)(./img/ch2/2.1/8.jpg)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BsBVzgvA-1575791211708)(./img/ch2/2.1/9.png)]
深度學習 降低維度算法 集成算法
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BH1S52RV-1575791211709)(./img/ch2/2.1/10.jpg)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YoXrUno2-1575791211710)(./img/ch2/2.1/11.jpg)] [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-K5F2fv3r-1575791211711)(./img/ch2/2.1/12.jpg)]

2.2 監督學習、非監督學習、半監督學習、弱監督學習?

根據數據類型的不同,對一個問題的建模有不同的方式。依據不同的學習方式和輸入數據,機器學習主要分爲以下四種學習方式。

監督學習

  1. 監督學習是使用已知正確答案的示例來訓練網絡。已知數據和其一一對應的標籤,訓練一個智能算法,將輸入數據映射到標籤的過程。
  2. 監督式學習的常見應用場景如分類問題和迴歸問題。
  3. 常見算法有邏輯迴歸(Logistic Regression)和反向傳遞神經網絡(Back Propagation Neural Network)

非監督式學習

  1. 在非監督式學習中,數據並不被特別標識,適用於你具有數據集但無標籤的情況。學習模型是爲了推斷出數據的一些內在結構。
  2. 常見的應用場景包括關聯規則的學習以及聚類等。
  3. 常見算法包括Apriori算法以及k-Means算法。

半監督式學習

  1. 在此學習方式下,輸入數據部分被標記,部分沒有被標記,這種學習模型可以用來進行預測。
  2. 應用場景包括分類和迴歸,算法包括一些對常用監督式學習算法的延伸,通過對已標記數據建模,在此基礎上,對未標記數據進行預測。
  3. 常見算法如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(Laplacian SVM)等。

弱監督學習

  1. 弱監督學習可以看做是有多個標記的數據集合,次集合可以是空集,單個元素,或包含多種情況(沒有標記,有一個標記,和有多個標記)的多個元素。
  2. 數據集的標籤是不可靠的,這裏的不可靠可以是標記不正確,多種標記,標記不充分,局部標記等。
  3. 已知數據和其一一對應的弱標籤,訓練一個智能算法,將輸入數據映射到一組更強的標籤的過程。標籤的強弱指的是標籤蘊含的信息量的多少,比如相對於分割的標籤來說,分類的標籤就是弱標籤。
  4. 舉例,告訴一張包含氣球的圖片,需要得出氣球在圖片中的位置及氣球和背景的分割線,這就是已知弱標籤學習強標籤的問題。

在企業數據應用的場景下, 人們最常用的可能就是監督式學習和非監督式學習的模型。 在圖像識別等領域,由於存在大量的非標識的數據和少量的可標識數據, 目前半監督式學習是一個很熱的話題。

2.3 監督學習有哪些步驟

監督式學習
監督學習是使用已知正確答案的示例來訓練網絡。每組訓練數據有一個明確的標識或結果,想象一下,我們可以訓練一個網絡,讓其從照片庫中(其中包含氣球的照片)識別出氣球的照片。以下就是我們在這個假設場景中所要採取的步驟。
步驟1:數據集的創建和分類
首先,瀏覽你的照片(數據集),確定所有包含氣球的照片,並對其進行標註。然後,將所有照片分爲訓練集和驗證集。目標就是在深度網絡中找一函數,這個函數輸入是任意一張照片,當照片中包含氣球時,輸出1,否則輸出0。
步驟2:訓練
選擇合適的模型,模型可通過以下激活函數對每張照片進行預測。既然我們已經知道哪些是包含氣球的圖片,那麼我們就可以告訴模型它的預測是對還是錯。然後我們會將這些信息反饋(feed back)給網絡。
該算法使用的這種反饋,就是一個量化“真實答案與模型預測有多少偏差”的函數的結果。這個函數被稱爲成本函數(cost function),也稱爲目標函數(objective function),效用函數(utility function)或適應度函數(fitness function)。然後,該函數的結果用於修改一個稱爲反向傳播(backpropagation)過程中節點之間的連接強度和偏差。
我們會爲每個圖片都重複一遍此操作,而在每種情況下,算法都在儘量最小化成本函數。
其實,我們有多種數學技術可以用來驗證這個模型是正確還是錯誤的,但我們常用的是一個非常常見的方法,我們稱之爲梯度下降(gradient descent)。
步驟3:驗證
當處理完訓練集所有照片,接着要去測試該模型。利用驗證集來來驗證訓練有素的模型是否可以準確地挑選出含有氣球在內的照片。
在此過程中,通常會通過調整和模型相關的各種事物(超參數)來重複步驟2和3,諸如裏面有多少個節點,有多少層,哪些數學函數用於決定節點是否亮起,如何在反向傳播階段積極有效地訓練權值等等。
步驟4:測試及應用
當有了一個準確的模型,就可以將該模型部署到你的應用程序中。你可以將模型定義爲API調用,並且你可以從軟件中調用該方法,從而進行推理並給出相應的結果。

2.4 多實例學習?

多示例學習(multiple instance learning) :已知包含多個數據的數據包和數據包的標籤,訓練智能算法,將數據包映射到標籤的過程,在有的問題中也同時給出包內每個數據的標籤。
比如說一段視頻由很多張圖組成,假如10000張,那麼我們要判斷視頻裏是否包含某一物體,比如氣球。單張標註每一幀是否有氣球太耗時,通常人們看一遍說這個視頻裏是否有氣球,就得到了多示例學習的數據。10000幀的數據不是每一個都有氣球出現,只要有一幀有氣球,那麼我們就認爲這個數據包是有氣球的。只有當所有的視頻幀都沒有氣球,纔是沒有氣球的。從這裏面學習哪一段視頻(10000張)是否有氣球出現就是多實例學習的問題。

2.5 分類網絡和迴歸的區別?

2.3小節介紹了包含氣球照片的數據集整理。當照片中包含氣球時,輸出1,否則輸出0。此步驟通常稱爲分類任務(categorization task)。在這種情況下,我們進行的通常是一個結果爲yes or no的訓練。
但事實上,監督學習也可以用於輸出一組值,而不僅僅是0或1。例如,我們可以訓練一個網絡,用它來輸出一張圖片上有氣球的概率,那麼在這種情況下,輸出值就是0到1之間的任意值。這些任務我們稱之爲迴歸。

2.6 什麼是神經網絡?

神經網絡就是按照一定規則將多個神經元連接起來的網絡。不同的神經網絡,具有不同的連接規則。
例如全連接(full connected, FC)神經網絡,它的規則包括:

  1. 有三種層:輸入層,輸出層,隱藏層。
  2. 同一層的神經元之間沒有連接。
  3. full connected的含義:第 N 層的每個神經元和第 N-1 層的所有神經元相連,第 N-1 層神經元的輸出就是第 N 層神經元的輸入。
  4. 每個連接都有一個權值。
    神經網絡架構
    下面這張圖就是一個神經網絡系統,它由很多層組成。輸入層負責接收信息,比如一隻貓的圖片。輸出層是計算機對這個輸入信息的判斷結果,它是不是貓。隱藏層就是對輸入信息的傳遞和加工處理。
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qWh5vpdI-1575791211712)(./img/ch2/2.6/1.png)]

2.7 理解局部最優與全局最優

笑談局部最優和全局最優

柏拉圖有一天問老師蘇格拉底什麼是愛情?蘇格拉底叫他到麥田走一次,摘一顆最大的麥穗回來,不許回頭,只可摘一次。柏拉圖空着手出來了,他的理由是,看見不錯的,卻不知道是不是最好的,一次次僥倖,走到盡頭時,才發現還不如前面的,於是放棄。蘇格拉底告訴他:“這就是愛情。”這故事讓我們明白了一個道理,因爲生命的一些不確定性,所以全局最優解是很難尋找到的,或者說根本就不存在,我們應該設置一些限定條件,然後在這個範圍內尋找最優解,也就是局部最優解——有所斬獲總比空手而歸強,哪怕這種斬獲只是一次有趣的經歷。
柏拉圖有一天又問什麼是婚姻?蘇格拉底叫他到彬樹林走一次,選一棵最好的樹做聖誕樹,也是不許回頭,只許選一次。這次他一身疲憊地拖了一棵看起來直挺、翠綠,卻有點稀疏的杉樹回來,他的理由是,有了上回的教訓,好不容易看見一棵看似不錯的,又發現時間、體力已經快不夠用了,也不管是不是最好的,就拿回來了。蘇格拉底告訴他:“這就是婚姻。

優化問題一般分爲局部最優和全局最優。

  1. 局部最優,就是在函數值空間的一個有限區域內尋找最小值;而全局最優,是在函數值空間整個區域尋找最小值問題。
  2. 函數局部最小點是那種它的函數值小於或等於附近點的點。但是有可能大於較遠距離的點。
  3. 全局最小點是那種它的函數值小於或等於所有的可行點。

2.8 分類算法

2.8.1 常用分類算法的優缺點?

算法 優點 缺點
Bayes 貝葉斯分類法 1)所需估計的參數少,對於缺失數據不敏感。2)有着堅實的數學基礎,以及穩定的分類效率。 1)假設屬性之間相互獨立,這往往並不成立。(喜歡吃番茄、雞蛋,卻不喜歡吃番茄炒蛋)。2)需要知道先驗概率。3)分類決策存在錯誤率。
Decision Tree決策樹 1)不需要任何領域知識或參數假設。2)適合高維數據。3)簡單易於理解。4)短時間內處理大量數據,得到可行且效果較好的結果。5)能夠同時處理數據型和常規性屬性。 1)對於各類別樣本數量不一致數據,信息增益偏向於那些具有更多數值的特徵。2)易於過擬合。3)忽略屬性之間的相關性。4)不支持在線學習。
SVM支持向量機 1)可以解決小樣本下機器學習的問題。2)提高泛化性能。3)可以解決高維、非線性問題。超高維文本分類仍受歡迎。4)避免神經網絡結構選擇和局部極小的問題。 1)對缺失數據敏感。2)內存消耗大,難以解釋。3)運行和調差略煩人。
KNN K近鄰 1)思想簡單,理論成熟,既可以用來做分類也可以用來做迴歸; 2)可用於非線性分類; 3)訓練時間複雜度爲O(n); 4)準確度高,對數據沒有假設,對outlier不敏感; 1)計算量太大2)對於樣本分類不均衡的問題,會產生誤判。3)需要大量的內存。4)輸出的可解釋性不強。
Logistic Regression邏輯迴歸 1)速度快。2)簡單易於理解,直接看到各個特徵的權重。3)能容易地更新模型吸收新的數據。4)如果想要一個概率框架,動態調整分類閥值。 特徵處理複雜。需要歸一化和較多的特徵工程。
Neural Network 神經網絡 1)分類準確率高。2)並行處理能力強。3)分佈式存儲和學習能力強。4)魯棒性較強,不易受噪聲影響。 1)需要大量參數(網絡拓撲、閥值、閾值)。2)結果難以解釋。3)訓練時間過長。
Adaboosting 1)adaboost是一種有很高精度的分類器。2)可以使用各種方法構建子分類器,Adaboost算法提供的是框架。3)當使用簡單分類器時,計算出的結果是可以理解的。而且弱分類器構造極其簡單。4)簡單,不用做特徵篩選。5)不用擔心overfitting。 對outlier比較敏感

2.8.2 正確率能很好的評估分類算法嗎?

不同算法有不同特點,在不同數據集上有不同的表現效果,根據特定的任務選擇不同的算法。如何評價分類算法的好壞,要做具體任務具體分析。對於決策樹,主要用正確率去評估,但是其他算法,只用正確率能很好的評估嗎?
答案是否定的。
正確率確實是一個很直觀很好的評價指標,但是有時候正確率高並不能完全代表一個算法就好。比如對某個地區進行地震預測,地震分類屬性分爲0:不發生地震、1發生地震。我們都知道,不發生的概率是極大的,對於分類器而言,如果分類器不加思考,對每一個測試樣例的類別都劃分爲0,達到99%的正確率,但是,問題來了,如果真的發生地震時,這個分類器毫無察覺,那帶來的後果將是巨大的。很顯然,99%正確率的分類器並不是我們想要的。出現這種現象的原因主要是數據分佈不均衡,類別爲1的數據太少,錯分了類別1但達到了很高的正確率缺忽視了研究者本身最爲關注的情況。

2.8.3 分類算法的評估方法?

  1. 幾個常用的術語
    這裏首先介紹幾個常見的 模型評價術語,現在假設我們的分類目標只有兩類,計爲正例(positive)和負例(negative)分別是:
  1. True positives(TP): 被正確地劃分爲正例的個數,即實際爲正例且被分類器劃分爲正例的實例數(樣本數);
  2. False positives(FP): 被錯誤地劃分爲正例的個數,即實際爲負例但被分類器劃分爲正例的實例數;
  3. False negatives(FN):被錯誤地劃分爲負例的個數,即實際爲正例但被分類器劃分爲負例的實例數;
  4. True negatives(TN): 被正確地劃分爲負例的個數,即實際爲負例且被分類器劃分爲負例的實例數。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Vbh06naw-1575791211713)(./img/ch2/2.9/1.png)]

上圖是這四個術語的混淆矩陣。
1)P=TP+FN表示實際爲正例的樣本個數。
2)True、False描述的是分類器是否判斷正確。
3)Positive、Negative是分類器的分類結果,如果正例計爲1、負例計爲-1,即positive=1、negative=-1。用1表示True,-1表示False,那麼實際的類標=TF*PN,TF爲true或false,PN爲positive或negative。
4)例如True positives(TP)的實際類標=1*1=1爲正例,False positives(FP)的實際類標=(-1)*1=-1爲負例,False negatives(FN)的實際類標=(-1)*(-1)=1爲正例,True negatives(TN)的實際類標=1*(-1)=-1爲負例。

  1. 評價指標
    1. 正確率(accuracy)
      正確率是我們最常見的評價指標,accuracy = (TP+TN)/(P+N),正確率是被分對的樣本數在所有樣本數中的佔比,通常來說,正確率越高,分類器越好。
    2. 錯誤率(error rate)
      錯誤率則與正確率相反,描述被分類器錯分的比例,error rate = (FP+FN)/(P+N),對某一個實例來說,分對與分錯是互斥事件,所以accuracy =1 - error rate。
    3. 靈敏度(sensitive)
      sensitive = TP/P,表示的是所有正例中被分對的比例,衡量了分類器對正例的識別能力。
    4. 特效度(specificity)
      specificity = TN/N,表示的是所有負例中被分對的比例,衡量了分類器對負例的識別能力。
    5. 精度(precision)
      精度是精確性的度量,表示被分爲正例的示例中實際爲正例的比例,precision=TP/(TP+FP)。
    6. 召回率(recall)
      召回率是覆蓋面的度量,度量有多個正例被分爲正例,recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率與靈敏度是一樣的。
    7. 其他評價指標
      計算速度:分類器訓練和預測需要的時間;
      魯棒性:處理缺失值和異常值的能力;
      可擴展性:處理大數據集的能力;
      可解釋性:分類器的預測標準的可理解性,像決策樹產生的規則就是很容易理解的,而神經網絡的一堆參數就不好理解,我們只好把它看成一個黑盒子。
    8. 查準率和查全率反映了分類器分類性能的兩個方面。如果綜合考慮查準率與查全率,可以得到新的評價指標F1測試值,也稱爲綜合分類率:F1=2×precision×recallprecision+recallF1=\frac{2 \times precision \times recall}{precision + recall}
      爲了綜合多個類別的分類情況,評測系統整體性能,經常採用的還有微平均F1(micro-averaging)和宏平均F1(macro-averaging )兩種指標。宏平均F1與微平均F1是以兩種不同的平均方式求的全局的F1指標。其中宏平均F1的計算方法先對每個類別單獨計算F1值,再取這些F1值的算術平均值作爲全局指標。而微平均F1的計算方法是先累加計算各個類別的a、b、c、d的值,再由這些值求出F1值。由兩種平均F1的計算方式不難看出,宏平均F1平等對待每一個類別,所以它的值主要受到稀有類別的影響,而微平均F1平等考慮文檔集中的每一個文檔,所以它的值受到常見類別的影響比較大。
      ROC曲線和PR曲線

References
[1] 李航. 統計學習方法[M]. 北京:清華大學出版社,2012.

2.8.4 什麼樣的分類器是最好的?

對某一個任務,某個具體的分類器不可能同時滿足或提高所有上面介紹的指標。
如果一個分類器能正確分對所有的實例,那麼各項指標都已經達到最優,但這樣的分類器往往不存在。比如之前說的地震預測,既然不能百分百預測地震的發生,但實際情況中能容忍一定程度的誤報。假設在1000次預測中,共有5次預測發生了地震,真實情況中有一次發生了地震,其他4次則爲誤報。正確率由原來的999/1000=99.9下降爲996/10000=99.6。召回率由0/1=0%上升爲1/1=100%。對此解釋爲,雖然預測失誤了4次,但真的地震發生前,分類器能預測對,沒有錯過,這樣的分類器實際意義更爲重大,正是我們想要的。在這種情況下,在一定正確率前提下,要求分類器的召回率儘量高。

2.9 邏輯迴歸

2.9.1 理解邏輯迴歸

迴歸劃分
廣義線性模型家族裏,依據因變量不同,可以有如下劃分:

  1. 如果是連續的,就是多重線性迴歸;
  2. 如果是二項分佈,就是Logistic迴歸;
  3. 如果是Poisson分佈,就是Poisson迴歸;
  4. 如果是負二項分佈,就是負二項迴歸。
    Logistic迴歸的因變量可以是二分類的,也可以是多分類的,但是二分類的更爲常用,也更加容易解釋。所以實際中最常用的就是二分類的Logistic迴歸。

Logistic迴歸的適用性

  1. 用於概率預測。用於可能性預測時,得到的結果有可比性。比如根據模型進而預測在不同的自變量情況下,發生某病或某種情況的概率有多大;
  2. 用於分類。實際上跟預測有些類似,也是根據模型,判斷某人屬於某病或屬於某種情況的概率有多大,也就是看一下這個人有多大的可能性是屬於某病。進行分類時,僅需要設定一個閾值即可,可能性高於閾值是一類,低於閾值是另一類。
  3. 尋找危險因素。尋找某一疾病的危險因素等。
  4. 僅能用於線性問題。只有當目標和特徵是線性關係時,才能用邏輯迴歸。在應用邏輯迴歸時注意兩點:一是當知道模型是非線性時,不適用邏輯迴歸;二是當使用邏輯迴歸時,應注意選擇和目標爲線性關係的特徵。
  5. 各特徵之間不需要滿足條件獨立假設,但各個特徵的貢獻獨立計算。

2.9.2 邏輯迴歸與樸素貝葉斯有什麼區別?

  1. 邏輯迴歸是判別模型, 樸素貝葉斯是生成模型,所以生成和判別的所有區別它們都有。
  2. 樸素貝葉斯屬於貝葉斯,邏輯迴歸是最大似然,兩種概率哲學間的區別。
  3. 樸素貝葉斯需要獨立假設。
  4. 邏輯迴歸需要求特徵參數間是線性的。

2.9.3線性迴歸與邏輯迴歸的區別?(貢獻者:黃欽建-華南理工大學)

線性迴歸的樣本的輸出,都是連續值,$ y\in (-\infty ,+\infty ),而邏輯迴歸中y\in (0,1)$,只能取0和1。

對於擬合函數也有本質上的差別:

線性迴歸:f(x)=θTx=θ1x1+θ2x2+...+θnxnf(x)=\theta ^{T}x=\theta _{1}x _{1}+\theta _{2}x _{2}+...+\theta _{n}x _{n}

邏輯迴歸:f(x)=P(y=1x;θ)=g(θTx)f(x)=P(y=1|x;\theta )=g(\theta ^{T}x),其中,g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}

可以看出,線性迴歸的擬合函數,是對f(x)的輸出變量y的擬合,而邏輯迴歸的擬合函數是對爲1類的樣本的概率的擬合。

那麼,爲什麼要以1類樣本的概率進行擬合呢,爲什麼可以這樣擬合呢?

θTx=0\theta ^{T}x=0就相當於是1類和0類的決策邊界:

θTx>0\theta ^{T}x>0,則y>0.5;若$\theta ^{T}x\rightarrow +\infty ,則y \rightarrow 1 $,即y爲1類;

θTx<0\theta ^{T}x<0,則y<0.5;若$\theta ^{T}x\rightarrow -\infty ,則y \rightarrow 0 $,即y爲0類;

這個時候就能看出區別來了,在線性迴歸中θTx\theta ^{T}x爲預測值的擬合函數;而在邏輯迴歸中θTx\theta ^{T}x爲決策邊界。

線性迴歸 邏輯迴歸
目的 預測 分類
y(i)y^{(i)} 未知 (0,1)
函數 擬合函數 預測函數
參數計算方式 最小二乘法 極大似然估計

下面具體解釋一下:

  1. 擬合函數和預測函數什麼關係呢?其實就是將擬合函數做了一個邏輯函數的轉換,轉換後使得y(i)(0,1)y^{(i)} \in (0,1);
  2. 最小二乘和最大似然估計可以相互替代嗎?回答當然是不行了。我們來看看兩者依仗的原理:最大似然估計是計算使得數據出現的可能性最大的參數,依仗的自然是Probability。而最小二乘是計算誤差損失。

2.9.4 Factorization Machines(FM)模型原理

1.FM旨在解決稀疏數據的特徵組合問題,某些特徵經過關聯之後,就會與label之間的相關性就會提高,例如設備id與ip地址之間的特徵交叉就會更好的與label之間有相關性.
2.FM爲二階多項式模型
􏰠􏰡􏱔􏰼􏰝􏱗􏱞􏰨􏱈􏱣􏱤􏱥􏰠􏰡􏰼􏰝􏱕􏱗􏱁􏰇
• 假設有D維特徵,𝑥 , … , 𝑥 ,若採用線性模型,則
y=w0+j=1Dwixjy = w_{0} +\sum_{j = 1}^{D} w_{i}x_{j}
• 若考慮二階特徵組合,得到模型
y=w0+j=1Dwixj+i=1Dj=i+1Dwijxixjy = w_{0} +\sum_{j = 1}^{D} w_{i}x_{j} + \sum_{i = 1}^{D}\sum_{j = i + 1}^{D}w_{ij}x_{i}x_{j}􏰃􏰇􏰠􏰡􏰤􏰥􏱿􏰃􏰝􏰶􏰙􏰩 􏱂􏰨􏰐􏲀􏰠􏰡􏰰
– 組合特徵的參數一共有D(D-1)/2個,任意兩個參數都是獨立的
– 􏲇數􏱜據􏱜稀􏲈疏􏲉使􏰨得􏱈二􏱣􏲊次􏲋項􏰽參􏰾數􏰿的􏰇訓􏲌練􏲍很􏰪􏱂困􏰠難:
. 每個樣本都需要大量非0的xjx_{j}xix_{i}樣本
. 訓練樣本不足會導致wijw_{ij}不準確
FM採用類似model-based協同過濾中的矩陣分解方式對二次 􏱽􏱩􏱪􏰗􏰹􏰺􏱓􏱀􏱁􏰹􏰺􏱕􏱾􏰇􏱩􏱣􏰠􏰡􏰤􏰥􏰝􏱿􏰃􏰇􏰠多項式的係數進行有效表示:
y=w0+j=1Dwixj+i=1Dj=i+1D<vi,vj>xixjy = w_{0} +\sum_{j = 1}^{D} w_{i}x_{j} + \sum_{i = 1}^{D}\sum_{j = i + 1}^{D}<v_{i}, v_{j}>x_{i}x_{j}􏰃􏰇􏰠􏰡􏰤􏰥􏱿􏰃􏰝􏰶􏰙􏰩
– 􏲇FM爲進一步對隱含向量只􏲎取􏲏K􏲐維􏲑
從而<vi,vj>=k=1Kvi,kvj,k<v_{i}, v_{j}> = \sum_{k = 1}^{K} v_{i,k}v_{j,k}
– 二項式參數之前的D(D-1)/2變成了KD個 大大降低了計算量.
􏰱􏰛􏰜􏲁􏲂􏰿􏲃􏲄􏰝􏲅􏰇􏰹􏰺􏰽􏰾􏰿􏲆􏰻

2.10 代價函數

2.10.1 爲什麼需要代價函數?

  1. 爲了得到訓練邏輯迴歸模型的參數,需要一個代價函數,通過訓練代價函數來得到參數。
  2. 用於找到最優解的目的函數。

2.10.2 代價函數作用原理

在迴歸問題中,通過代價函數來求解最優解,常用的是平方誤差代價函數。有如下假設函數:

h(x)=A+Bx h(x) = A + Bx

假設函數中有AABB兩個參數,當參數發生變化時,假設函數狀態也會隨着變化。
如下圖所示

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8dnhcaiK-1575791211714)(./img/ch2/2.16/1.jpg)]

想要你和圖中的離散點,我們需要儘可能找到最優的AABB來使這條直線更能代表所有數據。如何找到最優解呢,這就需要使用代價函數來求解,以平方誤差代價函數爲例,假設函數爲h(x)=θ0xh(x)=\theta_0x
平方誤差代價函數的主要思想
平方誤差代價函數的主要思想就是將實際數據給出的值與擬合出的線的對應值做差,求出擬合出的直線與實際的差距。在實際應用中,爲了避免因個別極端數據產生的影響,採用類似方差再取二分之一的方式來減小個別數據的影響。因此,引出代價函數:

J(θ0,θ1)=1mi=1m(h(x(i))y(i))2 J(\theta_0, \theta_1) = \frac{1}{m}\sum_{i=1}^m(h(x^{(i)})-y^{(i)})^2

最優解即爲代價函數的最小值minJ(θ0,θ1)\min J(\theta_0, \theta_1)。如果是1個參數,代價函數一般通過二維曲線便可直觀看出。如果是2個參數,代價函數通過三維圖像可看出效果,參數越多,越複雜。
當參數爲2個時,代價函數是三維圖像。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sZQQchVm-1575791211715)(./img/ch2/2.16/2.jpg)]

2.10.3 爲什麼代價函數要非負?

目標函數存在一個下界,在優化過程當中,如果優化算法能夠使目標函數不斷減小,根據單調有界準則,這個優化算法就能證明是收斂有效的。
只要設計的目標函數有下界,基本上都可以,代價函數非負更爲方便。

2.10.4 常見代價函數?

  1. 二次代價函數(quadratic cost)

J=12nxy(x)aL(x)2 J = \frac{1}{2n}\sum_x\Vert y(x)-a^L(x)\Vert^2

其中,JJ表示代價函數,xx表示樣本,yy示實際值,aa表示輸出值,nn表示樣本的總數。使用一個樣本爲例簡單說明,此時二次代價函數爲:

J=(ya)22J = \frac{(y-a)^2}{2}

假如使用梯度下降法(Gradient descent)來調整權值參數的大小,權值ww和偏置bb的梯度推導如下:

δJδw=(ay)δ(z)x\frac{\delta J}{\delta w}=(a-y)\delta'(z)xδJδb=(ay)δ(z)\frac{\delta J}{\delta b}=(a-y)\delta'(z)

其中,zz表示神經元的輸入,θ\theta表示激活函數。權值ww和偏置bb的梯度跟激活函數的梯度成正比,激活函數的梯度越大,權值ww和偏置bb的大小調整得越快,訓練收斂得就越快。

:神經網絡常用的激活函數爲sigmoid函數,該函數的曲線如下所示:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Y6nvRqjR-1575791211715)(./img/ch2/2.18/1.jpg)]

假設目標是收斂到1.0。0.82離目標比較遠,梯度比較大,權值調整比較大。0.98離目標比較近,梯度比較小,權值調整比較小。調整方案合理。
假如目標是收斂到0。0.82目標比較近,梯度比較大,權值調整比較大。0.98離目標比較遠,梯度比較小,權值調整比較小。調整方案不合理。
原因:初始的代價(誤差)越大,導致訓練越慢。

  1. 交叉熵代價函數(cross-entropy)
    交叉熵代價函數:

J=1nx[ylna+(1y)ln(1a)] J = \frac{1}{n}\sum_x[y\ln a + (1-y)\ln{(1-a)}]

其中,JJ表示代價函數,xx表示樣本,yy表示實際值,aa表示輸出值,nn表示樣本的總數。
權值ww和偏置bb的梯度推導如下:

δJδwj=1nx(δ(a)y)  δJδb=1nx(δ(z)y) \frac{\delta J}{\delta w_j}=\frac{1}{n}\sum_{x}(\delta{(a)}-y)\;, \frac{\delta J}{\delta b}=\frac{1}{n}\sum_{x}(\delta{(z)}-y)

當誤差越大時,梯度就越大,權值ww和偏置bb調整就越快,訓練的速度也就越快。
二次代價函數適合輸出神經元是線性的情況,交叉熵代價函數適合輸出神經元是S型函數的情況。

  1. 對數釋然代價函數(log-likelihood cost)
    對數釋然函數常用來作爲softmax迴歸的代價函數。深度學習中普遍的做法是將softmax作爲最後一層,此時常用的代價函數是對數釋然代價函數。
    對數似然代價函數與softmax的組合和交叉熵與sigmoid函數的組合非常相似。對數釋然代價函數在二分類時可以化簡爲交叉熵代價函數的形式。
    在tensorflow中:
    與sigmoid搭配使用的交叉熵函數:tf.nn.sigmoid_cross_entropy_with_logits()
    與softmax搭配使用的交叉熵函數:tf.nn.softmax_cross_entropy_with_logits()

2.10.5 爲什麼用交叉熵代替二次代價函數

  1. 爲什麼不用二次方代價函數
    由2.18節可知,權值ww和偏置bb的偏導數爲δJδw=(ay)δ(z)x\frac{\delta J}{\delta w}=(a-y)\delta'(z)xδJδb=(ay)δ(z)\frac{\delta J}{\delta b}=(a-y)\delta'(z), 偏導數受激活函數的導數影響,sigmoid函數導數在輸出接近0和1時非常小,會導致一些實例在剛開始訓練時學習得非常慢。

  2. 爲什麼要用交叉熵
    交叉熵函數權值ww和偏置bb的梯度推導爲:

δJδwj=1nx(δ(a)y)  δJδb=1nx(δ(z)y) \frac{\delta J}{\delta w_j}=\frac{1}{n}\sum_{x}(\delta{(a)}-y)\;, \frac{\delta J}{\delta b}=\frac{1}{n}\sum_{x}(\delta{(z)}-y)

由以上公式可知,權重學習的速度受到δ(z)y\delta{(z)}-y影響,更大的誤差,就有更快的學習速度,避免了二次代價函數方程中因δ(z)\delta'{(z)}導致的學習緩慢的情況。

2.11 損失函數

2.11.1 什麼是損失函數?

損失函數(Loss function)又叫做誤差函數,用來衡量算法的運行情況,估量模型的預測值 與真實值 的不一致程度,是一個非負實值函數,通常使用 來表示,損失函數越小,模型的魯棒性就越好。
損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。

2.11.2 常見的損失函數

機器學習通過對算法中的目標函數進行不斷求解優化,得到最終想要的結果。分類和迴歸問題中,通常使用損失函數或代價函數作爲目標函數。
損失函數用來評價預測值和真實值不一樣的程度。通常損失函數越好,模型的性能也越好。
損失函數可分爲經驗風險損失函數和結構風險損失函數。經驗風險損失函數指預測結果和實際結果的差別,結構風險損失函數是在經驗風險損失函數上加上正則項。
下面介紹常用的損失函數:

  1. 0-1損失函數
    如果預測值和目標值相等,值爲0,如果不相等,值爲1.

L(Y,f(x))={1,Yf(x)0,Y=f(x) L(Y, f(x)) = \begin{cases} 1,& Y\ne f(x)\\ 0,& Y = f(x) \end{cases}

一般的在實際使用中,相等的條件過於嚴格,可適當放寬條件:

L(Y,f(x))={1,Yf(x)T0,Yf(x)<T L(Y, f(x)) = \begin{cases} 1,& |Y-f(x)|\ge T\\ 0,& |Y-f(x)|< T \end{cases}

  1. 絕對值損失函數
    和0-1損失函數相似,絕對值損失函數表示爲:

L(Y,f(x))=Yf(x) L(Y, f(x)) = |Y-f(x)|​

  1. 平方損失函數

L(Y,f(x))=N(Yf(x))2 L(Y, f(x)) = \sum_N{(Y-f(x))}^2

這點可從最小二乘法和歐幾里得距離角度理解。最小二乘法的原理是,最優擬合曲線應該使所有點到迴歸直線的距離和最小。

  1. log對數損失函數

L(Y,P(YX))=logP(YX) L(Y, P(Y|X)) = -\log{P(Y|X)}

常見的邏輯迴歸使用的就是對數損失函數,有很多人認爲邏輯迴歸的損失函數式平方損失,其實不然。邏輯迴歸它假設樣本服從伯努利分佈,進而求得滿足該分佈的似然函數,接着取對數求極值等。邏輯迴歸推導出的經驗風險函數是最小化負的似然函數,從損失函數的角度看,就是log損失函數。

  1. 指數損失函數
    指數損失函數的標準形式爲:

L(Y,f(x))=expyf(x) L(Y, f(x)) = \exp{-yf(x)}

例如AdaBoost就是以指數損失函數爲損失函數。

  1. Hinge損失函數
    Hinge損失函數的標準形式如下:

L(Y)=max(0,1ty) L(Y) = \max{(0, 1-ty)}

其中y是預測值,範圍爲(-1,1),t爲目標值,其爲-1或1.

在線性支持向量機中,最優化問題可等價於

w,bmini=1N(1yi(wxi+b))+λw2 \underset{\min}{w,b}\sum_{i=1}^N (1-y_i(wx_i+b))+\lambda\Vert w^2\Vert

上式相似於下式

1mi=1Nl(wxi+byi)+w2 \frac{1}{m}\sum_{i=1}^{N}l(wx_i+by_i) + \Vert w^2\Vert

其中l(wxi+byi)l(wx_i+by_i)是Hinge損失函數,w2\Vert w^2\Vert可看做爲正則化項。

2.11.3 邏輯迴歸爲什麼使用對數損失函數?

假設邏輯迴歸模型
TODO
假設邏輯迴歸模型的概率分佈是伯努利分佈,其概率質量函數爲
TODO
其似然函數爲
TODO
對數似然函數爲
TODO
對數函數在單個數據點上的定義爲
TODO
則全局樣本損失函數爲:
TODO
由此可看出,對數損失函數與極大似然估計的對數似然函數本質上是相同的。所以邏輯迴歸直接採用對數損失函數。

2.11.4 對數損失函數是如何度量損失的?

舉例:
高斯分佈中,我們需要確定均值 和標註差 。
如何確定這兩個參數?最大似然估計是比較常用的方法。最大似然的目標是找到一些參數值,這些參數值對應的分佈可以最大化觀測到數據的概率。
因爲需要計算觀測到所有數據的全概率,即所有觀測到的數據點的聯合概率。現考慮如下簡化情況:

  1. 假設觀測到每個數據點的概率和其他數據點的概率是獨立的。
  2. 取自然對數。
    假設觀測到單個數據點TODO的概率爲:
    TODO
    其聯合概率爲
    TODO
    對上式取自然對數,可得:
    TODO
    根據對數定律,上式可以化簡爲:
    TODO
    求導:
    TODO
    上式左半部分爲對數損失函數。損失函數越小越好,因此我們令對數損失函數爲0,可得:
    TODO
    同理,可計算TODO。

2.12 梯度下降

2.12.1 機器學習中爲什麼需要梯度下降?

  1. 梯度下降是迭代法的一種,可以用於求解最小二乘問題。
  2. 在求解機器學習算法的模型參數,即無約束優化問題時,主要有梯度下降法(Gradient Descent)和最小二乘法。
  3. 在求解損失函數的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函數和模型參數值。
  4. 如果我們需要求解損失函數的最大值,可通過梯度上升法來迭代。梯度下降法和梯度上升法可相互轉換。
  5. 在機器學習中,梯度下降法主要有隨機梯度下降法和批量梯度下降法。

2.12.2 梯度下降法缺點?

  1. 靠近極小值時收斂速度減慢。
  2. 直線搜索時可能會產生一些問題。
  3. 可能會“之字形”地下降。

梯度概念需注意:

  1. 梯度是一個向量,即有方向有大小;
  2. 梯度的方向是最大方向導數的方向;
  3. 梯度的值是最大方向導數的值。

2.12.3 梯度下降法直觀理解?

梯度下降法經典圖示:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2gvrIpMI-1575791211717)(./img/ch2/2.25/1.png)]

形象化舉例:

由上圖,假如最開始,我們在一座大山上的某處位置,因爲到處都是陌生的,不知道下山的路,所以只能摸索着根據直覺,走一步算一步,在此過程中,每走到一個位置的時候,都會求解當前位置的梯度,沿着梯度的負方向,也就是當前最陡峭的位置向下走一步,然後繼續求解當前位置梯度,向這一步所在位置沿着最陡峭最易下山的位置走一步。不斷循環求梯度,就這樣一步步的走下去,一直走到我們覺得已經到了山腳。當然這樣走下去,有可能我們不能走到山腳,而是到了某一個局部的山峯低處。
由此,從上面的解釋可以看出,梯度下降不一定能夠找到全局的最優解,有可能是一個局部最優解。當然,如果損失函數是凸函數,梯度下降法得到的解就一定是全局最優解。

核心思想歸納:

  1. 初始化參數,隨機選取取值範圍內的任意數;
  2. 迭代操作:
    a) 計算當前梯度;
    b)修改新的變量;
    c)計算朝最陡的下坡方向走一步;
    d)判斷是否需要終止,如否,返回a);
  3. 得到全局最優解或者接近全局最優解。

2.12.4 梯度下降法算法描述?

  1. 確定優化模型的假設函數及損失函數。
    舉例,對於線性迴歸,假設函數爲:
    TODO
    其中,TODO分別爲模型參數、每個樣本的特徵值。
    對於假設函數,損失函數爲:
    TODO
  2. 相關參數初始化。
    主要初始化TODO、算法迭代步長TODO、終止距離TODO。初始化時可以根據經驗初始化,即TODO初始化爲0,步長TODO初始化爲1。當前步長記爲TODO。當然,也可隨機初始化。
  3. 迭代計算。
  1. 計算當前位置時損失函數的梯度,對TODO,其梯度表示爲:TODO

  2. 計算當前位置下降的距離。TODO

  3. 判斷是否終止。
    確定是否所有TODO梯度下降的距離TODO都小於終止距離TODO,如果都小於TODO,則算法終止,當然的值即爲最終結果,否則進入下一步。

  4. 更新所有的TODO,更新後的表達式爲:TODO

  5. 更新完畢後轉入1)。

舉例。以線性迴歸爲例。
假設樣本是
TODO
損失函數爲
TODO
在計算中,TODO的偏導數計算如下:
TODO
令上式 。4)中TODO的更新表達式爲:
TODO
由此,可看出,當前位置的梯度方向由所有樣本決定,上式中TODO的目的是爲了便於理解。

2.12.5 如何對梯度下降法進行調優?

實際使用梯度下降法時,各項參數指標不能一步就達到理想狀態,對梯度下降法調優主要體現在以下幾個方面:

  1. 算法迭代步長α\alpha選擇。
    在算法參數初始化時,有時根據經驗將步長 初始化爲1。實際取值取決於數據樣本。可以從大到小,多取一些值,分別運行算法看迭代效果,如果損失函數在變小,則取值有效。如果取值無效,說明要增大步長。但步長太大,有時會導致迭代速度過快,錯過最優解。步長太小,迭代速度慢,算法運行時間長。
  2. 參數的初始值選擇。
    初始值不同,獲得的最小值也有可能不同,梯度下降有可能得到的是局部最小值。如果損失函數是凸函數,則一定是最優解。由於有局部最優解的風險,需要多次用不同初始值運行算法,關鍵損失函數的最小值,選擇損失函數最小化的初值。
  3. 標準化處理。
    由於樣本不同,特徵取值範圍也不同,導致迭代速度慢。爲了減少特徵取值的影響,可對特徵數據標準化,使新期望爲0,新方差爲1,可節省算法運行時間。

2.12.7 隨機梯度和批量梯度區別?

隨機梯度下降和批量梯度下降是兩種主要梯度下降法,其目的是增加某些限制來加速運算求解。
引入隨機梯度下降法與mini-batch梯度下降法是爲了應對大數據量的計算而實現一種快速的求解。
下面通過介紹兩種梯度下降法的求解思路,對其進行比較。
假設函數爲
TODO
損失函數爲
TODO
其中,TODO爲樣本個數,TODO爲參數個數。

1、 批量梯度下降的求解思路如下:

a) 得到每個TODO對應的梯度:
TODO

b) 由於是求最小化風險函數,所以按每個參數TODO的梯度負方向更新TODO:
TODO

c) 從上式可以注意到,它得到的雖然是一個全局最優解,但每迭代一步,都要用到訓練集所有的數據,如果樣本數據 很大,這種方法迭代速度就很慢。
相比而言,隨機梯度下降可避免這種問題。

2、隨機梯度下降的求解思路如下:
a) 相比批量梯度下降對應所有的訓練樣本,隨機梯度下降法中損失函數對應的是訓練集中每個樣本的粒度。
損失函數可以寫成如下這種形式,
TODO

b)對每個參數TODO按梯度方向更新 :
TODO

c) 隨機梯度下降是通過每個樣本來迭代更新一次。
隨機梯度下降伴隨的一個問題是噪音較批量梯度下降要多,使得隨機梯度下降並不是每次迭代都向着整體最優化方向。

小結:
隨機梯度下降法、批量梯度下降法相對來說都比較極端,簡單對比如下:
批量梯度下降:
a)採用所有數據來梯度下降。
b) 批量梯度下降法在樣本量很大的時候,訓練速度慢。

隨機梯度下降:
a) 隨機梯度下降用一個樣本來梯度下降。
b) 訓練速度很快。
c) 隨機梯度下降法僅僅用一個樣本決定梯度方向,導致解有可能不是最優。
d) 收斂速度來說,隨機梯度下降法一次迭代一個樣本,導致迭代方向變化很大,不能很快的收斂到局部最優解。

下面介紹能結合兩種方法優點的小批量梯度下降法。

3、 小批量(mini-batch)梯度下降的求解思路如下
對於總數爲mm個樣本的數據,根據樣本的數據,選取其中的n(1<n<m)n(1< n< m)個子樣本來迭代。其參數θ\theta按梯度方向更新θi\theta_i公式如下:
TODO

2.12.8 各種梯度下降法性能比較

下表簡單對比隨機梯度下降(SGD)、批量梯度下降(BGD)、小批量梯度下降(mini-batch GD)、和online GD的區別,主要區別在於如何選取訓練數據:

BGD SGD GD Mini-batch GD Online GD
訓練集 固定 固定 固定 實時更新
單次迭代樣本數 整個訓練集 單個樣本 訓練集的子集 根據具體算法定
算法複雜度 一般
時效性 一般 一般
收斂性 穩定 不穩定 較穩定 不穩定

BGD、SGD、Mini-batch GD,前面均已討論過,這裏介紹一下Online GD。

Online GD於mini-batch GD/SGD的區別在於,所有訓練數據只用一次,然後丟棄。這樣做的優點在於可預測最終模型的變化趨勢。

Online GD在互聯網領域用的較多,比如搜索廣告的點擊率(CTR)預估模型,網民的點擊行爲會隨着時間改變。用普通的BGD算法(每天更新一次)一方面耗時較長(需要對所有歷史數據重新訓練);另一方面,無法及時反饋用戶的點擊行爲遷移。而Online GD算法可以實時的依據網民的點擊行爲進行遷移。

2.13 計算圖的導數計算圖解?

​ 計算圖導數計算是反向傳播,利用鏈式法則和隱式函數求導。

​ 假設TODO在點TODO處偏導連續,TODO是關於TODO的函數,在TODO點可導,求TODO在TODO點的導數。

根據鏈式法則有
TODO

​ 爲了便於理解,下面舉例說明。
假設f(x)f(x)是關於a,b,c的函數。鏈式求導法則如下:

dJdu=dJdvdvdu,dJdb=dJdududb,dJda=dJdududa \frac{dJ}{du}=\frac{dJ}{dv}\frac{dv}{du},\frac{dJ}{db}=\frac{dJ}{du}\frac{du}{db},\frac{dJ}{da}=\frac{dJ}{du}\frac{du}{da}

​鏈式法則用文字描述:“由兩個函數湊起來的複合函數,其導數等於裏邊函數代入外邊函數的值之導數,乘以裏邊函數的導數。

例:

f(x)=x2,g(x)=2x+1 f(x)=x^2,g(x)=2x+1

f[g(x)]=2[g(x)]g(x)=2[2x+1]2=8x+1 {f[g(x)]}'=2[g(x)]*g'(x)=2[2x+1]*2=8x+1

2.14 線性判別分析(LDA)

2.14.1 線性判別分析(LDA)思想總結

線性判別分析(Linear Discriminant Analysis,LDA)是一種經典的降維方法。

和PCA不考慮樣本類別輸出的無監督降維技術不同,LDA是一種監督學習的降維技術,數據集的每個樣本有類別輸出。

LDA分類思想簡單總結如下:

  1. 多維空間中,數據處理分類問題較爲複雜,LDA算法將多維空間中的數據投影到一條直線上,將d維數據轉化成1維數據進行處理。
  2. 對於訓練數據,設法將多維數據投影到一條直線上,同類數據的投影點儘可能接近,異類數據點儘可能遠離。
  3. 對數據進行分類時,將其投影到同樣的這條直線上,再根據投影點的位置來確定樣本的類別。
    如果用一句話概括LDA思想,即“投影后類內方差最小,類間方差最大”。

2.14.2 圖解LDA核心思想

假設有紅、藍兩類數據,這些數據特徵均爲二維,如下圖所示。我們的目標是將這些數據投影到一維,讓每一類相近的數據的投影點儘可能接近,不同類別數據儘可能遠,即圖中紅色和藍色數據中心之間的距離儘可能大。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4TwN0SAn-1575791211718)(./img/ch2/2.29/1.png)]

左圖和右圖是兩種不同的投影方式。

左圖思路:讓不同類別的平均點距離最遠的投影方式。

右圖思路:讓同類別的數據捱得最近的投影方式。

從上圖直觀看出,右圖紅色數據和藍色數據在各自的區域來說相對集中,根據數據分佈直方圖也可看出,所以右圖的投影效果好於左圖,左圖中間直方圖部分有明顯交集。

以上例子是基於數據是二維的,分類後的投影是一條直線。如果原始數據是多維的,則投影后的分類面是一低維的超平面。

2.14.3 二類LDA算法原理?

輸入:數據集TODO,其中樣本TODO是n維向量,TODO,TODO降維後的目標維度TODO。定義

TODO爲第TODO類樣本個數;

TODO爲第TODO類樣本的集合;

TODO爲第TODO類樣本的均值向量;

TODO爲第TODO類樣本的協方差矩陣。

其中TODO,TODO。

假設投影直線是向量TODO,對任意樣本TODO,它在直線TODO上的投影爲TODO,兩個類別的中心點TODO在直線TODO的投影分別爲TODO、TODO。

LDA的目標是讓兩類別的數據中心間的距離TODO儘量大,與此同時,希望同類樣本投影點的協方差TODO、TODO儘量小,最小化TODO。
定義
類內散度矩陣TODO

類間散度矩陣TODO

據上分析,優化目標爲TODO

根據廣義瑞利商的性質,矩陣TODO的最大特徵值爲TODO的最大值,矩陣TODO的最大特徵值對應的特徵向量即爲TODO。

2.14.4 LDA算法流程總結?

LDA算法降維流程如下:

輸入:數據集TODO,其中樣本TODO是n維向量,TODO,降維後的目標維度TODO。

輸出:降維後的數據集TODO。

步驟:

  1. 計算類內散度矩陣 。
  2. 計算類間散度矩陣 。
  3. 計算矩陣 。
  4. 計算矩陣 的最大的d個特徵值。
  5. 計算d個特徵值對應的d個特徵向量,記投影矩陣爲 。
  6. 轉化樣本集的每個樣本,得到新樣本 。
  7. 輸出新樣本集

2.14.5 LDA和PCA區別?

異同點 LDA PCA
相同點 1. 兩者均可以對數據進行降維;2. 兩者在降維時均使用了矩陣特徵分解的思想;3. 兩者都假設數據符合高斯分佈;
不同點 有監督的降維方法 無監督的降維方法
降維最多降到k-1維 降維多少沒有限制
可以用於降維,還可以用於分類 只用於降維
選擇分類性能最好的投影方向 選擇樣本點投影具有最大方差的方向
更明確,更能反映樣本間差異 目的較爲模糊

2.14.6 LDA優缺點?

優缺點 簡要說明
優點 1. 可以使用類別的先驗知識;2. 以標籤,類別衡量差異性的有監督降維方式,相對於PCA的模糊性,其目的更明確,更能反映樣本間的差異;
缺點 1. LDA不適合對非高斯分佈樣本進行降維;2. LDA降維最多降到k-1維;3. LDA在樣本分類信息依賴方差而不是均值時,降維效果不好;4. LDA可能過度擬合數據。

2.15 主成分分析(PCA)

2.15.1 主成分分析(PCA)思想總結

  1. PCA就是將高維的數據通過線性變換投影到低維空間上去。
  2. 投影思想:找出最能夠代表原始數據的投影方法。被PCA降掉的那些維度只能是那些噪聲或是冗餘的數據。
  3. 去冗餘:去除可以被其他向量代表的線性相關向量,這部分信息量是多餘的。
  4. 去噪聲,去除較小特徵值對應的特徵向量,特徵值的大小反映了變換後在特徵向量方向上變換的幅度,幅度越大,說明這個方向上的元素差異也越大,要保留。
  5. 對角化矩陣,尋找極大線性無關組,保留較大的特徵值,去除較小特徵值,組成一個投影矩陣,對原始樣本矩陣進行投影,得到降維後的新樣本矩陣。
  6. 完成PCA的關鍵是——協方差矩陣。
    協方差矩陣,能同時表現不同維度間的相關性以及各個維度上的方差。
    協方差矩陣度量的是維度與維度之間的關係,而非樣本與樣本之間。
  7. 之所以對角化,因爲對角化之後非對角上的元素都是0,達到去噪聲的目的。對角化後的協方差矩陣,對角線上較小的新方差對應的就是那些該去掉的維度。所以我們只取那些含有較大能量(特徵值)的維度,其餘的就舍掉,即去冗餘。

2.15.2 圖解PCA核心思想

PCA可解決訓練數據中存在數據特徵過多或特徵累贅的問題。核心思想是將m維特徵映射到n維(n < m),這n維形成主元,是重構出來最能代表原始數據的正交特徵。

假設數據集是m個n維,(x(1),x(2),,x(m))(x^{(1)}, x^{(2)}, \cdots, x^{(m)})。如果n=2,需要降維到n=1n'=1,現在想找到某一維度方向代表這兩個維度的數據。下圖有u1,u2u_1, u_2兩個向量方向,但是哪個向量纔是我們所想要的,可以更好代表原始數據集的呢?

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FaogVkoe-1575791211719)(./img/ch2/2.34/1.png)]

從圖可看出,u1u_1u2u_2好,爲什麼呢?有以下兩個主要評價指標:

  1. 樣本點到這個直線的距離足夠近。
  2. 樣本點在這個直線上的投影能儘可能的分開。

如果我們需要降維的目標維數是其他任意維,則:

  1. 樣本點到這個超平面的距離足夠近。
  2. 樣本點在這個超平面上的投影能儘可能的分開。

2.15.3 PCA算法推理

下面以基於最小投影距離爲評價指標推理:

假設數據集是m個n維,TODO,且數據進行了中心化。經過投影變換得到新座標爲TODO,其中TODO是標準正交基,即TODO,TODO。經過降維後,新座標爲TODO,其中TODO是降維後的目標維數。樣本點TODO在新座標系下的投影爲TODO,其中TODO是TODO在低維座標系裏第j維的座標。如果用TODO去恢復TODO,則得到的恢復數據爲TODO,其中TODO爲標準正交基組成的矩陣。

考慮到整個樣本集,樣本點到這個超平面的距離足夠近,目標變爲最小化TODO。對此式進行推理,可得:
TODO

在推導過程中,分別用到了TODO,矩陣轉置公式TODO,TODO,TODO以及矩陣的跡,最後兩步是將代數和轉爲矩陣形式。
由於TODO的每一個向量TODO是標準正交基,TODO是數據集的協方差矩陣,TODO是一個常量。最小化TODO又可等價於

TODO

利用拉格朗日函數可得到
TODO

對TODO求導,可得TODO,也即TODO。 是TODO個特徵向量組成的矩陣, 爲TODO的特徵值。TODO即爲我們想要的矩陣。
對於原始數據,只需要TODO,就可把原始數據集降維到最小投影距離的TODO維數據集。

基於最大投影方差的推導,這裏就不再贅述,有興趣的同仁可自行查閱資料。

2.15.4 PCA算法流程總結

輸入:TODO維樣本集TODO,目標降維的維數TODO。

輸出:降維後的新樣本集TODO。

主要步驟如下:

  1. 對所有的樣本進行中心化,TODO。
  2. 計算樣本的協方差矩陣TODO。
  3. 對協方差矩陣TODO進行特徵值分解。
  4. 取出最大的TODO個特徵值對應的特徵向量TODO。
  5. 標準化特徵向量,得到特徵向量矩陣TODO。
  6. 轉化樣本集中的每個樣本TODO。
  7. 得到輸出矩陣TODO。
    :在降維時,有時不明確目標維數,而是指定降維到的主成分比重閾值TODO。假設TODO個特徵值爲TODO,則TODO可從TODO得到。

2.15.5 PCA算法主要優缺點

優缺點 簡要說明
優點 1. 僅僅需要以方差衡量信息量,不受數據集以外的因素影響。 2.各主成分之間正交,可消除原始數據成分間的相互影響的因素。3. 計算方法簡單,主要運算是特徵值分解,易於實現。
缺點 1.主成分各個特徵維度的含義具有一定的模糊性,不如原始樣本特徵的解釋性強。2. 方差小的非主成分也可能含有對樣本差異的重要信息,因降維丟棄可能對後續數據處理有影響。

2.15.6 降維的必要性及目的

降維的必要性

  1. 多重共線性–預測變量之間相互關聯。多重共線性會導致解空間的不穩定,從而可能導致結果的不連貫。
  2. 高維空間本身具有稀疏性。一維正態分佈有68%的值落於正負標準差之間,而在十維空間上只有0.02%。
  3. 過多的變量,對查找規律造成冗餘麻煩。
  4. 僅在變量層面上分析可能會忽略變量之間的潛在聯繫。例如幾個預測變量可能落入僅反映數據某一方面特徵的一個組內。

降維的目的

  1. 減少預測變量的個數。
  2. 確保這些變量是相互獨立的。
  3. 提供一個框架來解釋結果。關特徵,特別是重要特徵更能在數據中明確的顯示出來;如果只有兩維或者三維的話,更便於可視化展示。
  4. 數據在低維下更容易處理、更容易使用。
  5. 去除數據噪聲。
  6. 降低算法運算開銷。

2.15.7 KPCA與PCA的區別?

應用PCA算法的前提是假設存在一個線性的超平面,進而投影。那如果數據不是線性的呢?該怎麼辦?這時候就需要KPCA,數據集從TODO維映射到線性可分的高維TODO,然後再從TODO維降維到一個低維度TODO。

KPCA用到了核函數思想,使用了核函數的主成分分析一般稱爲核主成分分析(Kernelized PCA, 簡稱KPCA)。

假設高維空間數據由TODO維空間的數據通過映射TODO產生。

TODO維空間的特徵分解爲:
TODO其映射爲TODO

通過在高維空間進行協方差矩陣的特徵值分解,然後用和PCA一樣的方法進行降維。由於KPCA需要核函數的運算,因此它的計算量要比PCA大很多。

2.16 模型評估

2.16.1 模型評估常用方法?

一般情況來說,單一評分標準無法完全評估一個機器學習模型。只用good和bad偏離真實場景去評估某個模型,都是一種欠妥的評估方式。下面介紹常用的分類模型和迴歸模型評估方法。

分類模型常用評估方法:

指標 描述 Scikit-learn函數
Precision 精準度 from sklearn.metrics import precision_score
Recall 召回率 from sklearn.metrics import recall_score
F1 F1值 from sklearn.metrics import f1_score
Confusion Matrix 混淆矩陣 from sklearn.metrics import confusion_matrix
ROC ROC曲線 from sklearn.metrics import roc
AUC ROC曲線下的面積 from sklearn.metrics import auc
precision 查準率
recall 查全率
P-R曲線 查準率爲縱軸,查全率爲橫軸,作圖

迴歸模型常用評估方法:

指標 描述 Scikit-learn函數
Mean Square Error (MSE, RMSE) 平均方差 from sklearn.metrics import mean_squared_error
Absolute Error (MAE, RAE) 絕對誤差 from sklearn.metrics import mean_absolute_error, median_absolute_error
R-Squared R平方值 from sklearn.metrics import r2_score

2.16.2 機器學習中的Bias,Error和Variance有什麼區別和聯繫?

(貢獻者:黃欽建-華南理工大學)

Bias(偏差),Error(誤差),和Variance(方差)

對於Bias:

  • Bias衡量模型擬合訓練數據的能力(訓練數據不一定是整個 training dataset,而是隻用於訓練它的那一部分數據,例如:mini-batch)。
  • Bias 越小,擬合能力越高(可能產生overfitting);反之,擬合能力越低(可能產生underfitting)。

對於Variance:

  • Variance衡量模型的泛化的能力。
  • Variance越小,模型的泛化的能力越高;反之,模型的泛化的能力越低。

訓練誤差大,測試誤差小 → Bias大

訓練誤差小,測試誤差大→ Variance大 → 降VC維

訓練誤差大,測試誤差大→ 升VC維

2.16.3 經驗誤差與泛化誤差

誤差(error):一般地,我們把學習器的實際預測輸出與樣本的真是輸出之間的差異稱爲“誤差”

經驗誤差(empirical error):也叫訓練誤差(training error)。模型在訓練集上的誤差。

泛化誤差(generalization error):模型在新樣本集(測試集)上的誤差稱爲“泛化誤差”。

2.16.4 圖解欠擬合、過擬合

根據不同的座標方式,欠擬合與過擬合圖解不同。

  1. 橫軸爲訓練樣本數量,縱軸爲誤差

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hyBOWLOu-1575791211720)(./img/ch2/2.40.3/1.png)]

如上圖所示,我們可以直觀看出欠擬合和過擬合的區別:

模型欠擬合:在訓練集以及測試集上同時具有較高的誤差,此時模型的偏差較大;

模型過擬合:在訓練集上具有較低的誤差,在測試集上具有較高的誤差,此時模型的方差較大。

模型正常:在訓練集以及測試集上,同時具有相對較低的偏差以及方差。

  1. 橫軸爲模型複雜程度,縱軸爲誤差

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kEc1Yknm-1575791211720)(./img/ch2/2.40.3/2.png)]

模型欠擬合:模型在點A處,在訓練集以及測試集上同時具有較高的誤差,此時模型的偏差較大。

模型過擬合:模型在點C處,在訓練集上具有較低的誤差,在測試集上具有較高的誤差,此時模型的方差較大。

模型正常:模型複雜程度控制在點B處爲最優。

  1. 橫軸爲正則項係數,縱軸爲誤差

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zYcZT8nb-1575791211721)(./img/ch2/2.40.3/3.png)]

模型欠擬合:模型在點C處,在訓練集以及測試集上同時具有較高的誤差,此時模型的偏差較大。

模型過擬合:模型在點A處,在訓練集上具有較低的誤差,在測試集上具有較高的誤差,此時模型的方差較大。 它通常發生在模型過於複雜的情況下,如參數過多等,會使得模型的預測性能變弱,並且增加數據的波動性。雖然模型在訓練時的效果可以表現的很完美,基本上記住了數據的全部特點,但這種模型在未知數據的表現能力會大減折扣,因爲簡單的模型泛化能力通常都是很弱的。

模型正常:模型複雜程度控制在點B處爲最優。

2.16.5 如何解決過擬合與欠擬合?

如何解決欠擬合:

  1. 添加其他特徵項。組合、泛化、相關性、上下文特徵、平臺特徵等特徵是特徵添加的重要手段,有時候特徵項不夠會導致模型欠擬合。
  2. 添加多項式特徵。例如將線性模型添加二次項或三次項使模型泛化能力更強。例如,FM模型、FFM模型,其實就是線性模型,增加了二階多項式,保證了模型一定的擬合程度。
  3. 可以增加模型的複雜程度。
  4. 減小正則化係數。正則化的目的是用來防止過擬合的,但是現在模型出現了欠擬合,則需要減少正則化參數。

如何解決過擬合:

  1. 重新清洗數據,數據不純會導致過擬合,此類情況需要重新清洗數據。
  2. 增加訓練樣本數量。
  3. 降低模型複雜程度。
  4. 增大正則項係數。
  5. 採用dropout方法,dropout方法,通俗的講就是在訓練的時候讓神經元以一定的概率不工作。
  6. early stoping。
  7. 減少迭代次數。
  8. 增大學習率。
  9. 添加噪聲數據。
  10. 樹結構中,可以對樹進行剪枝。

欠擬合和過擬合這些方法,需要根據實際問題,實際模型,進行選擇。

2.16.6 交叉驗證的主要作用?

爲了得到更爲穩健可靠的模型,對模型的泛化誤差進行評估,得到模型泛化誤差的近似值。當有多個模型可以選擇時,我們通常選擇“泛化誤差”最小的模型。

交叉驗證的方法有許多種,但是最常用的是:留一交叉驗證、k折交叉驗證

2.16.7 k折交叉驗證?

  1. 將含有N個樣本的數據集,分成K份,每份含有N/K個樣本。選擇其中1份作爲測試集,另外K-1份作爲訓練集,測試集就有K種情況。
  2. 在每種情況中,用訓練集訓練模型,用測試集測試模型,計算模型的泛化誤差。
  3. 交叉驗證重複K次,每份驗證一次,平均K次的結果或者使用其它結合方式,最終得到一個單一估測,得到模型最終的泛化誤差。
  4. 將K種情況下,模型的泛化誤差取均值,得到模型最終的泛化誤差。
  5. 一般2<=K<=10。 k折交叉驗證的優勢在於,同時重複運用隨機產生的子樣本進行訓練和驗證,每次的結果驗證一次,10折交叉驗證是最常用的。
  6. 訓練集中樣本數量要足夠多,一般至少大於總樣本數的50%。
  7. 訓練集和測試集必須從完整的數據集中均勻取樣。均勻取樣的目的是希望減少訓練集、測試集與原數據集之間的偏差。當樣本數量足夠多時,通過隨機取樣,便可以實現均勻取樣的效果。

2.16.8 混淆矩陣

第一種混淆矩陣:

真實情況T or F 預測爲正例1,P 預測爲負例0,N
本來label標記爲1,預測結果真爲T、假爲F TP(預測爲1,實際爲1) FN(預測爲0,實際爲1)
本來label標記爲0,預測結果真爲T、假爲F FP(預測爲1,實際爲0) TN(預測爲0,實際也爲0)

第二種混淆矩陣:

預測情況P or N 實際label爲1,預測對了爲T 實際label爲0,預測對了爲T
預測爲正例1,P TP(預測爲1,實際爲1) FP(預測爲1,實際爲0)
預測爲負例0,N FN(預測爲0,實際爲1) TN(預測爲0,實際也爲0)

2.16.9 錯誤率及精度

  1. 錯誤率(Error Rate):分類錯誤的樣本數佔樣本總數的比例。
  2. 精度(accuracy):分類正確的樣本數佔樣本總數的比例。

2.16.10 查準率與查全率

將算法預測的結果分成四種情況:

  1. 正確肯定(True Positive,TP):預測爲真,實際爲真
  2. 正確否定(True Negative,TN):預測爲假,實際爲假
  3. 錯誤肯定(False Positive,FP):預測爲真,實際爲假
  4. 錯誤否定(False Negative,FN):預測爲假,實際爲真

則:

查準率(Precision)=TP/(TP+FP)

理解:預測出爲陽性的樣本中,正確的有多少。區別準確率(正確預測出的樣本,包括正確預測爲陽性、陰性,佔總樣本比例)。
例,在所有我們預測有惡性腫瘤的病人中,實際上有惡性腫瘤的病人的百分比,越高越好。

查全率(Recall)=TP/(TP+FN)

理解:正確預測爲陽性的數量佔總樣本中陽性數量的比例。
例,在所有實際上有惡性腫瘤的病人中,成功預測有惡性腫瘤的病人的百分比,越高越好。

2.16.11 ROC與AUC

ROC全稱是“受試者工作特徵”(Receiver Operating Characteristic)。

ROC曲線的面積就是AUC(Area Under the Curve)。

AUC用於衡量“二分類問題”機器學習算法性能(泛化能力)。

ROC曲線,通過將連續變量設定出多個不同的臨界值,從而計算出一系列真正率和假正率,再以假正率爲縱座標、真正率爲橫座標繪製成曲線,曲線下面積越大,診斷準確性越高。在ROC曲線上,最靠近座標圖左上方的點爲假正率和真正率均較高的臨界值。

對於分類器,或者說分類算法,評價指標主要有precision,recall,F-score。下圖是一個ROC曲線的示例。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jbV0yrBR-1575791211722)(./img/ch2/2.40.10/1.png)]

ROC曲線的橫座標爲false positive rate(FPR),縱座標爲true positive rate(TPR)。其中
TODO, TODO,
下面着重介紹ROC曲線圖中的四個點和一條線。
第一個點,(0,1),即FPR=0, TPR=1,這意味着FN(false negative)=0,並且FP(false positive)=0。意味着這是一個完美的分類器,它將所有的樣本都正確分類。
第二個點,(1,0),即FPR=1,TPR=0,意味着這是一個最糟糕的分類器,因爲它成功避開了所有的正確答案。
第三個點,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,可以發現該分類器預測所有的樣本都爲負樣本(negative)。
第四個點,(1,1),即FPR=TPR=1,分類器實際上預測所有的樣本都爲正樣本。
經過以上分析,ROC曲線越接近左上角,該分類器的性能越好。

ROC曲線所覆蓋的面積稱爲AUC(Area Under Curve),可以更直觀的判斷學習器的性能,AUC越大則性能越好。

2.16.12 如何畫ROC曲線?

http://blog.csdn.net/zdy0_2004/article/details/44948511
下圖是一個示例,圖中共有20個測試樣本,“Class”一欄表示每個測試樣本真正的標籤(p表示正樣本,n表示負樣本),“Score”表示每個測試樣本屬於正樣本的概率。

步驟:
1、假設已經得出一系列樣本被劃分爲正類的概率,按照大小排序。
2、從高到低,依次將“Score”值作爲閾值threshold,當測試樣本屬於正樣本的概率大於或等於這個threshold時,我們認爲它爲正樣本,否則爲負樣本。 舉例來說,對於圖中的第4個樣本,其“Score”值爲0.6,那麼樣本1,2,3,4都被認爲是正樣本,因爲它們的“Score”值都大於等於0.6,而其他樣本則都認爲是負樣本。
3、每次選取一個不同的threshold,得到一組FPR和TPR,即ROC曲線上的一點。以此共得到20組FPR和TPR的值。其中FPR和TPR簡單理解如下:
4、根據3)中的每個座標點點,畫圖。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jYoona1c-1575791211723)(./img/ch2/2.40.11/1.jpg)]

2.16.13 如何計算TPR,FPR?

1、分析數據
y_true = [0, 0, 1, 1];
scores = [0.1, 0.4, 0.35, 0.8];
2、列表
樣本 預測屬於P的概率(score) 真實類別
y[0] 0.1 N
y[2] 0.35 P
y[1] 0.4 N
y[3] 0.8 P
3、將截斷點依次取爲score值,計算TPR和FPR。
當截斷點爲0.1時:
說明只要score>=0.1,它的預測類別就是正例。 因爲4個樣本的score都大於等於0.1,所以,所有樣本的預測類別都爲P。
scores = [0.1, 0.4, 0.35, 0.8];
y_true = [0, 0, 1, 1];
y_pred = [1, 1, 1, 1];
正例與反例信息如下:
真實值 預測值
​ 正例 反例
正例 TP=2 FN=0
反例 FP=2 TN=0
由此可得:
TPR = TP/(TP+FN) = 1;
FPR = FP/(TN+FP) = 1;

當截斷點爲0.35時:
scores = [0.1, 0.4, 0.35, 0.8]
y_true = [0, 0, 1, 1]
y_pred = [0, 1, 1, 1]
正例與反例信息如下:
真實值 預測值
​ 正例 反例
正例 TP=2 FN=0
反例 FP=1 TN=1
由此可得:
TPR = TP/(TP+FN) = 1;
FPR = FP/(TN+FP) = 0.5;

當截斷點爲0.4時:
scores = [0.1, 0.4, 0.35, 0.8];
y_true = [0, 0, 1, 1];
y_pred = [0, 1, 0, 1];
正例與反例信息如下:
真實值 預測值
​ 正例 反例
正例 TP=1 FN=1
反例 FP=1 TN=1
由此可得:
TPR = TP/(TP+FN) = 0.5;
FPR = FP/(TN+FP) = 0.5;

當截斷點爲0.8時:
scores = [0.1, 0.4, 0.35, 0.8];
y_true = [0, 0, 1, 1];
y_pred = [0, 0, 0, 1];
正例與反例信息如下:
真實值 預測值
​ 正例 反例
正例 TP=1 FN=1
反例 FP=0 TN=2
由此可得:
TPR = TP/(TP+FN) = 0.5;
FPR = FP/(TN+FP) = 0;
4、根據TPR、FPR值,以FPR爲橫軸,TPR爲縱軸畫圖。

2.16.14 如何計算Auc?

a.將座標點按照橫着FPR排序
b.計算第i個座標點和第i+1個座標點的間距 dx;
c.獲取第i(或者i+1)個座標點的縱座標y;
d.計算面積微元ds = ydx;
e.對面積微元進行累加,得到AUC。

2.16.15 爲什麼使用Roc和Auc評價分類器?

模型有很多評估方法,爲什麼還要使用ROC和AUC呢?
因爲ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變換的時候,ROC曲線能夠保持不變。在實際的數據集中經常會出現樣本類不平衡,即正負樣本比例差距較大,而且測試數據中的正負樣本也可能隨着時間變化。

2.16.17 直觀理解AUC

http://blog.csdn.net/cherrylvlei/article/details/52958720
AUC是ROC右下方的曲線面積。下圖展現了三種AUC的值:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-G8vIe0Bf-1575791211723)(./img/ch2/2.40.15/1.png)]

AUC是衡量二分類模型優劣的一種評價指標,表示正例排在負例前面的概率。其他評價指標有精確度、準確率、召回率,而AUC比這三者更爲常用。
因爲一般在分類模型中,預測結果都是以概率的形式表現,如果要計算準確率,通常都會手動設置一個閾值來將對應的概率轉化成類別,這個閾值也就很大程度上影響了模型準確率的計算。
我們不妨舉一個極端的例子:一個二類分類問題一共10個樣本,其中9個樣本爲正例,1個樣本爲負例,在全部判正的情況下準確率將高達90%,而這並不是我們希望的結果,尤其是在這個負例樣本得分還是最高的情況下,模型的性能本應極差,從準確率上看卻適得其反。而AUC能很好描述模型整體性能的高低。這種情況下,模型的AUC值將等於0(當然,通過取反可以解決小於50%的情況,不過這是另一回事了)。

2.16.18 代價敏感錯誤率與代價曲線

http://blog.csdn.net/cug_lzt/article/details/78295140

不同的錯誤會產生不同代價。
以二分法爲例,設置代價矩陣如下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-f66dPitL-1575791211724)(./img/ch2/2-1.png)]

當判斷正確的時候,值爲0,不正確的時候,分別爲Cost01Cost_{01}Cost10Cost_{10}

Cost10Cost_{10}:表示實際爲反例但預測成正例的代價。

Cost01Cost_{01}:表示實際爲正例但是預測爲反例的代價。

代價敏感錯誤率
\frac{樣本中由模型得到的錯誤值與代價乘積之和}{總樣本}

其數學表達式爲:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NTCBcotT-1575791211725)(./img/ch2/2-2.png)]

D+DD^{+}、D^{-}分別代表樣例集 的正例子集和反例子集。

代價曲線:
在均等代價時,ROC曲線不能直接反應出模型的期望總體代價,而代價曲線可以。
代價曲線橫軸爲[0,1]的正例函數代價:

P(+)Cost=pCost01pCost01+(1p)Cost10P(+)Cost=\frac{p*Cost_{01}}{p*Cost_{01}+(1-p)*Cost_{10}}

其中p是樣本爲正例的概率。

代價曲線縱軸維[0,1]的歸一化代價:
Costnorm=FNRpCost01+FNR(1p)Cost10pCost01+(1p)Cost10Cost_{norm}=\frac{FNR*p*Cost_{01}+FNR*(1-p)*Cost_{10}}{p*Cost_{01}+(1-p)*Cost_{10}}

其中FPR爲假正例率,FNR=1-TPR爲假反利率。

注:ROC每個點,對應代價平面上一條線。

例如,ROC上(TPR,FPR),計算出FNR=1-TPR,在代價平面上繪製一條從(0,FPR)到(1,FNR)的線段,面積則爲該條件下期望的總體代價。所有線段下界面積,所有條件下學習器的期望總體代價。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-l9mzHVYJ-1575791211725)(./img/ch2/2-3.png)]

2.16.19 模型有哪些比較檢驗方法

http://wenwen.sogou.com/z/q721171854.htm
正確性分析:模型穩定性分析,穩健性分析,收斂性分析,變化趨勢分析,極值分析等。
有效性分析:誤差分析,參數敏感性分析,模型對比檢驗等。
有用性分析:關鍵數據求解,極值點,拐點,變化趨勢分析,用數據驗證動態模擬等。
高效性分析:時空複雜度分析與現有進行比較等。

2.16.20 偏差與方差

http://blog.csdn.net/zhihua_oba/article/details/78684257

方差公式爲:

SN2=1Ni=1N(xixˉ)2S_{N}^{2}=\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}

泛化誤差可分解爲偏差、方差與噪聲之和,即
generalization error=bias+variance+noise。

噪聲:描述了在當前任務上任何學習算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度。
假定期望噪聲爲零,則泛化誤差可分解爲偏差、方差之和,即
generalization error=bias+variance。

偏差(bias):描述的是預測值(估計值)的期望與真實值之間的差距。偏差越大,越偏離真實數據,如下圖第二行所示。

方差(variance):描述的是預測值的變化範圍,離散程度,也就是離其期望值的距離。方差越大,數據的分佈越分散,模型的穩定程度越差。如果模型在訓練集上擬合效果比較優秀,但是在測試集上擬合效果比較差劣,則方差較大,說明模型的穩定程度較差,出現這種現象可能是由於模型對訓練集過擬合造成的。 如下圖右列所示。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-So0Cg07A-1575791211726)(./img/ch2/2-4.png)]

簡單的總結一下:
偏差大,會造成模型欠擬合;
方差大,會造成模型過擬合。

2.16.21爲什麼使用標準差?

標準差公式爲:SN=1Ni=1N(xixˉ)2S_{N}=\sqrt{\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}}

樣本標準差公式爲:SN=1N1i=1N(xixˉ)2S_{N}=\sqrt{\frac{1}{N-1}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}}

與方差相比,使用標準差來表示數據點的離散程度有3個好處:
1、表示離散程度的數字與樣本數據點的數量級一致,更適合對數據樣本形成感性認知。

2、表示離散程度的數字單位與樣本數據的單位一致,更方便做後續的分析運算。

3、在樣本數據大致符合正態分佈的情況下,標準差具有方便估算的特性:66.7%的數據點落在平均值前後1個標準差的範圍內、95%的數據點落在平均值前後2個標準差的範圍內,而99%的數據點將會落在平均值前後3個標準差的範圍內。

2.16.22點估計思想

點估計:用實際樣本的一個指標來估計總體的一個指標的一種估計方法。

點估計舉例:比如說,我們想要了解中國人的平均身高,那麼在大街上隨便找了一個人,通過測量這個人的身高來估計中國人的平均身高水平;或者在淘寶上買東西的時候隨便一次買到假貨就說淘寶上都是假貨等;這些都屬於點估計。

點估計主要思想:在樣本數據中得到一個指標,通過這個指標來估計總體指標;比如我們用樣本均數來估計總體均數,樣本均數就是我們要找到的指標。

2.16.23 點估計優良性原則?

獲取樣本均數指標相對來說比較簡單,但是並不是總體的所有指標都很容易在樣本中得到,比如說總體的標準差用樣本的哪個指標來估計呢?

優良性準則有兩大類:一類是小樣本準則,即在樣本大小固定時的優良性準則;另一類是大樣本準則,即在樣本大小趨於無窮時的優良性準則。最重要的小樣本優良性準則是無偏性及與此相關的一致最小方差無偏計。

樣本中用來估計總體的指標要符合以下規則:

1.首先必須是無偏統計量。
所謂無偏性,即數學期望等於總體相應的統計量的樣本估計量。

2.最小方差準則
針對總體樣本的無偏估計量不唯一的情況,需選用其他準則,例如最小方差準則。如果一個統計量具有最小方差,也就是說所有的樣本點與此統計量的離差平方和最小,則這個統計量被稱爲最小平方無偏估計量。
最大概率準則

4、缺一交叉準則
在非參數迴歸中好像用的是缺一交叉準則

要明白一個原則:計算樣本的任何分佈、均數、標準差都是沒有任何意義的,如果樣本的這種計算不能反映總體的某種特性。

2.16.24 點估計、區間估計、中心極限定理之間的聯繫?

https://www.zhihu.com/question/21871331#answer-4090464
點估計:是用樣本統計量來估計總體參數,因爲樣本統計量爲數軸上某一點值,估計的結果也以一個點的數值表示,所以稱爲點估計。

區間估計:通過從總體中抽取的樣本,根據一定的正確度與精確度的要求,構造出適當的區間,以作爲總體的分佈參數(或參數的函數)的真值所在範圍的估計。
中心極限定理:設從均值爲、方差爲;(有限)的任意一個總體中抽取樣本量爲n的樣本,當n充分大時,樣本均值的抽樣分佈近似服從均值爲、方差爲的正態分佈。

三者之間聯繫:

1、中心極限定理是推斷統計的理論基礎,推斷統計包括參數估計和假設檢驗,其中參數估計包括點估計和區間估計,所以說,中心極限定理也是點估計和區間估計的理論基礎。

2、參數估計有兩種方法:點估計和區間估計,區間估計包含了點估計。

相同點:都是基於一個樣本作出;

不同點:點估計只提供單一的估計值,而區間估計基於點估計還提供誤差界限,給出了置信區間,受置信度的影響。

2.16.25 類別不平衡產生原因?

類別不平衡(class-imbalance)是指分類任務中不同類別的訓練樣例數目差別很大的情況。

產生原因:

通常分類學習算法都會假設不同類別的訓練樣例數目基本相同。如果不同類別的訓練樣例數目差別很大,則會影響學習結果,測試結果變差。例如二分類問題中有998個反例,正例有2個,那學習方法只需返回一個永遠將新樣本預測爲反例的分類器,就能達到99.8%的精度;然而這樣的分類器沒有價值。

2.16.26 常見的類別不平衡問題解決方法

http://blog.csdn.net/u013829973/article/details/77675147

防止類別不平衡對學習造成的影響,在構建分類模型之前,需要對分類不平衡性問題進行處理。主要解決方法有:

1、擴大數據集

增加包含小類樣本數據的數據,更多的數據能得到更多的分佈信息。

2、對大類數據欠採樣

減少大類數據樣本個數,使與小樣本個數接近。
缺點:欠採樣操作時若隨機丟棄大類樣本,可能會丟失重要信息。
代表算法:EasyEnsemble。利用集成學習機制,將大類劃分爲若干個集合供不同的學習器使用。相當於對每個學習器都進行了欠採樣,但在全局來看卻不會丟失重要信息。

3、對小類數據過採樣

過採樣:對小類的數據樣本進行採樣來增加小類的數據樣本個數。

代表算法:SMOTE和ADASYN。

SMOTE:通過對訓練集中的小類數據進行插值來產生額外的小類樣本數據。

新的少數類樣本產生的策略:對每個少數類樣本a,在a的最近鄰中隨機選一個樣本b,然後在a、b之間的連線上隨機選一點作爲新合成的少數類樣本。
ADASYN:根據學習難度的不同,對不同的少數類別的樣本使用加權分佈,對於難以學習的少數類的樣本,產生更多的綜合數據。 通過減少類不平衡引入的偏差和將分類決策邊界自適應地轉移到困難的樣本兩種手段,改善了數據分佈。

4、使用新評價指標

如果當前評價指標不適用,則應尋找其他具有說服力的評價指標。比如準確度這個評價指標在類別不均衡的分類任務中並不適用,甚至進行誤導。因此在類別不均衡分類任務中,需要使用更有說服力的評價指標來對分類器進行評價。

5、選擇新算法

不同的算法適用於不同的任務與數據,應該使用不同的算法進行比較。

6、數據代價加權

例如當分類任務是識別小類,那麼可以對分類器的小類樣本數據增加權值,降低大類樣本的權值,從而使得分類器將重點集中在小類樣本身上。

7、轉化問題思考角度

例如在分類問題時,把小類的樣本作爲異常點,將問題轉化爲異常點檢測或變化趨勢檢測問題。 異常點檢測即是對那些罕見事件進行識別。變化趨勢檢測區別於異常點檢測在於其通過檢測不尋常的變化趨勢來識別。

8、將問題細化分析

對問題進行分析與挖掘,將問題劃分成多個更小的問題,看這些小問題是否更容易解決。

2.17 決策樹

2.17.1 決策樹的基本原理

決策樹是一種分而治之(Divide and Conquer)的決策過程。一個困難的預測問題, 通過樹的分支節點, 被劃分成兩個或多個較爲簡單的子集,從結構上劃分爲不同的子問題。將依規則分割數據集的過程不斷遞歸下去(Recursive Partitioning)。隨着樹的深度不斷增加,分支節點的子集越來越小,所需要提的問題數也逐漸簡化。當分支節點的深度或者問題的簡單程度滿足一定的停止規則(Stopping Rule)時, 該分支節點會停止劈分,此爲自上而下的停止閾值(Cutoff Threshold)法;有些決策樹也使用自下而上的剪枝(Pruning)法。

2.17.2 決策樹的三要素?

一棵決策樹的生成過程主要分爲以下3個部分:

特徵選擇:從訓練數據中衆多的特徵中選擇一個特徵作爲當前節點的分裂標準,如何選擇特徵有着很多不同量化評估標準標準,從而衍生出不同的決策樹算法。

決策樹生成:根據選擇的特徵評估標準,從上至下遞歸地生成子節點,直到數據集不可分則停止決策樹停止生長。樹結構來說,遞歸結構是最容易理解的方式。

剪枝:決策樹容易過擬合,一般來需要剪枝,縮小樹結構規模、緩解過擬合。剪枝技術有預剪枝和後剪枝兩種。

2.17.3 決策樹學習基本算法

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IlsiJRL8-1575791211727)(./img/ch2/2-5.png)]

2.17.4 決策樹算法優缺點

決策樹算法的優點:

1、理解和解釋起來簡單,決策樹模型易想象。

2、相比於其他算法需要大量數據集而已,決策樹算法要求的數據集不大。

3、決策樹算法的時間複雜度較小,爲用於訓練決策樹的數據點的對數。

4、相比於其他算法智能分析一種類型變量,決策樹算法可處理數字和數據的類別。

5、能夠處理多輸出的問題。

6、對缺失值不敏感。

7、可以處理不相關特徵數據。

8、效率高,決策樹只需要一次構建,反覆使用,每一次預測的最大計算次數不超過決策樹的深度。

決策樹算法的缺點:

1、對連續性的字段比較難預測。

2、容易出現過擬合。

3、當類別太多時,錯誤可能就會增加的比較快。

4、信息缺失時處理起來比較困難,忽略了數據集中屬性之間的相關性。

5、在處理特徵關聯性比較強的數據時表現得不是太好。

6、對於各類別樣本數量不一致的數據,在決策樹當中,信息增益的結果偏向於那些具有更多數值的特徵。

2.17.5熵的概念以及理解

熵:度量隨機變量的不確定性。

定義:假設隨機變量X的可能取值有x1,x2,...,xnx_{1},x_{2},...,x_{n},對於每一個可能的取值xix_{i},其概率爲P(X=xi)=pi,i=1,2...,nP(X=x_{i})=p_{i},i=1,2...,n。隨機變量的熵爲:

H(X)=i=1npilog2piH(X)=-\sum_{i=1}^{n}p_{i}log_{2}p_{i}

對於樣本集合 ,假設樣本有k個類別,每個類別的概率爲CkD\frac{|C_{k}|}{|D|},其中 CkD{|C_{k}|}{|D|}爲類別爲k的樣本個數,D|D|爲樣本總數。樣本集合D的熵爲:
H(D)=k=1kCkDlog2CkDH(D)=-\sum_{k=1}^{k}\frac{|C_{k}|}{|D|}log_{2}\frac{|C_{k}|}{|D|}

2.17.6 信息增益的理解

定義:以某特徵劃分數據集前後的熵的差值。
熵可以表示樣本集合的不確定性,熵越大,樣本的不確定性就越大。因此可以使用劃分前後集合熵的差值來衡量使用當前特徵對於樣本集合D劃分效果的好壞。
假設劃分前樣本集合D的熵爲H(D)。使用某個特徵A劃分數據集D,計算劃分後的數據子集的熵爲H(D|A)。

則信息增益爲:

g(D,A)=H(D)H(DA)g(D,A)=H(D)-H(D|A)

注:在決策樹構建的過程中我們總是希望集合往最快到達純度更高的子集合方向發展,因此我們總是選擇使得信息增益最大的特徵來劃分當前數據集D。

思想:計算所有特徵劃分數據集D,得到多個特徵劃分數據集D的信息增益,從這些信息增益中選擇最大的,因而當前結點的劃分特徵便是使信息增益最大的劃分所使用的特徵。

另外這裏提一下信息增益比相關知識:

信息增益比=懲罰參數X信息增益。

信息增益比本質:在信息增益的基礎之上乘上一個懲罰參數。特徵個數較多時,懲罰參數較小;特徵個數較少時,懲罰參數較大。

懲罰參數:數據集D以特徵A作爲隨機變量的熵的倒數。

2.17.7 剪枝處理的作用及策略?

剪枝處理是決策樹學習算法用來解決過擬合的一種辦法。

在決策樹算法中,爲了儘可能正確分類訓練樣本, 節點劃分過程不斷重複, 有時候會造成決策樹分支過多,以至於將訓練樣本集自身特點當作泛化特點, 而導致過擬合。 因此可以採用剪枝處理來去掉一些分支來降低過擬合的風險。

剪枝的基本策略有預剪枝(prepruning)和後剪枝(postprunint)。

預剪枝:在決策樹生成過程中,在每個節點劃分前先估計其劃分後的泛化性能, 如果不能提升,則停止劃分,將當前節點標記爲葉結點。

後剪枝:生成決策樹以後,再自下而上對非葉結點進行考察, 若將此節點標記爲葉結點可以帶來泛化性能提升,則修改之。

2.18 支持向量機

2.18.1 什麼是支持向量機

SVM - Support Vector Machine。支持向量機,其含義是通過支持向量運算的分類器。其中“機”的意思是機器,可以理解爲分類器。

什麼是支持向量呢?在求解的過程中,會發現只根據部分數據就可以確定分類器,這些數據稱爲支持向量。

見下圖,在一個二維環境中,其中點R,S,G點和其它靠近中間黑線的點可以看作爲支持向量,它們可以決定分類器,也就是黑線的具體參數。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OsqnlM7K-1575791211728)(./img/ch2/2-6.png)]

2.18.2 支持向量機解決的問題?

https://www.cnblogs.com/steven-yang/p/5658362.html
解決的問題:

線性分類

在訓練數據中,每個數據都有n個的屬性和一個二類類別標誌,我們可以認爲這些數據在一個n維空間裏。我們的目標是找到一個n-1維的超平面(hyperplane),這個超平面可以將數據分成兩部分,每部分數據都屬於同一個類別。

其實這樣的超平面有很多,我們要找到一個最佳的。因此,增加一個約束條件:這個超平面到每邊最近數據點的距離是最大的。也成爲最大間隔超平面(maximum-margin hyperplane)。這個分類器也成爲最大間隔分類器(maximum-margin classifier)。

支持向量機是一個二類分類器。

非線性分類

SVM的一個優勢是支持非線性分類。它結合使用拉格朗日乘子法和KKT條件,以及核函數可以產生非線性分類器。

分類器1 - 線性分類器

是一個線性函數,可以用於線性分類。一個優勢是不需要樣本數據。

classifier 1:
f(x)=xwT+b(1)
(1)f(x)=xwT+b

ww 和 bb 是訓練數據後產生的值。

分類器2 - 非線性分類器

支持線性分類和非線性分類。需要部分樣本數據(支持向量),也就是αi0\alpha_i \ne 0 的數據。

w=ni=1αiyixiw=i=1nαiyixi w=∑ni=1αiyixiw=∑i=1nαiyixi

classifier 2:

f(x)=∑ni=1αiyiK(xi,x)+bherexi : training data iyi : label value of training data iαi : Lagrange multiplier of training data iK(x1,x2)=exp(−∥x1−x2∥22σ2) : kernel function(2)
(2)f(x)=∑i=1nαiyiK(xi,x)+bherexi : training data iyi : label value of training data iαi : Lagrange multiplier of training data iK(x1,x2)=exp(−‖x1−x2‖22σ2) : kernel function

αα, σσ 和 bb 是訓練數據後產生的值。
可以通過調節σσ來匹配維度的大小,σσ越大,維度越低。

2.18.3 核函數作用?

核函數目的:把原座標系裏線性不可分的數據用Kernel投影到另一個空間,儘量使得數據在新的空間裏線性可分。

核函數方法的廣泛應用,與其特點是分不開的:

1)核函數的引入避免了“維數災難”,大大減小了計算量。而輸入空間的維數n對核函數矩陣無影響,因此,核函數方法可以有效處理高維輸入。

2)無需知道非線性變換函數Φ的形式和參數.

3)核函數的形式和參數的變化會隱式地改變從輸入空間到特徵空間的映射,進而對特徵空間的性質產生影響,最終改變各種核函數方法的性能。

4)核函數方法可以和不同的算法相結合,形成多種不同的基於核函數技術的方法,且這兩部分的設計可以單獨進行,並可以爲不同的應用選擇不同的核函數和算法。

2.18.4 對偶問題

2.18.5 理解支持向量迴歸

http://blog.csdn.net/liyaohhh/article/details/51077082

2.18.6 理解SVM(核函數)

http://blog.csdn.net/Love_wanling/article/details/69390047

2.18.7 常見的核函數有哪些?

http://blog.csdn.net/Love_wanling/article/details/69390047

本文將遇到的核函數進行收集整理,分享給大家。
http://blog.csdn.net/wsj998689aa/article/details/47027365

1.Linear Kernel
線性核是最簡單的核函數,核函數的數學公式如下:

k(x,y)=xyk(x,y)=xy

如果我們將線性核函數應用在KPCA中,我們會發現,推導之後和原始PCA算法一模一樣,很多童鞋藉此說“kernel is shit!!!”,這是不對的,這只是線性核函數偶爾會出現等價的形式罷了。

2.Polynomial Kernel

多項式覈實一種非標準核函數,它非常適合於正交歸一化後的數據,其具體形式如下:

k(x,y)=(axty+c)dk(x,y)=(ax^{t}y+c)^{d}

這個核函數是比較好用的,就是參數比較多,但是還算穩定。

3.Gaussian Kernel

這裏說一種經典的魯棒徑向基核,即高斯核函數,魯棒徑向基覈對於數據中的噪音有着較好的抗干擾能力,其參數決定了函數作用範圍,超過了這個範圍,數據的作用就“基本消失”。高斯核函數是這一族核函數的優秀代表,也是必須嘗試的核函數,其數學形式如下:

k(x,y)=exp(xy22σ2)k(x,y)=exp(-\frac{\left \| x-y \right \|^{2}}{2\sigma ^{2}})

雖然被廣泛使用,但是這個核函數的性能對參數十分敏感,以至於有一大把的文獻專門對這種核函數展開研究,同樣,高斯核函數也有了很多的變種,如指數核,拉普拉斯核等。

4.Exponential Kernel

指數核函數就是高斯核函數的變種,它僅僅是將向量之間的L2距離調整爲L1距離,這樣改動會對參數的依賴性降低,但是適用範圍相對狹窄。其數學形式如下:

k(x,y)=exp(xy2σ2)k(x,y)=exp(-\frac{\left \| x-y \right \|}{2\sigma ^{2}})

5.Laplacian Kernel

拉普拉斯核完全等價於指數核,唯一的區別在於前者對參數的敏感性降低,也是一種徑向基核函數。

k(x,y)=exp(xyσ)k(x,y)=exp(-\frac{\left \| x-y \right \|}{\sigma })

6.ANOVA Kernel

ANOVA 核也屬於徑向基核函數一族,其適用於多維迴歸問題,數學形式如下:

k(x,y)=exp(σ(xkyk)2)dk(x,y)=exp(-\sigma(x^{k}-y^{k})^{2})^{d}

7.Sigmoid Kernel

Sigmoid 核來源於神經網絡,現在已經大量應用於深度學習,是當今機器學習的寵兒,它是S型的,所以被用作於“激活函數”。關於這個函數的性質可以說好幾篇文獻,大家可以隨便找一篇深度學習的文章看看。

k(x,y)=tanh(axty+c)k(x,y)=tanh(ax^{t}y+c)

8.Rational Quadratic Kernel
二次有理核完完全全是作爲高斯核的替代品出現,如果你覺得高斯核函數很耗時,那麼不妨嘗試一下這個核函數,順便說一下,這個核函數作用域雖廣,但是對參數十分敏感,慎用!!!!

k(x,y)=1xy2xy2+ck(x,y)=1-\frac{\left \| x-y \right \|^{2}}{\left \| x-y \right \|^{2}+c}

2.18.8 軟間隔與正則化

2.18.9 SVM主要特點及缺點?

http://www.elecfans.com/emb/fpga/20171118582139_2.html

3.3.2.1 SVM有如下主要幾個特點:

(1)非線性映射是SVM方法的理論基礎,SVM利用內積核函數代替向高維空間的非線性映射;
(2)對特徵空間劃分的最優超平面是SVM的目標,最大化分類邊際的思想是SVM方法的核心;
(3)支持向量是SVM的訓練結果,在SVM分類決策中起決定作用的是支持向量。
(4)SVM 是一種有堅實理論基礎的新穎的小樣本學習方法。它基本上不涉及概率測度及大數定律等,因此不同於現有的統計方法。從本質上看,它避開了從歸納到演繹的傳統過程,實現了高效的從訓練樣本到預報樣本的“轉導推理”,大大簡化了通常的分類和迴歸等問題。
(5)SVM 的最終決策函數只由少數的支持向量所確定,計算的複雜性取決於支持向量的數目,而不是樣本空間的維數,這在某種意義上避免了“維數災難”。
(6)少數支持向量決定了最終結果,這不但可以幫助我們抓住關鍵樣本、“剔除”大量冗餘樣本,而且註定了該方法不但算法簡單,而且具有較好的“魯棒”性。這種“魯棒”性主要體現在:
①增、刪非支持向量樣本對模型沒有影響;
②支持向量樣本集具有一定的魯棒性;
③有些成功的應用中,SVM 方法對核的選取不敏感

3.3.2.2 SVM的兩個不足:
(1) SVM算法對大規模訓練樣本難以實施
由 於SVM是藉助二次規劃來求解支持向量,而求解二次規劃將涉及m階矩陣的計算(m爲樣本的個數),當m數目很大時該矩陣的存儲和計算將耗費大量的機器內存 和運算時間。針對以上問題的主要改進有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、張學工的 CSVM以及O.L.Mangasarian等的SOR算法。
(2) 用SVM解決多分類問題存在困難
經典的支持向量機算法只給出了二類分類的算法,而在數據挖掘的實際應用中,一般要解決多類的分類問題。可以通過多個二類支持向量機的組合來解決。主要有一對多組合模式、一對一組合模式和SVM決策樹;再就是通過構造多個分類器的組合來解決。主要原理是克服SVM固有的缺點,結合其他算法的優勢,解決多類問題的分類精度。如:與粗集理論結合,形成一種優勢互補的多類問題的組合分類器。

2.19 貝葉斯

2.19.1 圖解極大似然估計

極大似然估計 http://blog.csdn.net/zengxiantao1994/article/details/72787849

極大似然估計的原理,用一張圖片來說明,如下圖所示:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UvyxJOBt-1575791211729)(./img/ch2/2-7.png)]

總結起來,最大似然估計的目的就是:利用已知的樣本結果,反推最有可能(最大概率)導致這樣結果的參數值。

原理:極大似然估計是建立在極大似然原理的基礎上的一個統計方法,是概率論在統計學中的應用。極大似然估計提供了一種給定觀察數據來評估模型參數的方法,即:“模型已定,參數未知”。通過若干次試驗,觀察其結果,利用試驗結果得到某個參數值能夠使樣本出現的概率爲最大,則稱爲極大似然估計。

由於樣本集中的樣本都是獨立同分布,可以只考慮一類樣本集D,來估計參數向量θ。記已知的樣本集爲:

D=x1,x2,...,xnD=x_{1},x_{2},...,x_{n}

似然函數(linkehood function):聯合概率密度函數P(Dθ)P(D|\theta )稱爲相對於x1,x2,...,xnx_{1},x_{2},...,x_{n}的θ的似然函數。

l(θ)=p(Dθ)=p(x1,x2,...,xNθ)=i=1Np(xiθ)l(\theta )=p(D|\theta ) =p(x_{1},x_{2},...,x_{N}|\theta )=\prod_{i=1}^{N}p(x_{i}|\theta )

如果θ^\hat{\theta}是參數空間中能使似然函數l(θ)l(\theta)最大的θ值,則θ^\hat{\theta}應該是“最可能”的參數值,那麼θ^\hat{\theta}就是θ的極大似然估計量。它是樣本集的函數,記作:

θ^=d(x1,x2,...,xN)=d(D)\hat{\theta}=d(x_{1},x_{2},...,x_{N})=d(D)

θ^(x1,x2,...,xN)\hat{\theta}(x_{1},x_{2},...,x_{N})稱爲極大似然函數估計值。

2.19.2 樸素貝葉斯分類器和一般的貝葉斯分類器有什麼區別?

2.19.3 樸素與半樸素貝葉斯分類器

2.19.4 貝葉斯網三種典型結構

2.19.5 什麼是貝葉斯錯誤率

2.19.6 什麼是貝葉斯最優錯誤率

2.20 EM算法解決問題及實現流程

1.EM算法要解決的問題

我們經常會從樣本觀察數據中,找出樣本的模型參數。 最常用的方法就是極大化模型分佈的對數似然函數。

但是在一些情況下,我們得到的觀察數據有未觀察到的隱含數據,此時我們未知的有隱含數據和模型參數,因而無法直接用極大化對數似然函數得到模型分佈的參數。怎麼辦呢?這就是EM算法可以派上用場的地方了。

EM算法解決這個的思路是使用啓發式的迭代方法,既然我們無法直接求出模型分佈參數,那麼我們可以先猜想隱含數據(EM算法的E步),接着基於觀察數據和猜測的隱含數據一起來極大化對數似然,求解我們的模型參數(EM算法的M步)。由於我們之前的隱藏數據是猜測的,所以此時得到的模型參數一般還不是我們想要的結果。不過沒關係,我們基於當前得到的模型參數,繼續猜測隱含數據(EM算法的E步),然後繼續極大化對數似然,求解我們的模型參數(EM算法的M步)。以此類推,不斷的迭代下去,直到模型分佈參數基本無變化,算法收斂,找到合適的模型參數。

從上面的描述可以看出,EM算法是迭代求解最大值的算法,同時算法在每一次迭代時分爲兩步,E步和M步。一輪輪迭代更新隱含數據和模型分佈參數,直到收斂,即得到我們需要的模型參數。

一個最直觀瞭解EM算法思路的是K-Means算法,見之前寫的K-Means聚類算法原理。

在K-Means聚類時,每個聚類簇的質心是隱含數據。我們會假設KK個初始化質心,即EM算法的E步;然後計算得到每個樣本最近的質心,並把樣本聚類到最近的這個質心,即EM算法的M步。重複這個E步和M步,直到質心不再變化爲止,這樣就完成了K-Means聚類。

當然,K-Means算法是比較簡單的,實際中的問題往往沒有這麼簡單。上面對EM算法的描述還很粗糙,我們需要用數學的語言精準描述。

2.EM算法流程

現在我們總結下EM算法的流程。

輸入:觀察數據x=(x(1),x(2),…x(m))x=(x(1),x(2),…x(m)),聯合分佈p(x,z|θ)p(x,z|θ), 條件分佈p(z|x,θ)p(z|x,θ), 最大迭代次數JJ。

  1. 隨機初始化模型參數θθ的初值θ0θ0。

2) for j from 1 to J開始EM算法迭代:

a) E步:計算聯合分佈的條件概率期望:
Qi(z(i))=P(z(i)|x(i),θj))Qi(z(i))=P(z(i)|x(i),θj))
L(θ,θj)=∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)L(θ,θj)=∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)

b) M步:極大化L(θ,θj)L(θ,θj),得到θj+1θj+1:
θj+1=argmaxθL(θ,θj)θj+1=argmaxθL(θ,θj)

c) 如果θj+1θj+1已收斂,則算法結束。否則繼續回到步驟a)進行E步迭代。

輸出:模型參數θθ。

2.21 降維和聚類

2.21.1 爲什麼會產生維數災難?

http://blog.csdn.net/chenjianbo88/article/details/52382943

假設地球上貓和狗的數量是無限的。由於有限的時間和計算能力,我們僅僅選取了10張照片作爲訓練樣本。我們的目的是基於這10張照片來訓練一個線性分類器,使得這個線性分類器可以對剩餘的貓或狗的照片進行正確分類。我們從只用一個特徵來辨別貓和狗開始:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bNwNVe00-1575791211729)(./img/ch2/2-8.png)]

從圖2可以看到,如果僅僅只有一個特徵的話,貓和狗幾乎是均勻分佈在這條線段上,很難將10張照片線性分類。那麼,增加一個特徵後的情況會怎麼樣:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Wam11FZB-1575791211730)(./img/ch2/2-9.png)]

增加一個特徵後,我們發現仍然無法找到一條直線將貓和狗分開。所以,考慮需要再增加一個特徵:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TRtSd67B-1575791211731)(./img/ch2/2-10.png)]

此時,我們終於找到了一個平面將貓和狗分開。需要注意的是,只有一個特徵時,假設特徵空間是長度爲5的線段,則樣本密度是10/5=2。有兩個特徵時,特徵空間大小是55=25,樣本密度是10/25=0.4。有三個特徵時,特徵空間大小是55*5=125,樣本密度是10/125=0.08。如果繼續增加特徵數量,樣本密度會更加稀疏,也就更容易找到一個超平面將訓練樣本分開。因爲隨着特徵數量趨向於無限大,樣本密度非常稀疏,訓練樣本被分錯的可能性趨向於零。當我們將高維空間的分類結果映射到低維空間時,一個嚴重的問題出現了:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pfPqxu63-1575791211731)(./img/ch2/2-11.png)]

從圖5可以看到將三維特徵空間映射到二維特徵空間後的結果。儘管在高維特徵空間時訓練樣本線性可分,但是映射到低維空間後,結果正好相反。事實上,增加特徵數量使得高維空間線性可分,相當於在低維空間內訓練一個複雜的非線性分類器。不過,這個非線性分類器太過“聰明”,僅僅學到了一些特例。如果將其用來辨別那些未曾出現在訓練樣本中的測試樣本時,通常結果不太理想。這其實就是我們在機器學習中學過的過擬合問題。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nBxBgZQk-1575791211732)(./img/ch2/2-12.png)]

儘管圖6所示的只採用2個特徵的線性分類器分錯了一些訓練樣本,準確率似乎沒有圖4的高,但是,採用2個特徵的線性分類器的泛化能力比採用3個特徵的線性分類器要強。因爲,採用2個特徵的線性分類器學習到的不只是特例,而是一個整體趨勢,對於那些未曾出現過的樣本也可以比較好地辨別開來。換句話說,通過減少特徵數量,可以避免出現過擬合問題,從而避免“維數災難”。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7H9BhobQ-1575791211732)(./img/ch2/2-13.png)]

圖7從另一個角度詮釋了“維數災難”。假設只有一個特徵時,特徵的值域是0到1,每一隻貓和狗的特徵值都是唯一的。如果我們希望訓練樣本覆蓋特徵值值域的20%,那麼就需要貓和狗總數的20%。我們增加一個特徵後,爲了繼續覆蓋特徵值值域的20%就需要貓和狗總數的45%(0.452=0.2)。繼續增加一個特徵後,需要貓和狗總數的58%(0.583=0.2)。隨着特徵數量的增加,爲了覆蓋特徵值值域的20%,就需要更多的訓練樣本。如果沒有足夠的訓練樣本,就可能會出現過擬合問題。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9xQFyNLB-1575791211733)(./img/ch2/2-14.png)]

通過上述例子,我們可以看到特徵數量越多,訓練樣本就會越稀疏,分類器的參數估計就會越不準確,更加容易出現過擬合問題。“維數災難”的另一個影響是訓練樣本的稀疏性並不是均勻分佈的。處於中心位置的訓練樣本比四周的訓練樣本更加稀疏。

假設有一個二維特徵空間,如圖8所示的矩形,在矩形內部有一個內切的圓形。由於越接近圓心的樣本越稀疏,因此,相比於圓形內的樣本,那些位於矩形四角的樣本更加難以分類。那麼,隨着特徵數量的增加,圓形的面積會不會變化呢?這裏我們假設超立方體(hypercube)的邊長d=1,那麼計算半徑爲0.5的超球面(hypersphere)的體積(volume)的公式爲:
V(d)=πd2Γ(d2+1)0.5dV(d)=\frac{\pi ^{\frac{d}{2}}}{\Gamma (\frac{d}{2}+1)}0.5^{d}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xcAWFdQy-1575791211734)(./img/ch2/2-15.png)]

從圖9可以看出隨着特徵數量的增加,超球面的體積逐漸減小直至趨向於零,然而超立方體的體積卻不變。這個結果有點出乎意料,但部分說明了分類問題中的“維數災難”:在高維特徵空間中,大多數的訓練樣本位於超立方體的角落。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5jfOP9jc-1575791211734)(./img/ch2/2-16.png)]

圖10顯示了不同維度下,樣本的分佈情況。在8維特徵空間中,共有2^8=256個角落,而98%的樣本分佈在這些角落。隨着維度的不斷增加,公式2將趨向於0,其中dist_max和dist_min分別表示樣本到中心的最大與最小距離。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ayrt9YpS-1575791211735)(./img/ch2/2-17.png)]

因此,在高維特徵空間中對於樣本距離的度量失去意義。由於分類器基本都依賴於如Euclidean距離,Manhattan距離等,所以在特徵數量過大時,分類器的性能就會出現下降。

所以,我們如何避免“維數災難”?圖1顯示了分類器的性能隨着特徵個數的變化不斷增加,過了某一個值後,性能不升反降。這裏的某一個值到底是多少呢?目前,還沒有方法來確定分類問題中的這個閾值是多少,這依賴於訓練樣本的數量,決策邊界的複雜性以及分類器的類型。理論上,如果訓練樣本的數量無限大,那麼就不會存在“維數災難”,我們可以採用任意多的特徵來訓練分類器。事實上,訓練樣本的數量是有限的,所以不應該採用過多的特徵。此外,那些需要精確的非線性決策邊界的分類器,比如neural network,knn,decision trees等的泛化能力往往並不是很好,更容易發生過擬合問題。因此,在設計這些分類器時應當慎重考慮特徵的數量。相反,那些泛化能力較好的分類器,比如naive Bayesian,linear classifier等,可以適當增加特徵的數量。

如果給定了N個特徵,我們該如何從中選出M個最優的特徵?最簡單粗暴的方法是嘗試所有特徵的組合,從中挑出M個最優的特徵。事實上,這是非常花時間的,或者說不可行的。其實,已經有許多特徵選擇算法(feature selection algorithms)來幫助我們確定特徵的數量以及選擇特徵。此外,還有許多特徵抽取方法(feature extraction methods),比如PCA等。交叉驗證(cross-validation)也常常被用於檢測與避免過擬合問題。

參考資料:
[1] Vincent Spruyt. The Curse of Dimensionality in classification. Computer vision for dummies. 2014. [Link]

2.21.2 怎樣避免維數災難

解決維度災難問題:

主成分分析法PCA,線性判別法LDA

奇異值分解簡化數據、拉普拉斯特徵映射

Lassio縮減係數法、小波分析法、

2.21.3 聚類和降維有什麼區別與聯繫?

聚類用於找尋數據內在的分佈結構,既可以作爲一個單獨的過程,比如異常檢測等等。也可作爲分類等其他學習任務的前驅過程。聚類是標準的無監督學習。

  1. 在一些推薦系統中需確定新用戶的類型,但定義“用戶類型”卻可能不太容易,此時往往可先對原油的用戶數據進行聚類,根據聚類結果將每個簇定義爲一個類,然後再基於這些類訓練分類模型,用於判別新用戶的類型。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ysHoH0O9-1575791211735)(./img/ch2/2-18.jpg)]

2)而降維則是爲了緩解維數災難的一個重要方法,就是通過某種數學變換將原始高維屬性空間轉變爲一個低維“子空間”。其基於的假設就是,雖然人們平時觀測到的數據樣本雖然是高維的,但是實際上真正與學習任務相關的是個低維度的分佈。從而通過最主要的幾個特徵維度就可以實現對數據的描述,對於後續的分類很有幫助。比如對於Kaggle上的泰坦尼克號生還問題。通過給定一個人的許多特徵如年齡、姓名、性別、票價等,來判斷其是否能在海難中生還。這就需要首先進行特徵篩選,從而能夠找出主要的特徵,讓學習到的模型有更好的泛化性。

聚類和降維都可以作爲分類等問題的預處理步驟。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oceysL4R-1575791211736)(./img/ch2/2-19.jpg)]

但是他們雖然都能實現對數據的約減。但是二者適用的對象不同,聚類針對的是數據點,而降維則是對於數據的特徵。另外它們着很多種實現方法。聚類中常用的有K-means、層次聚類、基於密度的聚類等;降維中常用的則PCA、Isomap、LLE等。

2.21.4 四種聚類方法之比較

http://www.cnblogs.com/William_Fire/archive/2013/02/09/2909499.html

聚類分析是一種重要的人類行爲,早在孩提時代,一個人就通過不斷改進下意識中的聚類模式來學會如何區分貓狗、動物植物。目前在許多領域都得到了廣泛的研究和成功的應用,如用於模式識別、數據分析、圖像處理、市場研究、客戶分割、Web文檔分類等[1]。

聚類就是按照某個特定標準(如距離準則)把一個數據集分割成不同的類或簇,使得同一個簇內的數據對象的相似性儘可能大,同時不在同一個簇中的數據對象的差異性也儘可能地大。即聚類後同一類的數據儘可能聚集到一起,不同數據儘量分離。

聚類技術[2]正在蓬勃發展,對此有貢獻的研究領域包括數據挖掘、統計學、機器學習、空間數據庫技術、生物學以及市場營銷等。各種聚類方法也被不斷提出和改進,而不同的方法適合於不同類型的數據,因此對各種聚類方法、聚類效果的比較成爲值得研究的課題。

1 聚類算法的分類

目前,有大量的聚類算法[3]。而對於具體應用,聚類算法的選擇取決於數據的類型、聚類的目的。如果聚類分析被用作描述或探查的工具,可以對同樣的數據嘗試多種算法,以發現數據可能揭示的結果。

主要的聚類算法可以劃分爲如下幾類:劃分方法、層次方法、基於密度的方法、基於網格的方法以及基於模型的方法[4-6]。

每一類中都存在着得到廣泛應用的算法,例如:劃分方法中的k-means[7]聚類算法、層次方法中的凝聚型層次聚類算法[8]、基於模型方法中的神經網絡[9]聚類算法等。
​ 目前,聚類問題的研究不僅僅侷限於上述的硬聚類,即每一個數據只能被歸爲一類,模糊聚類[10]也是聚類分析中研究較爲廣泛的一個分支。模糊聚類通過隸 屬函數來確定每個數據隸屬於各個簇的程度,而不是將一個數據對象硬性地歸類到某一簇中。目前已有很多關於模糊聚類的算法被提出,如著名的FCM算法等。
​ 本文主要對k-means聚類算法、凝聚型層次聚類算法、神經網絡聚類算法之SOM,以及模糊聚類的FCM算法通過通用測試數據集進行聚類效果的比較和分析。

2 四種常用聚類算法研究

2.1 k-means聚類算法

k-means是劃分方法中較經典的聚類算法之一。由於該算法的效率高,所以在對大規模數據進行聚類時被廣泛應用。目前,許多算法均圍繞着該算法進行擴展和改進。
k-means算法以k爲參數,把n個對象分成k個簇,使簇內具有較高的相似度,而簇間的相似度較低。k-means算法的處理過程如下:首先,隨機地 選擇k個對象,每個對象初始地代表了一個簇的平均值或中心;對剩餘的每個對象,根據其與各簇中心的距離,將它賦給最近的簇;然後重新計算每個簇的平均值。 這個過程不斷重複,直到準則函數收斂。通常,採用平方誤差準則,其定義如下:

E=i=1kpCpmi2E=\sum_{i=1}^{k}\sum_{p\subset C}|p-m_{i}|^{2}

這裏E是數據庫中所有對象的平方誤差的總和,p是空間中的點,mi是簇Ci的平均值[9]。該目標函數使生成的簇儘可能緊湊獨立,使用的距離度量是歐幾里得距離,當然也可以用其他距離度量。k-means聚類算法的算法流程如下:
​ 輸入:包含n個對象的數據庫和簇的數目k;
​ 輸出:k個簇,使平方誤差準則最小。
​ 步驟:
  (1) 任意選擇k個對象作爲初始的簇中心;
  (2) repeat;
  (3) 根據簇中對象的平均值,將每個對象(重新)賦予最類似的簇;
  (4) 更新簇的平均值,即計算每個簇中對象的平均值;
  (5) until不再發生變化。

2.2 層次聚類算法
​ 根據層次分解的順序是自底向上的還是自上向下的,層次聚類算法分爲凝聚的層次聚類算法和分裂的層次聚類算法。
 凝聚型層次聚類的策略是先將每個對象作爲一個簇,然後合併這些原子簇爲越來越大的簇,直到所有對象都在一個簇中,或者某個終結條件被滿足。絕大多數層次聚類屬於凝聚型層次聚類,它們只是在簇間相似度的定義上有所不同。四種廣泛採用的簇間距離度量方法如下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6S2aSmZB-1575791211737)(./img/ch2/2-20.gif)]

這裏給出採用最小距離的凝聚層次聚類算法流程:

(1) 將每個對象看作一類,計算兩兩之間的最小距離;
 (2) 將距離最小的兩個類合併成一個新類;
 (3) 重新計算新類與所有類之間的距離;
 (4) 重複(2)、(3),直到所有類最後合併成一類。

2.21.5 SOM聚類算法

SOM神經網絡[11]是由芬蘭神經網絡專家Kohonen教授提出的,該算法假設在輸入對象中存在一些拓撲結構或順序,可以實現從輸入空間(n維)到輸出平面(2維)的降維映射,其映射具有拓撲特徵保持性質,與實際的大腦處理有很強的理論聯繫。

SOM網絡包含輸入層和輸出層。輸入層對應一個高維的輸入向量,輸出層由一系列組織在2維網格上的有序節點構成,輸入節點與輸出節點通過權重向量連接。 學習過程中,找到與之距離最短的輸出層單元,即獲勝單元,對其更新。同時,將鄰近區域的權值更新,使輸出節點保持輸入向量的拓撲特徵。

算法流程:

(1) 網絡初始化,對輸出層每個節點權重賦初值;
(2) 將輸入樣本中隨機選取輸入向量,找到與輸入向量距離最小的權重向量;
(3) 定義獲勝單元,在獲勝單元的鄰近區域調整權重使其向輸入向量靠攏;
(4) 提供新樣本、進行訓練;
(5) 收縮鄰域半徑、減小學習率、重複,直到小於允許值,輸出聚類結果。

2.21.6 FCM聚類算法

1965年美國加州大學柏克萊分校的扎德教授第一次提出了‘集合’的概念。經過十多年的發展,模糊集合理論漸漸被應用到各個實際應用方面。爲克服非此即彼的分類缺點,出現了以模糊集合論爲數學基礎的聚類分析。用模糊數學的方法進行聚類分析,就是模糊聚類分析[12]。

FCM算法是一種以隸屬度來確定每個數據點屬於某個聚類程度的算法。該聚類算法是傳統硬聚類算法的一種改進。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JOCpIoVz-1575791211737)(./img/ch2/2-21.gif)]

算法流程:

(1) 標準化數據矩陣;
 (2) 建立模糊相似矩陣,初始化隸屬矩陣;
 (3) 算法開始迭代,直到目標函數收斂到極小值;
 (4) 根據迭代結果,由最後的隸屬矩陣確定數據所屬的類,顯示最後的聚類結果。

3 四種聚類算法試驗

3.1 試驗數據

實驗中,選取專門用於測試分類、聚類算法的國際通用的UCI數據庫中的IRIS[13]數據集,IRIS數據集包含150個樣本數據,分別取自三種不同 的鶯尾屬植物setosa、versicolor和virginica的花朵樣本,每個數據含有4個屬性,即萼片長度、萼片寬度、花瓣長度,單位爲cm。 在數據集上執行不同的聚類算法,可以得到不同精度的聚類結果。

3.2 試驗結果說明

文中基於前面所述各算法原理及算法流程,用matlab進行編程運算,得到表1所示聚類結果。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ITrI3T1K-1575791211738)(./img/ch2/2-22.gif)]

如表1所示,對於四種聚類算法,按三方面進行比較:

(1)聚錯樣本數:總的聚錯的樣本數,即各類中聚錯的樣本數的和;

(2)運行時間:即聚類整個 過程所耗費的時間,單位爲s;

(3)平均準確度:設原數據集有k個類,用ci表示第i類,ni爲ci中樣本的個數,mi爲聚類正確的個數,則mi/ni爲 第i類中的精度,則平均精度爲:

avg=1ki=1kminiavg=\frac{1}{k}\sum_{i=1}^{k}\frac{m_{i}}{n_{i}}

2.22 GBDT和隨機森林的區別

GBDT和隨機森林的相同點:
1、都是由多棵樹組成
2、最終的結果都是由多棵樹一起決定

GBDT和隨機森林的不同點:
1、組成隨機森林的樹可以是分類樹,也可以是迴歸樹;而GBDT只由迴歸樹組成
2、組成隨機森林的樹可以並行生成;而GBDT只能是串行生成
3、對於最終的輸出結果而言,隨機森林採用多數投票等;而GBDT則是將所有結果累加起來,或者加權累加起來
4、隨機森林對異常值不敏感,GBDT對異常值非常敏感
5、隨機森林對訓練集一視同仁,GBDT是基於權值的弱分類器的集成
6、隨機森林是通過減少模型方差提高性能,GBDT是通過減少模型偏差提高性能

2.23 大數據與深度學習之間的關係

大數據**通常被定義爲“超出常用軟件工具捕獲,管理和處理能力”的數據集。
機器學習關心的問題是如何構建計算機程序使用經驗自動改進。
數據挖掘是從數據中提取模式的特定算法的應用。
在數據挖掘中,重點在於算法的應用,而不是算法本身。

機器學習和數據挖掘之間的關係如下:
數據挖掘是一個過程,在此過程中機器學習算法被用作提取數據集中的潛在有價值模式的工具。
大數據與深度學習關係總結如下:

  1. 深度學習是一種模擬大腦的行爲。可以從所學習對象的機制以及行爲等等很多相關聯的方面進行學習,模仿類型行爲以及思維。
  2. 深度學習對於大數據的發展有幫助。深度學習對於大數據技術開發的每一個階段均有幫助,不管是數據的分析還是挖掘還是建模,只有深度學習,這些工作纔會有可能一一得到實現。
  3. 深度學習轉變了解決問題的思維。很多時候發現問題到解決問題,走一步看一步不是一個主要的解決問題的方式了,在深度學習的基礎上,要求我們從開始到最後都要基於哦那個一個目標,爲了需要優化的那個最終目的去進行處理數據以及將數據放入到數據應用平臺上去。
  4. 大數據的深度學習需要一個框架。在大數據方面的深度學習都是從基礎的角度出發的,深度學習需要一個框架或者一個系統總而言之,將你的大數據通過深度分析變爲現實這就是深度學習和大數據的最直接關係。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章