機器學習面試準備

1.SVM與邏輯迴歸

軟間隔SVM與邏輯迴歸的區別

  1、邏輯迴歸通過輸出預測概率後根據閾值進行判斷類別SVM則直接輸出分割超平面,然後使用0/1函數對距離進行分類,不能直接輸出概率值,如果需要SVM輸出概率值則需要進行特殊處理,可以根據距離的大小進行歸一化概率輸出。

  2、邏輯迴歸可以使用多閾值然後進行多分類,SVM則需要進行推廣。

  3、SVM在訓練過程只需要支持向量的,依賴的訓練樣本數較小,而邏輯迴歸則是需要全部的訓練樣本數據,在訓練時開銷更大。

SVM轉化爲對偶問題後,分類只需要計算與少數幾個支持向量的距離,這個在進行復雜核函數計算時優勢很明顯,能夠大大簡化模型和計算量。

兩者對異常的敏感度也不一樣。同樣的線性分類情況下,如果異常點較多的話,無法剔除,首先LR,LR中每個樣本都是有貢獻的,最大似然後會自動壓制異常的貢獻,SVM+軟間隔對異常還是比較敏感,因爲其訓練只需要支持向量,有效樣本本來就不高,一旦被幹擾,預測結果難以預料。


2.朴樹貝葉斯, 半樸素貝葉斯

條件概率:是指事件A在另外一個事件B已經發生條件下的發生概率,記P(A|B)

推導出條件概率的求解公式爲:

貝葉斯理論:

貝葉斯定理是關於隨機事件A和B的條件概率(或邊緣概率)的一則定理。下面不加證明地直接給出貝葉斯定理:

貝葉斯定理之所以有用,是因爲我們在生活中經常遇到這種情況:我們可以很容易直接得出P(A|B),P(B|A)則很難直接得出,但我們更關心P(B|A),貝葉斯定理就爲我們打通從P(A|B)獲得P(B|A)的道路。

樸素貝葉斯分類(有監督的):

樸素貝葉斯的思想基礎是這樣的:對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認爲此待分類項屬於哪個類別。

推薦:https://blog.csdn.net/guoyunfei20/article/details/78911721

3.最大似然估計(MLE)與貝葉斯估計

總結參數估計:模型已定,參數未知!

最大似然估計的核心思想是:找到參數θ的一個估計值,使得當前樣本出現的可能性最大。

1)寫似然函數  2)一般對似然函數取對數,並將對數似然函數整理 

3)對數似然函數求導,令導數爲0,求得似然方程 
4)根據似然方程求解,得到的參數即爲所求估計值

統計學裏有兩個大的流派,一個是頻率派,一個是貝葉斯派。時至今日,這兩派還未就各自的觀點達成統一。我們前面提到的最大似然估計就是頻率派的典型思路,下面是貝葉斯派的貝葉斯公式式子:

p(yi|x)是後驗概率。p(x|yi)p(x|yi)是條件概率,或者說似然概率,這個概率一般都可以通過歷史數據統計得出。而p(yi)p(yi)是先驗概率,一般也是根據歷史數據統計得出或者認爲給定的,貝葉斯里的先驗概率,就是指p(yi)p(yi)。對於p(x)p(x),我們前面提到可以用全概率公式計算得出,但是在貝葉斯公式裏面我們一般不care這個概率,因爲我們往往只需要求出最大後驗概率而不需要求出最大後驗的具體值。
全概率公式:

兩者最大的區別就在這裏:貝葉斯估計引入了先驗概率,通過先驗概率與似然概率來求解後驗概率。而最大似然估計是直接通過最大化似然概率來求解得出的最大似然估計沒有考慮模型本身的概率,或者說認爲模型出現的概率都相等。而貝葉斯估計將模型出現的概率用先驗概率的方式在計算過程中有所體現。

最後來個總結:從本質上來說,最大似然是對點估計貝葉斯推斷是對分佈估計。即,假設求解參數θ,最大似然是求出最有可能的θ值,而貝葉斯推斷則是求解θ的分佈

