99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀人臉識別中常用的幾種分類器
人臉識別中常用的幾種分類器
2018-03-28
收藏

人臉識別中常用的幾種分類器

在人臉識別中有幾種常用的分類器,一是最鄰近分類器;二是線性分類器

(1)最鄰近分類器

最近鄰分類器是模式識別領(lǐng)域中最常用的分類方法之一,其直觀簡單,在通常的應(yīng)用環(huán)境中非常有效。因此在人臉識別問題中有著廣泛的應(yīng)用。最鄰近方法是這樣定義的:

假設(shè)訓(xùn)練樣本(X,Y)={xi,yi | i=1,2,...n},這里xi 代表第i個樣本的特征向量,yi是該樣本的類別標(biāo)簽。對于一個新的待分類樣本xi,最鄰近分類器預(yù)測該樣本的標(biāo)簽的方法是,尋找與xi距離度量最近的訓(xùn)練樣本,然后把該訓(xùn)練樣本的標(biāo)簽作為待測試樣本xi的標(biāo)簽yi' ,即:

這里d(xi, xi) 代表樣本xi 與樣本xi 之間的距離度量。

最鄰近的算法非常直觀,也容易被實現(xiàn),他通過距離測試樣本最近的訓(xùn)練樣本的標(biāo)簽來預(yù)測當(dāng)前測試樣本的類別,可以適用于任何分布的數(shù)據(jù),而且已有文獻證明,在樣本足夠多的情況下,最鄰近分類的錯誤率是比較理想的。

距離度量有很多種,一般采用的室歐氏距離。除此之外還有相關(guān)度,卡方,直方圖交,Bhattacharyya距離(又名巴氏距離)。

1)歐氏距離  :是一個通常采用的距離定義,它是在m維空間中兩個點之間的真實距離。距離值越小,代表兩個直方圖距離越近,越相似,反之中則代表距離越遠(yuǎn)。

2)相關(guān)度

直方圖之間的相關(guān)度定義如下



N等于直方圖中bin的個數(shù),對于相關(guān)度而言,數(shù)值越大越匹配。完全匹配的數(shù)值為1,完全不匹配的是-1,值為0則表示無關(guān)聯(lián),兩個直方圖是隨機組合。

3)卡方Chi-Square

對于卡方而言,匹配度越高,距離越小,則卡方值越低,相反,匹配值越低,距離越大,卡方值越高。完全匹配值為0,完全不匹配的值為無限值。

4)直方圖

對于直方圖交,值越大越匹配,距離越小,越低分表示越不匹配。如果兩個直方圖都被歸一化,那么完全匹配的值為1,完全不匹配的值為0.

5)Bhattacharyya 距離

Bhattacharyya 距離又被稱之為巴氏距離。巴氏距離可用來對兩組特征直方圖的相關(guān)性進行測量,其常用來作為分類器算法。

定義如下:

對于巴氏距離數(shù)值越小表示越匹配,距離越近,而數(shù)值越大表示越不匹配,距離越遠(yuǎn)。兩個直方圖完全匹配值為0,完全不匹配值為1.

(2)線性分類器

線性分類器(一定意義上,也可以叫做感知機) 是最簡單也很有效的分類器形式.在一個線性分類器中,可以看到SVM形成的思路,并接觸很多SVM的核心概念.用一個二維空間里僅有兩類樣本的分類問題來舉個小例子。如圖所示

C1和C2是要區(qū)分的兩個類別,在二維平面中它們的樣本如上圖所示。中間的直線就是一個分類函數(shù),它可以將兩類樣本完全分開。一般的,如果一個線性函數(shù)能夠?qū)颖就耆_的分開,就稱這些數(shù)據(jù)是線性可分的,否則稱為非線性可分的。

LDA:

線性判別式分析(Linear Discriminant Analysis, LDA),也叫做Fisher線性判別(Fisher Linear Discriminant ,FLD),是模式識別的經(jīng)典算法,它是在1996年由Belhumeur引入模式識別和人工智能領(lǐng)域的。性鑒別分析的基本思想是將高維的模式樣本投影到最佳鑒別矢量空間,以達(dá)到抽取分類信息和壓縮特征空間維數(shù)的效果,投影后保證模式樣本在新的子空間有最大的類間距離和最小的類內(nèi)距離,即模式在該空間中有最佳的可分離性。因此,它是一種有效的特征抽取方法。使用這種方法能夠使投影后模式樣本的類間散布矩陣最大,并且同時類內(nèi)散布矩陣最小。就是說,它能夠保證投影后模式樣本在新的空間中有最小的類內(nèi)距離和最大的類間距離,即模式在該空間中有最佳的可分離性。

