机器学习算法的面试表达
面試的時(shí)候被問(wèn)到機(jī)器學(xué)習(xí)算法,由于平時(shí)沒(méi)有整理過(guò),回答的很亂,所以整理一下面試時(shí)的表達(dá)。其中有些知識(shí)點(diǎn)沒(méi)寫(xiě),要自行掌握。如果面試官問(wèn)到了就說(shuō),沒(méi)問(wèn)到就略過(guò)。
一、分類(lèi)__決策樹(shù)
決策樹(shù)利用剪枝來(lái)解決過(guò)擬合的問(wèn)題。
過(guò)擬合:用以下算法產(chǎn)生的決策樹(shù)非常詳細(xì),考慮了每個(gè)屬性,用它對(duì)訓(xùn)練樣本進(jìn)行分類(lèi)時(shí),分類(lèi)效果非常好,誤差率極低,但是用它對(duì)測(cè)試樣本進(jìn)行分類(lèi)時(shí),分類(lèi)效果極差,誤差率高,這就是過(guò)擬合。
1、ID3算法(迭代二叉樹(shù)3代)
ID3算法采用貪心方法,它的決策樹(shù)是以自頂向下的遞歸的方式構(gòu)造的。ID3算法在決策樹(shù)各級(jí)節(jié)點(diǎn)上選擇屬性的時(shí)候,選擇信息增益作為屬性的選擇標(biāo)準(zhǔn),直至滿足終止條件。
信息增益 = 劃分前的信息熵 - 按某屬性劃分后的信息熵
終止條件:(1)劃分出來(lái)的類(lèi)屬于同一個(gè)類(lèi)
? ? (2)沒(méi)有屬性可以劃分了
貪心算法:在解決某個(gè)問(wèn)題時(shí),不考慮整體最優(yōu),而考慮在某種情況下的局部最優(yōu)解。
缺點(diǎn):只適用于離散屬性的數(shù)據(jù)集;采用信息增益選擇屬性時(shí)偏向于選擇取值較多的屬性。
2、C4.5算法
C4.5算法采用貪心方法,它的決策樹(shù)是以自頂向下的遞歸的方式構(gòu)造的。C4.5算法在決策樹(shù)各級(jí)節(jié)點(diǎn)上選擇屬性的時(shí)候,選擇信息增益率作為屬性的選擇標(biāo)準(zhǔn),并進(jìn)行剪枝操作,直至滿足終止條件。
信息增益率 = 信息增益 / 分裂信息
分裂信息 = 由訓(xùn)練數(shù)據(jù)集D劃分為對(duì)應(yīng)屬性A的v個(gè)輸出的v個(gè)分分區(qū)產(chǎn)生的信息
剪枝:C4.5采用悲觀剪枝,悲觀剪枝使用訓(xùn)練集估計(jì)錯(cuò)誤率
優(yōu)點(diǎn):C4.5克服了ID3算法用信息增益選擇屬性時(shí)偏向于選擇取值較多的屬性的不足;產(chǎn)生的分類(lèi)規(guī)則易于理解,準(zhǔn)確性較高。
缺點(diǎn):在構(gòu)造樹(shù)的過(guò)程中,需要多次掃描整個(gè)數(shù)據(jù)集,導(dǎo)致算法低效。
3、CART(classification and regression tree)
采用二元遞歸分割技術(shù),將當(dāng)前樣本集劃分為兩個(gè)子樣本集,使生成的每個(gè)非葉子結(jié)點(diǎn)都有兩個(gè)分支。采用Gini指數(shù)度量數(shù)據(jù)分區(qū)或訓(xùn)練元組集的不純度,具有最小基尼指數(shù)的屬性選擇為分裂屬性。
優(yōu)點(diǎn):抽取規(guī)則簡(jiǎn)便且易于理解,存在缺失值時(shí)非常穩(wěn)健
缺點(diǎn):要求被選擇的屬性只能產(chǎn)生兩個(gè)子節(jié)點(diǎn),類(lèi)別過(guò)多時(shí),錯(cuò)誤可能增加的較快
剪枝:代價(jià)復(fù)雜度剪枝算法(后剪枝),它從樹(shù)的底部開(kāi)始,對(duì)于每一個(gè)內(nèi)部節(jié)點(diǎn)N,計(jì)算它的代價(jià)復(fù)雜度以及該子樹(shù)剪枝后的代價(jià)復(fù)雜度(即用一個(gè)樹(shù)葉節(jié)點(diǎn)替換),比較兩個(gè)復(fù)雜度,若剪枝后的復(fù)雜度較小,則剪枝,否則保留該子樹(shù)。
4、GBDT(gradient boosting decision tree)
又叫MART(multiple additive regression tree)。是一種迭代的決策樹(shù)算法,該算法由多棵決策樹(shù)組成,所有樹(shù)的輸出結(jié)果累加起來(lái)就是最終答案。GBDT的核心在于:每一棵樹(shù)學(xué)的是之前所有樹(shù)的結(jié)論和的殘差,直到殘差為0,殘差= 真實(shí)值- 預(yù)測(cè)值。
優(yōu)點(diǎn):應(yīng)用范圍廣,可應(yīng)用于所有回歸問(wèn)題,也可以用于二分類(lèi)問(wèn)題,解決過(guò)擬合問(wèn)題。
5、隨機(jī)森林
隨機(jī)森林由很多隨機(jī)的、不相關(guān)的決策樹(shù)構(gòu)成,分類(lèi)時(shí),每棵樹(shù)都投票并返回票數(shù)最高的類(lèi)。
優(yōu)點(diǎn):能處理高維數(shù)據(jù),且不用做特征選擇;訓(xùn)練速度快;實(shí)現(xiàn)簡(jiǎn)單
缺點(diǎn):模型太小,可能數(shù)百兆的內(nèi)存才能結(jié)束一個(gè)森林,而且評(píng)估的速度也很慢
?
二、分類(lèi)__樸素貝葉斯算法
類(lèi)條件獨(dú)立性:樸素貝葉斯算法假定一個(gè)屬性值在給定類(lèi)上的影響?yīng)毩⒂谄渌麑傩缘闹怠?/span>
貝葉斯定理:
后驗(yàn)概率即為條件概率,先驗(yàn)概率為p(x)
樸素貝葉斯算法:給定元組X,計(jì)算在條件X下每個(gè)類(lèi)的后驗(yàn)概率,預(yù)測(cè)結(jié)果為X屬于具有最高后驗(yàn)概率的類(lèi)。當(dāng)給定具有許多屬性的數(shù)據(jù)集時(shí),計(jì)算P(X|C)的開(kāi)銷(xiāo)太大,所以做類(lèi)條件獨(dú)立性假設(shè)得:
xk表示元組X在屬性Ak的值。
優(yōu)點(diǎn):對(duì)小規(guī)模的數(shù)據(jù)表現(xiàn)良好,適合多分類(lèi)任務(wù)
缺點(diǎn):對(duì)輸入數(shù)據(jù)的表達(dá)式敏感,對(duì)關(guān)聯(lián)性強(qiáng)的特征表現(xiàn)不好
?
三、分類(lèi)__SVM
支持向量機(jī)是一種建立在統(tǒng)計(jì)學(xué)理論的VC維理論和結(jié)構(gòu)風(fēng)險(xiǎn)最小原理基礎(chǔ)之上的對(duì)線性和非線性數(shù)據(jù)進(jìn)行分類(lèi)的方法。它使用一種非線性映射,把原訓(xùn)練數(shù)據(jù)映射到較高的維上,并搜索最佳分離超平面。(即(幾何)間隔最大化)
為什么要選擇間隔最大分類(lèi)器:
(1)假如我們已經(jīng)學(xué)習(xí)了一個(gè)模型,將平面線性分割為兩個(gè)部分(X類(lèi)和Y類(lèi)),A,B,C三點(diǎn),A點(diǎn)離分界面很近,C點(diǎn)離分界面很遠(yuǎn),那么,我們可以很肯定的說(shuō)C點(diǎn)屬于X類(lèi),雖然現(xiàn)在看A點(diǎn)屬于X類(lèi),但是很小的波動(dòng)就可能使它跑到Y類(lèi)的范圍內(nèi)。總的來(lái)說(shuō),一個(gè)點(diǎn)離分界面越遠(yuǎn),我們對(duì)預(yù)測(cè)的結(jié)果越有信心。例子:某次考試以60分為界,大于60為優(yōu)生,小于60為差生,我們能夠判斷90分肯定是優(yōu)生,但是不能完全肯定61分是優(yōu)生。
(2)數(shù)學(xué)角度說(shuō)明:幾何間隔與樣本的誤分次數(shù)存在關(guān)系:誤分次數(shù),其中為樣本到分類(lèi)面的間隔,R為所有樣本中最長(zhǎng)向量值(也就是說(shuō)代表樣本分布有多廣)。誤分次數(shù)在一定程度上代表分類(lèi)器的誤差。
核函數(shù)的本質(zhì):(高斯徑向基核函數(shù),h多項(xiàng)式核函數(shù),s型核函數(shù))
(1)實(shí)際中常遇到線性不可分的樣例,此時(shí),最常用的做法是把樣例特征映射到高維空間去,
(2)但進(jìn)一步,如果凡是遇到線性不可分的樣例,一律映射到高維空間,那么這個(gè)維度大小是會(huì)高到可怕的,核函數(shù)就可以解決這個(gè)問(wèn)題,
(3)核函數(shù)的價(jià)值在于它雖然也是講特征進(jìn)行從低維到高維的轉(zhuǎn)換,但是核函數(shù)絕就絕在它先在低維上進(jìn)行計(jì)算,而將實(shí)質(zhì)上的分類(lèi)效果表現(xiàn)在高維上,也就是說(shuō),避免了直接在高維空間中的復(fù)雜計(jì)算。
優(yōu)點(diǎn):低泛化誤差,較好的泛華性能,不容易過(guò)擬合,計(jì)算復(fù)雜度較低
缺點(diǎn):對(duì)參數(shù)和核函數(shù)的選擇比較敏感
?
四、分類(lèi)__KNN算法
當(dāng)給定一個(gè)未知元組時(shí),計(jì)算未知元組與每個(gè)樣本點(diǎn)的距離(歐氏距離,馬氏距離等)并排序,選出前K個(gè)最小距離的樣本,根據(jù)K各樣本的標(biāo)簽進(jìn)行投票,得到最后的分類(lèi)類(lèi)別。
K值較大:減小噪聲的影響,但會(huì)使類(lèi)別之間的界限變得模糊,精度降低
K值較小:分類(lèi)獲得的有效信息少,甚至丟失
優(yōu)點(diǎn):準(zhǔn)確度高,對(duì)outlier不敏感
缺點(diǎn):計(jì)算量大,存在樣本不平衡問(wèn)題,需要大量的內(nèi)存
?
五、分類(lèi)__關(guān)聯(lián)分類(lèi)
關(guān)聯(lián)分類(lèi)算法主要包括以下步驟:
(1)找出數(shù)據(jù)中經(jīng)常出現(xiàn)的屬性-值對(duì),即頻繁項(xiàng)集;
(2)分析得到的頻繁項(xiàng)集,產(chǎn)生每個(gè)類(lèi)的關(guān)聯(lián)規(guī)則,它們滿足置信度和支持度標(biāo)準(zhǔn);
(3)組織規(guī)則如對(duì)規(guī)則進(jìn)行剪枝,進(jìn)而進(jìn)行規(guī)則排序,形成基于規(guī)則的分類(lèi)器。
CBA(Classification Based on Association)算法使用迭代方法挖掘頻繁項(xiàng)集,選擇最高置信度的規(guī)則;
CMAR(Classification based on Multiple Association Rules)算法使用FP-growth算法挖掘頻繁項(xiàng)集。
缺點(diǎn):存在不平衡數(shù)據(jù)的問(wèn)題
?
六、分類(lèi)__提高分類(lèi)準(zhǔn)確率的技術(shù):
1、Bagging(袋裝= boostrap aggregation自助聚集)
是一種在原始數(shù)據(jù)集上通過(guò)有放回抽樣重新選出S個(gè)數(shù)據(jù)集來(lái)訓(xùn)練分類(lèi)器的集成技術(shù)。對(duì)新樣例分類(lèi)時(shí),投票表決,結(jié)果最高的類(lèi)別即為最終類(lèi)別。
2、AdaBoost(Adaptive Boosting)
第一步:初始化訓(xùn)練數(shù)據(jù)的權(quán)值分布。如果有N個(gè)樣本,則每個(gè)訓(xùn)練樣本最開(kāi)始時(shí)都被賦予相同的權(quán)重:1/N
第二步:訓(xùn)練弱分類(lèi)器。具體訓(xùn)練過(guò)程中,如果某個(gè)樣本點(diǎn)已經(jīng)被準(zhǔn)確的分類(lèi),那么在構(gòu)造下一個(gè)訓(xùn)練集中,它的權(quán)值就被降低;相反,如果某個(gè)樣本未被準(zhǔn)確分類(lèi),那么它的權(quán)值就提高。然后,權(quán)值更新過(guò)的樣本集用于訓(xùn)練下一個(gè)分類(lèi)器,整個(gè)訓(xùn)練過(guò)程如此迭代下去。
第三步:將各個(gè)訓(xùn)練得到的弱分類(lèi)器組合成強(qiáng)分類(lèi)器。各個(gè)弱分類(lèi)器的訓(xùn)練過(guò)程結(jié)束后,加大分類(lèi)誤差率小的弱分類(lèi)器的權(quán)重,使其在最終的分類(lèi)函數(shù)中起著較大的決定作用,而降低分類(lèi)誤差率較大的弱分類(lèi)器的權(quán)重。
Adaptive在于:前一個(gè)基本分類(lèi)器分錯(cuò)的樣本會(huì)得到加強(qiáng),加權(quán)后的全體樣本再次被用來(lái)訓(xùn)練下一個(gè)基本分類(lèi)器,同時(shí),在每一輪中加入一個(gè)新的弱分類(lèi)器,知道達(dá)到某個(gè)預(yù)定的足夠小的錯(cuò)誤率或達(dá)到預(yù)先指定的最大迭代次數(shù)。
優(yōu)點(diǎn):低泛化誤差,容易實(shí)現(xiàn)
缺點(diǎn):對(duì)outlier敏感
?
七、聚類(lèi)__K-Means
K:簇的個(gè)數(shù)
算法步驟:
(1)從D中任意選擇K個(gè)對(duì)象作為初始簇的中心
(2)Repeat
(3)根據(jù)簇中對(duì)象的均值,計(jì)算每個(gè)對(duì)象到中心對(duì)象的距離,將每個(gè)對(duì)象分類(lèi)到最相似的簇
(4)更新簇均值,即重新計(jì)算每個(gè)簇中對(duì)象的均值
(5)Until不再發(fā)生變化
優(yōu)點(diǎn):算法簡(jiǎn)單、快速,當(dāng)簇是密集的、球狀或團(tuán)狀的,且簇與簇之間區(qū)別明顯時(shí),聚類(lèi)效果較好
缺點(diǎn):只有在簇的平均值被定義的情況下才能使用;必須事先給出K值;對(duì)初始值敏感,不同的初始值可能會(huì)導(dǎo)致不同的聚類(lèi)結(jié)果;對(duì)噪聲和孤立點(diǎn)數(shù)據(jù)敏感。
?
八、線性回歸
用于回歸,其基本思想是用梯度下降法對(duì)最小二乘法形式的誤差函數(shù)進(jìn)行優(yōu)化,當(dāng)然也可以用normal equation直接求得參數(shù)的解。
梯度下降法:找到某函數(shù)的最小值,最好的方法是沿著該函數(shù)的梯度方向探尋
梯度下降算法的迭代公式:,其中為步長(zhǎng),即為移動(dòng)量的大小。
優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,計(jì)算簡(jiǎn)單
缺點(diǎn):不能擬合非線性數(shù)據(jù)
?
九、logistic回歸
用于分類(lèi),其基本思想是利用現(xiàn)有數(shù)據(jù)對(duì)分類(lèi)邊界線建立回歸公式,以此進(jìn)行分類(lèi)。為了實(shí)現(xiàn)logistic回歸,我們可以在每個(gè)特征上都乘以一個(gè)回歸系數(shù),然后把所有結(jié)果相加,將這個(gè)總和代入Sigmoid函數(shù)中,進(jìn)而得到一個(gè)范圍在0-1之間的數(shù)值。任何大于0.5的數(shù)據(jù)被分入1類(lèi),小于0.5的數(shù)據(jù)被分入0類(lèi)。
Sigmiod函數(shù):,當(dāng)z=0時(shí),函數(shù)值為0.5
接下來(lái)要確定回歸系數(shù):基于最優(yōu)化方法的最佳回歸系數(shù)確定
梯度上升法:找到某函數(shù)的最大值,最好的方法是沿著該函數(shù)的梯度方向探尋
梯度上升算法的迭代公式:,其中為步長(zhǎng),即為移動(dòng)量的大小。
該公式一直被迭代執(zhí)行,直到達(dá)到某個(gè)停止條件。
使用梯度上升算法找到最佳參數(shù):偽代碼如下:
每個(gè)回歸系數(shù)初始化為1
重復(fù)R次:
? 計(jì)算整個(gè)數(shù)據(jù)集的梯度
? ?使用alpha*gradient更新回歸系數(shù)的向量
返回回歸系數(shù)
優(yōu)點(diǎn):計(jì)算代價(jià)不高,易于理解和實(shí)現(xiàn)
缺點(diǎn):容易欠擬合,分類(lèi)精度可能不高
?
十、Apriori 算法
先驗(yàn)性質(zhì):頻繁項(xiàng)集的所有非空子集也一定是頻繁項(xiàng)集
產(chǎn)生頻繁項(xiàng)集的過(guò)程(使用找出):
(1)連接步:自身與自身重新組合
(2)剪枝步:對(duì)包含不頻繁項(xiàng)集的子集都執(zhí)行剪枝操作
優(yōu)點(diǎn):易編碼實(shí)現(xiàn)
缺點(diǎn):在大數(shù)據(jù)集上可能較慢
?
十一、FP-growth__用于挖掘頻繁項(xiàng)集
只需要掃描項(xiàng)目表2次。
第一次:導(dǎo)出頻繁項(xiàng)集的集合,并得到它們的支持度計(jì)數(shù)
第二次:構(gòu)建FP樹(shù)
優(yōu)點(diǎn):一般要快于Apriori
缺點(diǎn):內(nèi)存開(kāi)銷(xiāo)大,實(shí)現(xiàn)比較困難,在某些數(shù)據(jù)集上性能會(huì)下降
?
十二、主成分分析(PCA)
是一種數(shù)據(jù)降維技巧,它能將大量相關(guān)變量轉(zhuǎn)化為一組很少的不相關(guān)變量,這些無(wú)關(guān)變量稱為主成分。
在PCA中,數(shù)據(jù)從原來(lái)的坐標(biāo)系轉(zhuǎn)換到了新的坐標(biāo)系,新坐標(biāo)系的選擇是由數(shù)據(jù)本身決定的。第一個(gè)新坐標(biāo)軸選擇的是原始數(shù)據(jù)中方差最大的方向,第二個(gè)新坐標(biāo)軸的選擇和第一個(gè)坐標(biāo)軸正交且具有最大方差的方向。該過(guò)程一直重復(fù),重復(fù)次數(shù)為原始數(shù)據(jù)中特征的數(shù)目。我們會(huì)發(fā)現(xiàn),大部分方差都包含在最前面的幾個(gè)新坐標(biāo)軸中。因此,我們可以忽略余下的坐標(biāo)軸,即對(duì)數(shù)據(jù)進(jìn)行了降維處理。
百度解釋:
“對(duì)于一個(gè)訓(xùn)練集,100個(gè)對(duì)象模板,特征是10維,那么它可以建立一個(gè)100*10的矩陣,作為樣本。求這個(gè)樣本的協(xié)方差矩陣,得到一個(gè)10*10的協(xié)方差矩陣,然后求出這個(gè)協(xié)方差矩陣的特征值和特征向量,應(yīng)該有10個(gè)特征值和特征向量,我們根據(jù)特征值的大小,取前四個(gè)特征值所對(duì)應(yīng)的特征向量,構(gòu)成一個(gè)10*4的矩陣,這個(gè)矩陣就是我們要求的特征矩陣,100*10的樣本矩陣乘以這個(gè)10*4的特征矩陣,就得到了一個(gè)100*4的新的降維之后的樣本矩陣,每個(gè)特征的維數(shù)下降了。
注意:PCA并不是直接對(duì)原來(lái)的數(shù)據(jù)進(jìn)行刪減,而是把原來(lái)的數(shù)據(jù)映射到新的一個(gè)特征空間中繼續(xù)表示,所有新的特征空間如果有29維,那么這29維足以能夠表示非常非常多的數(shù)據(jù),并沒(méi)有對(duì)原來(lái)的數(shù)據(jù)進(jìn)行刪減,只是把原來(lái)的數(shù)據(jù)映射到新的空間中進(jìn)行表示,所以你的測(cè)試樣本也要同樣的映射到這個(gè)空間中進(jìn)行表示,這樣就要求你保存住這個(gè)空間坐標(biāo)轉(zhuǎn)換矩陣,把測(cè)試樣本同樣的轉(zhuǎn)換到相同的坐標(biāo)空間中。
優(yōu)點(diǎn):降低數(shù)據(jù)的復(fù)雜性,識(shí)別最重要的多個(gè)特征
缺點(diǎn):可能損失有用信息
?
總結(jié)
以上是生活随笔為你收集整理的机器学习算法的面试表达的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【PS】150种真实木材纹理背景素材
- 下一篇: iptables防火墙与SNAT和DNA