MLE簡單又客觀,但是過分的客觀有時會導致過擬合在樣本點很少的情況下,MLE的效果並不好。比如我們前面舉的病毒的例子。在這種情況下,我們可以通過加入先驗,用貝葉斯估計進行計算。 而貝葉斯估計則有可能引入不合理的先驗概率。

4.邏輯迴歸

邏輯迴歸,(線性迴歸也是屬於有監督的)屬於有監督的學習邏輯迴歸不是迴歸,而是分類問題,只不過它用了迴歸的辦法來做分類

輸入變量與輸出變量均爲連續變量的預測問題是迴歸問題,輸出變量爲有限個離散變量的預測問題成爲分類問題.

利用線性迴歸的辦法來擬合然後設置閾值的辦法容易受到離羣值的影響,sigmod函數可以有效地解決;邏輯迴歸輸出結果是樣本預測爲正例的概率(0到1之間的小數)

 

https://blog.csdn.net/zjuPeco/article/details/77165974

https://blog.csdn.net/weixin_39445556/article/details/83930186

 

5.層次聚類;密度聚類(DBSCAN算法, 密度最大值聚類)

聚類算法是常見的無監督聚類方法(無監督學習是在樣本的標籤未知的情況下,根據樣本的內在規律對樣本進行分類

聚類算法模型的性能度量大致有兩類:

  1)將模型結果與某個參考模型(或者稱爲外部指標)進行對比,私認爲這種方法用的比較少,因爲需要人爲的去設定外部參考模型。

  2)另一種是直接使用模型的內部屬性,比如樣本之間的距離(閔可夫斯基距離)來作爲評判指標,這類稱爲內部指標

kmeans聚類:

主要核心有兩步:一是計算樣本到各簇心的距離,將樣本劃分到距離最小的那一簇中二是在將所有的樣本都劃分完之後,計算各簇心的樣本均值向量,然後將該均值向量設爲新的簇心。而迭代的終止條件是當前均值向量和簇心是基本一致。

1)在初始化時,隨機選擇K個樣本作爲初始的簇心,倘若此時隨機的結果不好,比如兩個隨機的簇心捱得很近,這可能會導致模型收斂的速度減慢,常見的解決方式是先隨機選取一個樣本作爲簇心計算樣本到該簇心的距離,隨機選擇下一個簇心,此時選取時會傾向於選擇和與最近簇心之間距離較大的樣本作爲簇心,直到選擇完K個簇心

2)每次迭代時都要計算所有樣本和所有簇心之間的距離,若此時樣本很大,或者簇心很多時,計算代價是非常大的,因此每次隨機抽取一小批樣本來更新當前的簇心(通過無放回隨機採樣)。除了這種方式之外還有一種K-means方法(elkan K-means)也可以減少距離的計算

Kmeans優點:(1)原理簡單,實現容易,且收斂速度也較快。(2)聚類效果較好,而且可解釋性較強。(3)參數很少,需要調的參數只有簇的個數K。

Kmeans缺點:(1)K值的選取比較難;(2)對於非凸數據集收斂比較難;(3)如果隱含類別的數據不平衡,則聚類效果不佳,比如隱含類型的方差不同,方差較大的類中的樣本可能會被聚類到其他類別中;(4)對噪聲和異常點比較敏感 (5)迭代得到的結果只是局部最優。(6)不穩定,與K個聚類中心初始選擇有關,k的不同初始化其結果就可能不同

層次聚類:凝聚的層次聚類、分裂的層次聚類

凝聚的層次聚類:
1,  將每個對象作爲一個簇,這時就有7個簇。

2,  自底向上合併接近的簇,假設合併成了三個簇:AB,CDE,FG。

3,  重複第二步直到數量達到規定的簇的數量K。

分裂的層次聚類:
1,  將所有的樣本置於一個簇中。

2,  逐漸細分成越來越小的簇。

3,  重複第二步直到數量達到規定的簇的數量K。

AGNES是一種採用自底向上的聚類策略的層次聚類算法。AGNES的核心思想是先將數據集中的每個樣本看作一個初始聚類簇,然後每次迭代時找出距離最近的兩個簇進行合併,依次迭代知道簇類的個數達到我們指定的個數K爲止,這種方法的好處是隨着簇類數量的減少,需要計算的距離也會越來越少而且相對K-means,不需要考慮初始化時隨機簇心對模型到來的影響。

密度聚類:

密度聚類方法的指導思想是,只要樣本點的密度大於某閾值,則將該樣本添加到最近的簇中。

優點:這類算法能克服基於距離的算法只能發現“類圓形”(凸)的聚類的缺點,可發現任意形狀的聚類,且對噪聲數據不敏感

缺點:計算密度單元的計算複雜度大,因此需要建立空間索引來降低計算量。

密度聚類算法假定聚類結構能通過樣本分佈的緊密程度來確定。同一類別的樣本,他們之間是緊密相連的,通過樣本密度來考察樣本之間的可連接性,並基於可連接樣本不斷擴展聚類簇以獲得最終的聚類結果。因此密度聚類也是不需要提前設置簇數K的值的

密度聚類的常用算法介紹:

DBSCAN:它將簇定義爲密度相連的點的最大集合,於是能夠把具有足夠高密度的區域劃分爲簇,並可在有“噪聲”的數據中發現任意形狀的聚類。

相關概念:

對象的ε-鄰域:給定對象在半徑ε內的區域。

核心對象:對於給定的數目m,如果一個對象的ε-鄰域至少包含m個對象,則稱該對象爲核心對象

直接密度可達:給定一個對象集合D,如果p是在q的ε-鄰域內,而q是一個核心對象,我們說對象p從對象q出發是直接密度可達的。

密度可達:如果存在一個對象鏈p 1p 2 …p n ,p 1 =q,p n =p,對p i ∈D,(1≤i ≤n),p i+1 是從p i 關於ε和m直接密度可達的則對象p是從對象q關於ε和m密度可達的。

密度相連:如果對象集合D中存在一個對象o,使得對象p和q是從o關於ε和m密度可達的,那麼對象p和q是關於ε和m密度相連的。

簇:一個基於密度的簇是最大的密度相連對象的集合。

噪聲:不包含在任何簇中的對象稱爲噪聲。

DBSCAN的核心思想:由密度可達關係導出的最大的密度相連樣本集合。即分類簇C必須滿足:

  1)連接性:xi∈ C,xj∈ C,可以直接推出xi 與xj 密度相連,同簇內的元素必須滿足密度相連

  2)最大性:xi∈ C,xj 有xi 密度可達可以推出xj ∈C 

算法流程:

1,如果一個點p的ε-鄰域包含多於m個對象,則創建一個p作爲核心對象的新簇;

2,尋找併合並核心對象直接密度可達的對象;

3, 沒有新點可以更新簇時,算法結束。

算法特點:

1.每個簇至少包含一個核心對象;

2.非核心對象可以是簇的一部分,構成了簇的邊緣(edge);

3.包含過少對象的簇被認爲是噪聲

與K-means算法相比,DBSCAN算法有兩大特點一是不需要預先設定簇數K的值,二是DBSCAN算法同時適用於凸集和非凸集而K-means只適用於凸集,在非凸集上可能無法收斂。對於DBSCAN算法適用於稠密的數據或者是非凸集的數據,此時DBSCAB算法的效果要比K-means算法好很多。因此若數據不是稠密的,我們一般不用DBSCAN算法。

密度最大值聚類

人感覺這個是用於找聚類中心和異常值的。

推薦:https://blog.csdn.net/xueyingxue001/article/details/51966945

https://www.cnblogs.com/jiangxinyang/p/9250451.html

6. 集成學習:boost,bagging, 隨機森林, GBDT、XGBDT

集成算法本身不是一個單獨的機器學習算法,而是通過將基於其他的機器學習算法構建多個學習器並集成到一起;集成算法可以分爲同質集成和異質集成同質集成是值集成算法中的個體學習器都是同一類型的學習器比如都是決策樹異質集成是集成算法中的個體學習器由不同類型的學習器組成的。目前比較流行的集成算法都是同質算法,而且基本都是基於決策樹或者神經網絡的

集成算法是由多個弱學習器組成的算法,而對於這些弱學習器我們希望每個學習器的具有較好的準確性而且各個學習器之間又存在較大的差異性,這樣的集成算法纔會有較好的結果,然而實際上準確性和多樣性往往是相互衝突的,這就需要我們去找到較好的臨界點來保證集成算法的效果。根據個體學習器的生成方式不同,我們可以將集成算法分成兩類

(1)個體學習器之間存在強依賴關係必須串行化生成的序列化方法,這一類的代表是Boosting常見的算法有Adaboost、GBDT);

(2)個體學習器之間不存在強依賴關係可以並行化生成每個個體學習器,這一類的代表是Bagging(常見的算法有RandomForest)

Boost:

對於分類問題,給定一個訓練集,求得一個弱學習器要比求一個強學習器容易得多,Boosting方法就是從弱學習器出發,反覆學習而得到一系列弱學習器,然後組合這些弱學習器,構成一個強學習器。Boosting算法的工作機制可以概括爲:(1)先從初始訓練集訓練出一個基學習器,(2)再根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的樣本受到更多的關注(通過施加權重來控制),(3)然後基於調整後的樣本集訓練下一個基學習器,如此反覆進行,直到學得的基學習器的個數達到設定的個數T基學習器的個數是我們需要調試的超參,通過交叉驗證來選擇),(4)最終對這T個基學習器根據他們的預測表現來施加不同的權重並結合在一起構成我們的強學習器。

Boosting 裏面最具代表的就是adboost:

https://www.cnblogs.com/jiangxinyang/p/9236385.html

Bagging算法的核心是通過在原始數據集上進行採樣,獲得多份不同的樣本集,用這些樣本集來訓練基學習器。第一節中我們提到基學習器需要平衡準確性和多樣性,因此我們所採集的樣本需要滿足這兩點,Bagging採用自助採樣法(Bootstrap)進行採樣自助採樣法的規則如下:定包含m的樣本的數據集,我們先隨機從中抽取一個樣本出來,再將該樣本放回,以便在下一次仍有機會抽到這樣經過m次隨機採樣,我們就可以獲得m的樣本的樣本集(這樣的樣本集中約含有原始數據集中的63.2%的樣本),按照這種方式抽取出T份樣本集出來,用這T份樣本集訓練出T個基學習器,在預測時根據這T個基學習器預測的結果,通常採用投票法來決定最終的輸出Bagging與Adaboost只適用於二分類問題不同,可以不經修改的用於多分類問題。

Bagging算法中最常見的算法就是RandomForest(隨機森林)算法RandomForest是Bagging的一種變體,在Bagging的基礎上引進了屬性干擾這一策略,主要是用來提高基學習器之間的多樣性。具體規則:傳統的決策樹是在整個屬性集上選擇最優的屬性來劃分樣本集合,而RandomForest先在屬性集上隨機選取k個屬性組成一個子屬性集,然後在這個子屬性集上選擇最優的屬性來劃分樣本集合,這裏的參數k控制了隨機性的引入程度一般情況下推薦k=log2d,d爲屬性集的大小。

Bagging算法的作用主要是減小模型的方差,我們來看看bagging和方差具體有什麼樣的關係。假設有𝑛n個隨機變量,方差記爲𝜎2,兩兩變量之間爲𝜖,則𝑛n個隨機變量的均值方差爲:

    𝜖∗𝜎2+(1−𝜖)∗𝜎2/𝑛

  因此當兩兩變量之間的相關性爲0時,𝑛n個隨機變量的均值方差則爲:𝜎2/𝑛σ2/n。

  因此對於𝑛個模型,若是模型之間相互獨立,則方差會降低 𝑛倍,但實際中模型之間不可能相互獨立,因此我們只能儘量增加模型的多樣性,當前也得平衡基學習器的準確率。

Adaboost和Boosting算法一樣,重點關注模型的偏差,迭代的過程中是以降低偏差爲目的,一般偏差會較小,但這並不意味這Adaboost的方差很大,很容易過擬合,實際上是可以通過調整模型的複雜度來避免過擬合的,Adaboost只能做二分類問題,最終的輸出是用sign函數決定的。當然對算法上做一些修改也是可以用於迴歸問題的,但是對於多分類問題就比較複雜。Adaboost算法常用的弱學習器是決策樹和神經網絡(理論上可以用任何學習器作爲基學習器)。對於決策樹,Adaboost分類用了CART分類樹Adaboost迴歸用了CART迴歸樹。

RandomForest算法常用的弱學習器也是決策樹和神經網絡,對於決策樹,在隨機森林中也是使用CART分類迴歸樹來處理分類迴歸問題

集成學習的輸出方式:

1)平均法

  對於數值類的迴歸問題,通常使用的方式是平均法,也即是對每個弱學習器的輸出加和取平均值,將該平均值作爲最後的輸出,當然有的時候會給每個學習器帶上權重,此時就是加權平均獲得最終的輸出值。

2)投票法

  對於分類問題的輸出方式常採用投票法,最簡單的投票方式就是取弱學習器中預測最多的那一類作爲我們的輸出值,其次嚴格一點的投票方式是不但要輸出預測最多的那一類的值,且該類的值要佔到預測的值的一半以上最後還有對每個弱學習器賦予權重,對於最終的投票計算會乘以對應的權重(比如選舉時班長的一票頂五票,而普通學生一票就只是一票)。

3)學習法

  對於平均法和投票法相對比較簡單,有時候在預測時可能存在誤差,於是就衍生出了學習法,例如stacking,當使用stacking時是將所有弱學習器的輸出作爲輸入,在這基礎上再建立一個模型,讓機器自己去學習輸出方式有時候我們會訓練多個強學習器,比如將訓練一個隨機森林的學習器,再訓練一個Adaboost的學習器然後將這兩個學習器的弱學習器的輸出作爲輸入(這樣我們就有兩條輸入數據),訓練一個用於最終預測的學習器來輸出結果。

Adaboost的主要優點:

  1)Adaboost作爲分類器時,分類精度很高

  2)在Adaboost的框架下,可以使用各種分類迴歸模型來構建基學習器

  3)作爲簡單的二分類問題,構建簡單,結果可理解

  4)不容易發生過擬合

  Adaboost的主要缺點:

  1)對異常樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習其的預測準確性

  2)Adaboost只能做二分類問題,要做多分類問需要做其他的變通

RandomForest算法常用的弱學習器也是決策樹和神經網絡,對於決策樹,在隨機森林中也是使用CART分類迴歸樹來處理分類迴歸問題,通常採用投票法和平均法來決定最後的輸出,對於分類問題採用投票法也決定了隨機森林能無修改的應用於多分類問題,隨機森林和Bagging算法一樣,重點關注降低模型的方差,泛化能力強,但是有時候也會出現較大的訓練誤差,這可以通過加大模型的複雜度來解決,另外在隨機森林中是採用隨機選擇子特徵集的,子特徵集的個數也會影響要模型的方差和偏差,一般認爲子特徵集越大,模型的偏差會越小。

隨機森林的主要優點:

  1)訓練可以高度並行化,因此算法的速度要選快於Adaboost。

  2)由於隨機子特徵集,因此在高維特徵下,算法仍具有較好的效率

  3)在訓練後可以給出各個特徵對輸出的重要性

  4)由於隨機採樣,訓練出的模型的方差小,泛化能力強

  5)算法實現起來比Boosting更簡單

  6)對部分特徵缺失不敏感

 隨機森林的主要缺點:

  1)在某些噪聲比較大的樣本集上,RF模型容易陷入過擬合

  2)取值比較多的特徵容易影響隨機森林的決策,影響模型的擬合效果

最後關於Bagging重點降低方差,Boosting重點降低偏差來說一說。首先對於Bagging來說,利用對樣本進行重採樣,然後用類似的模型來訓練基學習器,由於子樣本集的相似性和使用的模型相同,因此最終的基學習器有近似相等的方差和偏差,對於類似的偏差是無法通過模型平均來降低的,而對於方差在模型平均時會弱化每個基學習器的異常值,強化每個基學習器的共通值,因此會降低模型的方差。對於Boosting,其算法的核心就是關注偏差,在算法優化過程中每次都最小化弱學習器,這本身就是一種以降低偏差爲目的的優化方式,因此會降低模型的偏差,當然Boosting也會降低模型的方差,只是沒有偏差明顯。

前向分佈算法:

對於這個問題是個很複雜的優化問題,而且要訓練的參數非常的多,前向分佈算法的提出就是爲了解決模型的優化問題,其核心思想是因爲加法模型是由多各模型相加在一起的,而且在Boosting中模型之間又是有先後順序的,因此可以在執行每一步加法的時候對模型進行優化,那麼每一步只需要學習一個模型和一個參數,通過這種方式來逐步逼近全局最優,每一步優化的損失函數:

GBDT是梯度提升決策樹(Gradient Boosting Decision Tree)的簡稱,GBDT可以說是最好的機器學習算法之一。GBDT分類和迴歸時的基學習器都是CART迴歸樹,因爲是擬合殘差的。

GBDT和Adaboost一樣可以用前向分佈算法來描述,因爲Adaboost旨在重點關注上一輪分類錯誤的樣本,GBDT算法在每一步迭代時是輸出的值不一樣,本輪要擬合的輸出值是之前的加法模型的預測值和真實值的差值(模型的殘差,也稱爲損失)

xgboost:引入正則化項 Ω(𝑓𝑡)來控制樹的複雜度,從而實現有效的控制模型的過擬合這是xgboost中的第一個重要點。式子中的T爲葉子節點數。

和GBDT方法一樣,XGBoost的提升模型也是採用殘差,不同的是分裂結點選取的時候不一定是最小平方損失,其損失函數如下,較GBDT其根據樹模型的複雜度加入了一項正則化項:

GBDT與XGBoost的區別:

     1)XGBoost將樹模型的複雜度加入到正則項中,來避免過擬合,因此泛化性能會強於GBDT。

   2)損失函數是用泰勒展開式展開的同時用到了一階導和二階導,可以加快優化速度。

   3)和GBDT只支持CART作爲基分類器之外,還支持線性分類器,在使用線性分類器的時候可以使用L1,L2正則化。

  4)引進了特徵子採樣,像RandomForest那樣,這種方法既能降低過擬合,還能減少計算。

  5)在尋找最佳分割點時,考慮到傳統的貪心算法效率較低,實現了一種近似貪心算法,用來加速和減小內存消耗,除此之外還考慮了稀疏數據集和缺失值的處理,對於特徵的值有缺失的樣本,XGBoost依然能自動找到其要分裂的方向。

  6)XGBoost支持並行處理,XGBoost的並行不是在模型上的並行,而是在特徵上的並行將特徵列排序後以block的形式存儲在內存中,在後面的迭代中重複使用這個結構。這個block也使得並行化成爲了可能,其次在進行節點分裂時,計算每個特徵的增益,最終選擇增益最大的那個特徵去做分割,那麼各個特徵的增益計算就可以開多線程進行。

CART迴歸樹:https://blog.csdn.net/zhihua_oba/article/details/72230427

CART分類迴歸樹是一種典型的二叉決策樹,可以做分類或者回歸。如果待預測結果是離散型數據,則CART生成分類決策樹;如果待預測結果是連續型數據,則CART生成迴歸決策樹

作爲分類決策樹時,待預測樣本落至某一葉子節點,則輸出該葉子節點中所有樣本所屬類別最多的那一類(即葉子節點中的樣本可能不是屬於同一個類別,則多數爲主);作爲迴歸決策樹時,待預測樣本落至某一葉子節點,則輸出該葉子節點中所有樣本的均值。

根據基尼係數(在樣本中抽取兩次樣本,不同的概率)獲得樣本集S的最優分裂屬性以及最優分裂屬性值;

由於決策樹的建立完全是依賴於訓練樣本,因此該決策樹對訓練樣本能夠產生完美的擬合效果但這樣的決策樹對於測試樣本來說過於龐大而複雜,可能產生較高的分類錯誤率。這種現象就稱爲過擬合。因此需要將複雜的決策樹進行簡化,即去掉一些節點解決過擬合問題,這個過程稱爲剪枝。剪枝方法分爲預剪枝和後剪枝兩大類。預剪枝是在構建決策樹的過程中,提前終止決策樹的生長,從而避免過多的節點產生。預剪枝方法雖然簡單但實用性不強,因爲很難精確的判斷何時終止樹的生長。後剪枝是在決策樹構建完成之後,對那些置信度不達標的節點子樹用葉子結點代替,該葉子結點的類標號用該節點子樹中頻率最高的類標記。

推薦:https://www.cnblogs.com/jiangxinyang/p/9248154.html

7.SVM簡單介紹,原理,損失函數,解法?SVM核函數的作用,有哪些常用的核函數?

對於核函數選擇技巧,其目的是希望通過將輸入空間內線性不可分的數據映射到一個高緯的特徵空間內使得數據在特徵空間內是可分的

8.爲什麼現在都用cnn而不用SVM

SVM比較適合特徵維度大於樣本數量(也就是在本身的特徵空間就樣本可分),而CNN訓練過程的特徵維度是有限的但是樣本的數量是極大的,所以cnn不適合SVM;而RCNN, SPP Net使用SVM使用了不同IOU(提高了IOU減少樣本數量,欠採樣)來訓練SVM。

9.特徵工程的基本方法?簡單介紹一下過濾式特徵選擇過程?特徵選擇的基本方法?

特徵工程目的就是獲取更好的訓練數據目的是最大限度地從原始數據中提取特徵以供算法和模型使用

數據預處理:

(1)不屬於同一量綱:即特徵的規格不一樣,不能夠放在一起比較。無量綱化可以解決這一問題;

常見的無量綱化方法標準化和區間縮放法標準化的前提是特徵值服從正態分佈,標準化後,其轉換成標準正態分佈。區間縮放法利用了邊界值信息,將特徵的取值區間縮放到某個特點的範圍,例如[0, 1]等。標準化是依照特徵矩陣的列處理數據其通過求z-score的方法將樣本的特徵值轉換到同一量綱下歸一化是依照特徵矩陣的行處理數據,其目的在於樣本向量在點乘運算或其他核函數計算相似性時,擁有統一的標準,也就是說都轉化爲“單位向量”。

(2)信息冗餘:對於某些定量特徵,其包含的有效信息爲區間劃分,二值化解決區間劃分問題(比如說及格或者不及格),定量特徵二值化的核心在於設定一個閾值,大於閾值的賦值爲1,小於等於閾值的賦值爲0

(3)使用啞編碼的方式將定性特徵轉換爲定量特徵;可以使用one hot編碼

(4)存在缺失值:缺失值需要補充。

(5)信息利用率低:不同的機器學習算法和模型對數據中信息的利用是不同的;常見的數據變換有基於多項式的基於指數函數的基於對數函數的

特徵工程是利用數據領域的相關知識來創建能夠使機器學習算法達到最佳性能的特徵的過程。

特徵選擇:

1)特徵是否發散:如果一個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本上沒有差異這個特徵對於樣本的區分並沒有什麼用。

2)特徵與目標的相關性:這點比較顯見,與目標相關性高的特徵,應當優選選擇。除方差法外,本文介紹的其他方法均從相關性考慮。

  • Filter:過濾法,按照發散性或者相關性對各個特徵進行評分,設定閾值或者待選擇閾值的個數,選擇特徵。

過濾法的方差選擇法:使用方差選擇法,先要計算各個特徵的方差,然後根據閾值,選擇方差大於閾值的特徵

過濾法的相關性特徵選擇:

a)使用相關係數法,先要計算各個特徵對目標值的相關係數以及相關係數的P值

b)經典的卡方檢驗是檢驗定性自變量對定性因變量的相關性。假設自變量有N種取值,因變量有M種取值,考慮自變量等於i且因變量等於j的樣本頻數的觀察值與期望的差距,構建統計量;這個統計量的含義簡而言之就是自變量對因變量的相關性

c)經典的互信息也是評價定性自變量對定性因變量的相關性的

  • Wrapper:包裝法,根據目標函數(通常是預測效果評分),每次選擇若干特徵,或者排除若干特徵。

a)遞歸消除特徵:遞歸消除特徵法使用一個基模型來進行多輪訓練,每輪訓練後,消除若干權值係數的特徵,再基於新的特徵集進行下一輪訓練。

  • Embedded:嵌入法,先使用某些機器學習的算法和模型進行訓練,得到各個特徵的權值係數根據係數從大到小選擇特徵。類似於Filter方法,但是是通過訓練來確定特徵的優劣

a)使用帶懲罰項的基模型除了篩選出特徵外,同時也進行了降維;L1懲罰項降維的原理在於保留多個對目標值具有同等相關性特徵中的一個,所以沒選到的特徵不代表不重要,可結合L2懲罰項來優化

b)樹模型中GBDT也可用來作爲基模型進行特徵選擇

降維:

PCA:主成元素分析

LDA:線性判別

特徵工程常用的工具:sklearn

https://blog.csdn.net/zhenaoxi1077/article/details/82791281

10. 降維的方法有哪些?PCA具體怎麼做得?

降維的目的:1)減少預測變量的個數 2)確保這些變量是相互獨立的 3)提供一個框架來解釋結果

特徵降維方法包括:Lasso,PCA,小波分析,LDA,奇異值分解SVD,拉普拉斯特徵映射,SparseAutoEncoder,局部線性嵌入LLE

1)PCA:PCA(Principal Component Analysis)是一種常用的數據分析方法。PCA通過線性變換將原始數據變換爲一組各維度線性無關的表示,可用於提取數據的主要特徵分量,常用於高維數據的降維。PCA不僅僅是對高維數據進行降維,更重要的是經過降維去除了噪聲發現了數據中的模式。

PCA把原先的n個特徵用數目更少的m個特徵取代,新特徵是舊特徵的線性組合,這些線性組合最大化樣本方差儘量使新的m個特徵互不相關。從舊特徵到新特徵的映射捕獲數據中的固有變異性。 

設有m條n維數據。

1)將原始數據按列組成n行m列矩陣X  
2)將X的每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值 (標準化)
3)求出協方差矩陣C=\frac{1}{m}XX^\mathsf{T} 
4)求出協方差矩陣的特徵值及對應的特徵向量 
5)將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣P 
6)Y=PX即爲降維到k維後的數據

2)小波分析:小波分析有一些變換的操作降低其他干擾可以看做是降維。 

3)線性判別式分析(Linear Discriminant Analysis):簡稱爲LDA Fisher線性判別(Fisher Linear Discriminant,FLD)

基本思想是將高維的模式樣本投影到最佳鑑別矢量空間,以達到抽取分類信息壓縮特徵空間維數的效果

LDA與前面介紹過的PCA都是常用的降維技術。PCA主要是從特徵的協方差角度,去找到比較好的投影方式LDA更多的是考慮了標註,即希望投影后不同類別之間數據點的距離更大同一類別的數據點更緊湊。

4)拉普拉斯特徵映射將處於流形上的數據在儘量保留原數據間相似度的情況下,映射到低維下表示。

5)深度學習SparseAutoEncoder:稀疏自編碼就是用少於輸入層神經元數量的隱含層神經元去學習表徵輸入層的特徵相當於把輸入層的特徵壓縮了,所以是特徵降維。

6)矩陣奇異值分解SVD 類似PCA,可以看成一類

7)LLE局部線性嵌入:是一種非線性降維算法,能夠使降維後的數據較好地保持原有流形結構。

LLE算法認爲每一個數據點都可以由其近鄰點的線性加權組合構造得到。算法的主要步驟分爲三步:(1)尋找每個樣本點的k個近鄰點;(2)由每個樣本點的近鄰點計算出該樣本點的局部重建權值矩陣;(3)由該樣本點的局部重建權值矩陣和其近鄰點計算出該樣本點的輸出值。

8)Isomap是一種非迭代的全局優化算法,通過一種原本試用於歐式空間的算法MDS,達到降維的目的。

推薦博客:
https://www.cnblogs.com/zhangchaoyang/articles/2222048.html

https://blog.csdn.net/u014772862/article/details/52335970

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章