二. 原理簡述:

LDA的原理是,將帶上標(biāo)簽的數(shù)據(jù)(點),通過投影的方法投影到維度更低的空間中,使得投影后的點形成按類別區(qū)分的情形,即相同類別的點,在投影后的空間中距離較近,不同類別的點,在投影后的空間中距離較遠(yuǎn)。

要說明LDA,首先得弄明白線性分類器(Linear Classifier):因為LDA是一種線性分類器。對于K-分類的一個分類問題,會有K個線性函數(shù):

當(dāng)滿足條件:對于所有的j,都有Yk > Yj,的時候,我們就說x屬于類別k。對于每一個分類,都會用一個公式去計算一個得分值,所有公式的結(jié)果中得分最高的那個類別,就是所屬的分類了。

上式實際上就是一種投影,是將一個高維的點投影到一條高維的直線上,LDA最求的目標(biāo)是,給出一個標(biāo)注了類別的數(shù)據(jù)集,投影到了一條直線之后,能夠使得點盡量的按類別區(qū)分開,當(dāng)k=2即二分類問題的時候,如下圖所示:

紅色的方形的點為0類的原始點、藍(lán)色的方形點為1類的原始點,經(jīng)過原點的那條線就是投影的直線,從圖上可以清楚的看到,紅色的點和藍(lán)色的點被原點明顯的分開了,這個數(shù)據(jù)只是隨便畫的,如果在高維的情況下,看起來會更好一點。下面我來推導(dǎo)一下二分類LDA問題的公式:

假設(shè)用來區(qū)分二分類的直線(投影函數(shù))為:

LDA分類的一個目標(biāo)是使得不同類別之間的距離越遠(yuǎn)越好,同一類別之中的距離越近越好,所以我們需要定義幾個關(guān)鍵的值。

類別i的原始中心點為:(Di表示屬于類別i的點)

類別i投影后的中心點為:

衡量類別i投影后,類別點之間的分散程度(方差)為:

最終我們可以得到一個下面的公式,表示LDA投影到w后的損失函數(shù)

我們分類的目標(biāo)是,使得類別內(nèi)的點距離越近越好(集中),類別間的點越遠(yuǎn)越好。分母表示每一個類別內(nèi)的方差之和,方差越大表示一個類別內(nèi)的點越分散,分子為兩個類別各自的中心點的距離的平方,我們最大化J(w)就可以求出最優(yōu)的w了。想要求出最優(yōu)的w,可以使用拉格朗日乘子法,但是現(xiàn)在我們得到的J(w)里面,w是不能被單獨提出來的,我們就得想辦法將w單獨提出來。

我們定義一個投影前的各類別分散程度的矩陣,這個矩陣的意思是,如果某一個輸入點集Di里面的點距離這個分類的中心點mi越近,則Si里面元素的值就越小,如果分類的點都緊緊地圍繞著mi,則Si里面的元素值越更接近0.

帶入Si,將J(w)分母化為:

image

同樣的將J(w)分子化為:

這樣損失函數(shù)可以化成下面的形式,我們的目標(biāo)是求取它的最大值:

這樣就可以用拉格朗日乘子法了,但是還有一個問題,如果分子、分母是都可以取任意值的,那就會使得有無窮解,我們將分母限制為長度為1(這是用拉格朗日乘子法一個很重要的技巧),并作為拉格朗日乘子法的限制條件,帶入得到:

求導(dǎo)公式如下:

這樣的式子就是一個求特征值的問題了。

對于N(N>2)分類的問題,我就直接寫出下面的結(jié)論了:

又因為w=[w1,w2...wd],所以得到:

損失函數(shù)分解可知,我們要求的是:

最佳投影矩陣的列向量即為的d個最大的特征值所對應(yīng)的特征向量(矩陣特征向量),且最優(yōu)投影軸的個數(shù)d<=c-1(c表示類的個數(shù)).

這里想多談?wù)?a href='/map/tezheng/' style='color:#000;font-size:inherit;'>特征值,特征值在純數(shù)學(xué)、量子力學(xué)、固體力學(xué)、計算機等等領(lǐng)域都有廣泛的應(yīng)用,特征值表示的是矩陣的性質(zhì),當(dāng)我們?nèi)〉骄仃嚨那癗個最大的特征值的時候,我們可以說提取到的矩陣主要的成分(這個和之后的PCA相關(guān),但是不是完全一樣的概念)。在機器學(xué)習(xí)領(lǐng)域,不少的地方都要用到特征值的計算,比如說圖像識別、pagerank、LDA、還有之后將會提到的PCA等等。


Fisher線性判別是PCA+LDA。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }