-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
二分類算法(二分類算法什么意思)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于二分類算法的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解SEO相關業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、數(shù)據(jù)與bh等價是什么關系
數(shù)據(jù)與BH等價是指,對于一個給定的問題或任務,在某個數(shù)據(jù)集上表現(xiàn)最好的算法(Best Hypothesis,簡稱BH)所得到的結果和在該數(shù)據(jù)集上表現(xiàn)最好的所有算法中平均性能相當時所需使用的樣本量。
具體來說,假設我們有一個二分類問題,并且有多個不同算法可以用于解決這個問題。我們將每種算法應用于同一組訓練數(shù)據(jù),并記錄它們在測試集上的性能。然后,我們找出在測試集上表現(xiàn)最好的那個算法作為BH。接著,我們計算其他所有算法與BH之間差距(即誤差),并確定需要多少額外樣本才能使這些其他算法達到與BH相當?shù)男阅芩健?/p>
因此,數(shù)據(jù)與BH等價關系意味著:如果我們想要比較兩種不同方法或模型在某項任務中哪種更優(yōu)秀,則需要確保使用足夠數(shù)量、質(zhì)量和代表性良好的訓練和測試數(shù)據(jù);同時還需要考慮選擇合適評估指標以及如何處理可能存在過擬合、欠擬合等情況。只有滿足了這些條件才能進行有效而可靠地比較分析。
二、(二):GBDT算法梳理
GBDT(Gradient Boosting Decision Tree)是一種采用加法模型(即基函數(shù)的線性組合)與前向分步算法并以決策樹作為基函數(shù)的提升方法。通俗來說就是,該算法由多棵決策樹組成,所有樹的結論加起來形成最終答案。
GBDT也是集成學習Boosting家族的成員,但是卻和傳統(tǒng)的Adaboost有很大的不同?;仡櫹翧daboost,我們是利用前一輪迭代弱學習器的誤差率來更新訓練集的權重,這樣一輪輪的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱學習器限定了只能使用CART回歸樹模型,同時迭代思路和Adaboost也有所不同。
在GBDT的迭代中,假設我們前一輪迭代得到的強學習器是ft−1(x), 損失函數(shù)是L(y,ft−1(x)), 我們本輪迭代的目標是找到一個CART回歸樹模型的弱學習器ht(x),讓本輪的損失函數(shù)L(y,ft(x)=L(y,ft−1(x)+ht(x))最小。也就是說,本輪迭代找到?jīng)Q策樹,要讓樣本的損失盡量變得更小。
要理解GBDT算法,得先來了解一下什么是前向分步算法。下面一起來瞧瞧。
我們將
作為加法模型,其中b(x;γm)為基函數(shù),γm為基函數(shù)的參數(shù),βm為基函數(shù)的系數(shù),βm表示著對應的基函數(shù)在加法模型f(x)中的重要性。
在給定訓練數(shù)據(jù)和損失函數(shù)L(y,f(x))的條件下,學習加法模型成為經(jīng)驗風險極小化 (即損失函數(shù)極小化問題) :
前向分步算法求解這一優(yōu)化問題的思路: 因為學習的是加法模型,如果能夠從前向后,每一步只學習一個基函數(shù)及其系數(shù),逐步去逼近上述的目標函數(shù)式,就可簡化優(yōu)化的復雜度,每一步只需優(yōu)化如下?lián)p失函數(shù):
前向分步算法流程:
因此,前向分布算法將同時求解從m=1到M的所有參數(shù)βm, rm的優(yōu)化問題簡化為逐次求解各個βm, rm的優(yōu)化問題。
提升樹利用加法模型與前向分步算法實現(xiàn)學習的優(yōu)化過程,當損失函數(shù)是平方損失和指數(shù)損失函數(shù)時,每一步優(yōu)化很簡單,但對一般損失函數(shù)而言,每一步的優(yōu)化并不容易。Freidman提出了 梯度提升算法 (gradient boosting),其關鍵是利用損失函數(shù)的負梯度在當前模型的值作為回歸問題提升樹算法中的殘差的近似值,擬合一個回歸樹(用損失函數(shù)的負梯度來擬合本輪損失的近似值,進而擬合一個CART回歸樹)。第t輪的第i個樣本的損失函數(shù)的負梯度表示為:
. 其中 J 為葉子節(jié)點的個數(shù)。
針對每一個葉子節(jié)點里的樣本,我們求出使損失函數(shù)最小,也就是擬合葉子節(jié)點最好的的輸出值Ctj
如下:
這樣我們就得到了本輪的決策樹擬合函數(shù)如下:
從而本輪最終得到的強學習器的表達式如下:
通過損失函數(shù)的負梯度來擬合,我們找到了一種通用的擬合損失誤差的辦法,這樣無輪是分類問題還是回歸問題,我們通過其損失函數(shù)的負梯度的擬合,就可以用 GBDT 來解決我們的分類回歸問題。區(qū)別僅僅在于損失函數(shù)不同導致的負梯度不同而已。
在GBDT算法中,損失函數(shù)的選擇十分重要。針對不同的問題,損失函數(shù)有不同的選擇。
1.對于分類算法,其損失函數(shù)一般由對數(shù)損失函數(shù)和指數(shù)損失函數(shù)兩種。
(1)指數(shù)損失函數(shù)表達式:
(2)對數(shù)損失函數(shù)可分為二分類和多分類兩種。
2.對于回歸算法,常用損失函數(shù)有如下4種。
(1)平方損失函數(shù) :
(2)絕對損失函數(shù) :
對應負梯度誤差為:
(3)Huber損失 ,它是均方差和絕對損失的折中產(chǎn)物,對于遠離中心的異常點,采用絕對損失誤差,而對于靠近中心的點則采用平方損失。這個界限一般用分位數(shù)點度量。損失函數(shù)如下:
對應的負梯度誤差為:
(4)分位數(shù)損失。 它對應的是分位數(shù)回歸的損失函數(shù),表達式為:
其中 θ為分位數(shù),需要我們在回歸之前指定。對應的負梯度誤差為:
對于Huber損失和分位數(shù)損失,主要用于健壯回歸,也就是減少異常點對損失函數(shù)的影響。
這里我們再看看GBDT分類算法,GBDT的分類算法從思想上和GBDT的回歸算法沒有區(qū)別,但是由于樣本輸出不是連續(xù)的值,而是離散的類別,導致我們無法直接從輸出類別去擬合類別輸出的誤差。
為了解決這個問題,主要有兩個方法,一個是用指數(shù)損失函數(shù),此時GBDT退化為Adaboost算法。另一種方法是用類似于邏輯回歸的對數(shù)似然損失函數(shù)的方法。也就是說,我們用的是類別的預測概率值和真實概率值的差來擬合損失。本文僅討論用對數(shù)似然損失函數(shù)的GBDT分類。而對于對數(shù)似然損失函數(shù),我們又有二元分類和多元分類的區(qū)別。
和 Adaboost 一樣,我們也需要對 GBDT 進行正則化,防止過擬合。GBDT 的正則化主要有三種方式。
在scikit-learn中,GradientBoostingClassifier為GBDT的分類類, 而GradientBoostingRegressor為GBDT的回歸類。兩者的參數(shù)類型完全相同,當然有些參數(shù)比如損失函數(shù)loss的可選擇項并不相同。這些參數(shù)中,類似于Adaboost,我們把重要參數(shù)分為兩類,第一類是Boosting框架的重要參數(shù),第二類是弱學習器即CART回歸樹的重要參數(shù)。
下面我們就從這兩個方面來介紹這些參數(shù)的使用。
這次基本上是個CRUD boy,對于這些資料都大部分沒有消化完成,還不知道能用在哪個地方。
參考資料:
3、GBDT算法梳理 https://juejin.im/post/5c7b7bf451882530a269a1ba
三、大數(shù)據(jù)算法:分類算法
KNN算法,即K近鄰(K Nearest Neighbour)算法,是一種基本的分類算法。其主要原理是:對于一個需要分類的數(shù)據(jù),將其和一組已經(jīng)分類標注好的樣本集合進行比較,得到距離最近的K個樣本,K個樣本最多歸屬的類別,就是這個需要分類數(shù)據(jù)的類別。下面我給你畫了一個KNN算法的原理圖。
圖中,紅藍綠三種顏色的點為樣本數(shù)據(jù),分屬三種類別 、 、 。對于待分類點 ,計算和它距離最近的5個點(即K為5),這5個點最多歸屬的類別為 (4個點歸屬 ,1個點歸屬 ),那么 的類別被分類為 。
KNN的算法流程也非常簡單,請看下面的流程圖。
KNN算法是一種非常簡單實用的分類算法,可用于各種分類的場景,比如新聞分類、商品分類等,甚至可用于簡單的文字識別。對于新聞分類,可以提前對若干新聞進行人工標注,標好新聞類別,計算好特征向量。對于一篇未分類的新聞,計算其特征向量后,跟所有已標注新聞進行距離計算,然后進一步利用KNN算法進行自動分類。
讀到這你肯定會問,如何計算數(shù)據(jù)的距離呢?如何獲得新聞的特征向量呢?
KNN算法的關鍵是要比較需要分類的數(shù)據(jù)與樣本數(shù)據(jù)之間的距離,這在機器學習中通常的做法是:提取數(shù)據(jù)的特征值,根據(jù)特征值組成一個n維實數(shù)向量空間(這個空間也被稱作特征空間),然后計算向量之間的空間距離??臻g之間的距離計算方法有很多種,常用的有歐氏距離、余弦距離等。
對于數(shù)據(jù) 和 ,若其特征空間為n維實數(shù)向量空間 ,即 , ,則其歐氏距離計算公式為
這個歐式距離公式其實我們在初中的時候就學過,平面幾何和立體幾何里兩個點之間的距離,也是用這個公式計算出來的,只是平面幾何(二維幾何)里的n=2,立體幾何(三維幾何)里的n=3,而機器學習需要面對的每個數(shù)據(jù)都可能有n維的維度,即每個數(shù)據(jù)有n個特征值。但是不管特征值n是多少,兩個數(shù)據(jù)之間的空間距離的計算公式還是這個歐氏計算公式。大多數(shù)機器學習算法都需要計算數(shù)據(jù)之間的距離,因此掌握數(shù)據(jù)的距離計算公式是掌握機器學習算法的基礎。
歐氏距離是最常用的數(shù)據(jù)計算公式,但是在文本數(shù)據(jù)以及用戶評價數(shù)據(jù)的機器學習中,更常用的距離計算方法是余弦相似度。
余弦相似度的值越接近1表示其越相似,越接近0表示其差異越大,使用余弦相似度可以消除數(shù)據(jù)的某些冗余信息,某些情況下更貼近數(shù)據(jù)的本質(zhì)。我舉個簡單的例子,比如兩篇文章的特征值都是:“大數(shù)據(jù)”“機器學習”和“極客時間”,A文章的特征向量為(3, 3, 3),即這三個詞出現(xiàn)次數(shù)都是3;B文章的特征向量為(6, 6, 6),即這三個詞出現(xiàn)次數(shù)都是6。如果光看特征向量,這兩個向量差別很大,如果用歐氏距離計算確實也很大,但是這兩篇文章其實非常相似,只是篇幅不同而已,它們的余弦相似度為1,表示非常相似。
余弦相似度其實是計算向量的夾角,而歐氏距離公式是計算空間距離。余弦相似度更關注數(shù)據(jù)的相似性,比如兩個用戶給兩件商品的打分分別是(3, 3)和(4, 4),那么兩個用戶對兩件商品的喜好是相似的,這種情況下,余弦相似度比歐氏距離更合理。
我們知道了機器學習的算法需要計算距離,而計算距離需要還知道數(shù)據(jù)的特征向量,因此提取數(shù)據(jù)的特征向量是機器學習工程師們的重要工作,有時候甚至是最重要的工作。不同的數(shù)據(jù)以及不同的應用場景需要提取不同的特征值,我們以比較常見的文本數(shù)據(jù)為例,看看如何提取文本特征向量。
文本數(shù)據(jù)的特征值就是提取文本關鍵詞,TF-IDF算法是比較常用且直觀的一種文本關鍵詞提取算法。這種算法是由TF和IDF兩部分構成。
TF是詞頻(Term Frequency),表示某個單詞在文檔中出現(xiàn)的頻率,一個單詞在一個文檔中出現(xiàn)的越頻繁,TF值越高。
詞頻:
IDF是逆文檔頻率(Inverse Document Frequency),表示這個單詞在所有文檔中的稀缺程度,越少文檔出現(xiàn)這個詞,IDF值越高。
逆文檔頻率:
TF與IDF的乘積就是TF-IDF。
所以如果一個詞在某一個文檔中頻繁出現(xiàn),但在所有文檔中卻很少出現(xiàn),那么這個詞很可能就是這個文檔的關鍵詞。比如一篇關于原子能的技術文章,“核裂變”“放射性”“半衰期”等詞匯會在這篇文檔中頻繁出現(xiàn),即TF很高;但是在所有文檔中出現(xiàn)的頻率卻比較低,即IDF也比較高。因此這幾個詞的TF-IDF值就會很高,就可能是這篇文檔的關鍵詞。如果這是一篇關于中國原子能的文章,也許“中國”這個詞也會頻繁出現(xiàn),即TF也很高,但是“中國”也在很多文檔中出現(xiàn),那么IDF就會比較低,最后“中國”這個詞的TF-IDF就很低,不會成為這個文檔的關鍵詞。
提取出關鍵詞以后,就可以利用關鍵詞的詞頻構造特征向量,比如上面例子關于原子能的文章,“核裂變”“放射性”“半衰期”這三個詞是特征值,分別出現(xiàn)次數(shù)為12、9、4。那么這篇文章的特征向量就是(12, 9, 4),再利用前面提到的空間距離計算公式計算與其他文檔的距離,結合KNN算法就可以實現(xiàn)文檔的自動分類。
貝葉斯公式是一種基于條件概率的分類算法,如果我們已經(jīng)知道A和B的發(fā)生概率,并且知道了B發(fā)生情況下A發(fā)生的概率,可以用貝葉斯公式計算A發(fā)生的情況下B發(fā)生的概率。事實上,我們可以根據(jù)A的情況,即輸入數(shù)據(jù),判斷B的概率,即B的可能性,進而進行分類。
舉個例子:假設一所學校里男生占60%,女生占40%。男生總是穿長褲,女生則一半穿長褲一半穿裙子。假設你走在校園中,迎面走來一個穿長褲的學生,你能夠推斷出這個穿長褲學生是男生的概率是多少嗎?
答案是75%,具體算法是:
這個算法就利用了貝葉斯公式,貝葉斯公式的寫法是:
意思是A發(fā)生的條件下B發(fā)生的概率,等于B發(fā)生的條件下A發(fā)生的概率,乘以B發(fā)生的概率,除以A發(fā)生的概率。還是上面這個例子,如果我問你迎面走來穿裙子的學生是女生的概率是多少。同樣帶入貝葉斯公式,可以計算出是女生的概率為100%。其實這個結果我們根據(jù)常識也能推斷出來,但是很多時候,常識受各種因素的干擾,會出現(xiàn)偏差。比如有人看到一篇博士生給初中學歷老板打工的新聞,就感嘆讀書無用。事實上,只是少見多怪,樣本量太少而已。而大量數(shù)據(jù)的統(tǒng)計規(guī)律則能準確反映事物的分類概率。
貝葉斯分類的一個典型的應用場合是垃圾郵件分類,通過對樣本郵件的統(tǒng)計,我們知道每個詞在郵件中出現(xiàn)的概率 ,我們也知道正常郵件概率 和垃圾郵件的概率 ,還可以統(tǒng)計出垃圾郵件中各個詞的出現(xiàn)概率 ,那么現(xiàn)在一封新郵件到來,我們就可以根據(jù)郵件中出現(xiàn)的詞,計算 ,即得到這些詞出現(xiàn)情況下,郵件為垃圾郵件的概率,進而判斷郵件是否為垃圾郵件。
現(xiàn)實中,貝葉斯公式等號右邊的概率,我們可以通過對大數(shù)據(jù)的統(tǒng)計獲得,當有新的數(shù)據(jù)到來的時候,我們就可以帶入上面的貝葉斯公式計算其概率。而如果我們設定概率超過某個值就認為其會發(fā)生,那么我們就對這個數(shù)據(jù)進行了分類和預測,具體過程如下圖所示。
訓練樣本就是我們的原始數(shù)據(jù),有時候原始數(shù)據(jù)并不包含我們想要計算的維度數(shù)據(jù),比如我們想用貝葉斯公式自動分類垃圾郵件,那么首先要對原始郵件進行標注,需要標注哪些郵件是正常郵件、哪些郵件是垃圾郵件。這一類需要對數(shù)據(jù)進行標注才能進行的機器學習訓練也叫作有監(jiān)督的機器學習。
四、降維算法二:LDA(Linear Discriminant Analysis)
學習分類算法,線性分類器最簡單的就是LDA,它可以看做是簡化版的SVM,如果想理解SVM這種分類器,那理解LDA就是很有必要的了。
談到LDA,就不得不談談PCA,PCA是一個和LDA非常相關的算法,從推導、求解、到算法最終的結果,都有著相當?shù)南嗨啤?/p>
本次的內(nèi)容主要是以推導數(shù)學公式為主,都是從算法的物理意義出發(fā),然后一步一步最終推導到最終的式子,LDA和PCA最終的表現(xiàn)都是解一個矩陣特征值的問題,但是理解了如何推導,才能更深刻的理解其中的含義。本次內(nèi)容要求讀者有一些基本的線性代數(shù)基礎,比如說特征值、特征向量的概念,空間投影,點乘等的一些基本知識等。除此之外的其他公式、我都盡量講得更簡單清楚。
LDA的全稱是Linear Discriminant Analysis(線性判別分析),是一種 supervised learning 。有些資料上也稱為是Fisher’s Linear Discriminant,因為它被Ronald Fisher發(fā)明自1936年,Discriminant這次詞我個人的理解是,一個模型,不需要去通過概率的方法來訓練、預測數(shù)據(jù),比如說各種貝葉斯方法,就需要獲取數(shù)據(jù)的先驗、后驗概率等等。LDA是在 目前機器學習、數(shù)據(jù)挖掘領域經(jīng)典且熱門的一個算法 ,據(jù)我所知,百度的商務搜索部里面就用了不少這方面的算法。
LDA的原理是,將帶上標簽的數(shù)據(jù)(點),通過投影的方法,投影到維度更低的空間中,使得投影后的點,會形成按類別區(qū)分,一簇一簇的情況,相同類別的點,將會在投影后的空間中更接近。要說明白LDA,首先得弄明白線性分類器( Linear Classifier ):因為LDA是一種線性分類器。對于K-分類的一個分類問題,會有K個線性函數(shù):
上式實際上就是一種投影,是將一個高維的點投影到一條高維的直線上,LDA最求的目標是,給出一個標注了類別的數(shù)據(jù)集,投影到了一條直線之后,能夠使得點盡量的按類別區(qū)分開,當k=2即二分類問題的時候,如下圖所示:
紅色的方形的點為0類的原始點、藍色的方形點為1類的原始點,經(jīng)過原點的那條線就是投影的直線,從圖上可以清楚的看到,紅色的點和藍色的點被原點明顯的分開了,這個數(shù)據(jù)只是隨便畫的,如果在高維的情況下,看起來會更好一點。下面我來推導一下二分類LDA問題的公式:
假設用來區(qū)分二分類的直線(投影函數(shù))為:
LDA分類的一個目標是使得不同類別之間的距離越遠越好,同一類別之中的距離越近越好,所以我們需要定義幾個關鍵的值。
類別i的原始中心點為:(Di表示屬于類別i的點)
類別i投影后的中心點為:
衡量類別i投影后,類別點之間的分散程度(方差)為:
最終我們可以得到一個下面的公式,表示LDA投影到w后的損失函數(shù):
分類的目標是, 使得類別內(nèi)的點距離越近越好(集中),類別間的點越遠越好。 分母表示每一個類別內(nèi)的方差之和,方差越大表示一個類別內(nèi)的點越分散,分子為兩個類別各自的中心點的距離的平方,我們最大化J(w)就可以求出最優(yōu)的w了。想要求出最優(yōu)的w,可以使用拉格朗日乘子法,但是現(xiàn)在我們得到的J(w)里面,w是不能被單獨提出來的,我們就得想辦法將w單獨提出來。
我們定義一個投影前的各類別分散程度的矩陣,這個矩陣看起來有一點麻煩,其實意思是,如果某一個分類的輸入點集Di里面的點距離這個分類的中心店mi越近,則Si里面元素的值就越小,如果分類的點都緊緊地圍繞著mi,則Si里面的元素值越更接近0.
同樣的將J(w)分子化為:
我們希望 分母越小越好,分子越大越好 :
分母小,則每個類內(nèi)部數(shù)據(jù)點比較聚集;
分子大,則兩個類別的距離較遠。
所以需要找出一個 W 使 J(W) 的值最大。
這樣就可以用最喜歡的拉格朗日乘子法了,但是還有一個問題,如果分子、分母是都可以取任意值的,那就會使得有無窮解,我們將分母限制為長度為1(這是用拉格朗日乘子法一個很重要的技巧,在下面將說的PCA里面也會用到,如果忘記了,請復習一下高數(shù)),并作為拉格朗日乘子法的限制條件,帶入得到:
這樣的式子就是一個求特征值的問題了。
對于N(N>2)分類的問題,我就直接寫出下面的結論了:
二者都有降維的作用。
以上就是關于二分類算法相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
山東城鄉(xiāng)規(guī)劃院二分院(山東城鄉(xiāng)規(guī)劃院二分院招聘)
杭州公交公司第二分公司電話(杭州公交公司第二分公司電話是多少)