BAT機器學習面試1000題系列(第21~30題)

21.KNN中的K如何選取的府怯?
關(guān)于什么是KNN,可以查看此文:《從K近鄰算法防楷、距離度量談到KD樹牺丙、SIFT+BBF算法》KNN中的K值選取對K近鄰算法的結(jié)果會產(chǎn)生重大影響。如李航博士的一書「統(tǒng)計學習方法」上所說:
在實際應用中,K值一般取一個比較小的數(shù)值冲簿,例如采用交叉驗證法(簡單來說粟判,就是一部分樣本做訓練集,一部分做測試集)來選擇最優(yōu)的K值峦剔。

  1. 如果選擇較小的K值档礁,就相當于用較小的領(lǐng)域中的訓練實例進行預測,“學習”近似誤差會減小吝沫,只有與輸入實例較近或相似的訓練實例才會對預測結(jié)果起作用呻澜,與此同時帶來的問題是“學習”的估計誤差會增大,換句話說惨险,K值的減小就意味著整體模型變得復雜羹幸,容易發(fā)生過擬合;

  2. 如果選擇較大的K值辫愉,就相當于用較大領(lǐng)域中的訓練實例進行預測栅受,其優(yōu)點是可以減少學習的估計誤差,但缺點是學習的近似誤差會增大恭朗。這時候窘疮,與輸入實例較遠(不相似的)訓練實例也會對預測器作用,使預測發(fā)生錯誤冀墨,且K值的增大就意味著整體的模型變得簡單闸衫。

  3. K=N,則完全不足取诽嘉,因為此時無論輸入實例是什么蔚出,都只是簡單的預測它屬于在訓練實例中最多的累,模型過于簡單虫腋,忽略了訓練實例中大量有用信息骄酗。

22.機器學習中,為何要經(jīng)常對數(shù)據(jù)做歸一化悦冀?


@zhanlijun趋翻,本題解析來源:《為什么一些機器學習模型需要對數(shù)據(jù)進行歸一化》機器學習模型被互聯(lián)網(wǎng)行業(yè)廣泛應用,如排序《排序?qū)W習實踐---ranknet方法》盒蟆、推薦踏烙、反作弊、定位《基于樸素貝葉斯的定位算法》等历等。一般做機器學習應用的時候大部分時間是花費在特征處理上讨惩,其中很關(guān)鍵的一步就是對特征數(shù)據(jù)進行歸一化,為什么要歸一化呢寒屯?很多同學并未搞清楚荐捻,維基百科給出的解釋:1)歸一化后加快了梯度下降求最優(yōu)解的速度黍少;2)歸一化有可能提高精度。下面再簡單擴展解釋下這兩點处面。
1 歸一化為什么能提高梯度下降法求解最優(yōu)解的速度厂置?
斯坦福機器學習視頻做了很好的解釋:
如下圖所示,藍色的圈圈圖代表的是兩個特征的等高線魂角。其中左圖兩個特征X1和X2的區(qū)間相差非常大农渊,X1區(qū)間是[0,2000],X2區(qū)間是[1,5]或颊,其所形成的等高線非常尖砸紊。當使用梯度下降法尋求最優(yōu)解時,很有可能走“之字型”路線(垂直等高線走)囱挑,從而導致需要迭代很多次才能收斂醉顽;
而右圖對兩個原始特征進行了歸一化,其對應的等高線顯得很圓平挑,在梯度下降進行求解時能較快的收斂游添。
因此如果機器學習模型使用梯度下降法求最優(yōu)解時,歸一化往往非常有必要通熄,否則很難收斂甚至不能收斂唆涝。


2 歸一化有可能提高精度
一些分類器需要計算樣本之間的距離(如歐氏距離),例如KNN唇辨。如果一個特征值域范圍非常大廊酣,那么距離計算就主要取決于這個特征,從而與實際情況相悖(比如這時實際情況是值域范圍小的特征更重要)赏枚。
3 歸一化的類型
1)線性歸一化

這種歸一化方法比較適用在數(shù)值比較集中的情況亡驰。這種方法有個缺陷,如果max和min不穩(wěn)定饿幅,很容易使得歸一化結(jié)果不穩(wěn)定凡辱,使得后續(xù)使用效果也不穩(wěn)定。實際使用中可以用經(jīng)驗常量值來替代max和min栗恩。
2)標準差標準化
  經(jīng)過處理的數(shù)據(jù)符合標準正態(tài)分布透乾,即均值為0,標準差為1磕秤,其轉(zhuǎn)化函數(shù)為:


其中μ為所有樣本數(shù)據(jù)的均值乳乌,σ為所有樣本數(shù)據(jù)的標準差。
3)非線性歸一化
經(jīng)常用在數(shù)據(jù)分化比較大的場景亲澡,有些數(shù)值很大钦扭,有些很小。通過一些數(shù)學函數(shù)床绪,將原始值進行映射。該方法包括 log、指數(shù)癞己,正切等膀斋。需要根據(jù)數(shù)據(jù)分布的情況,決定非線性函數(shù)的曲線痹雅,比如log(V, 2)還是log(V, 10)等仰担。

23.請簡要說說一個完整機器學習項目的流程。
@寒小陽 老師绩社、@龍心塵 老師
1 抽象成數(shù)學問題
明確問題是進行機器學習的第一步摔蓝。機器學習的訓練過程通常都是一件非常耗時的事情,胡亂嘗試時間成本是非常高的愉耙。這里的抽象成數(shù)學問題贮尉,指的我們明確我們可以獲得什么樣的數(shù)據(jù),目標是一個分類還是回歸或者是聚類的問題朴沿,如果都不是的話猜谚,如果劃歸為其中的某類問題。
2 獲取數(shù)據(jù)
數(shù)據(jù)決定了機器學習結(jié)果的上限赌渣,而算法只是盡可能逼近這個上限魏铅。數(shù)據(jù)要有代表性,否則必然會過擬合坚芜。而且對于分類問題览芳,數(shù)據(jù)偏斜不能過于嚴重,不同類別的數(shù)據(jù)數(shù)量不要有數(shù)個數(shù)量級的差距鸿竖。而且還要對數(shù)據(jù)的量級有一個評估路操,多少個樣本,多少個特征千贯,可以估算出其對內(nèi)存的消耗程度屯仗,判斷訓練過程中內(nèi)存是否能夠放得下。如果放不下就得考慮改進算法或者使用一些降維的技巧了搔谴。如果數(shù)據(jù)量實在太大魁袜,那就要考慮分布式了。
3 特征預處理與特征選擇
良好的數(shù)據(jù)要能夠提取出良好的特征才能真正發(fā)揮效力敦第。特征預處理峰弹、數(shù)據(jù)清洗是很關(guān)鍵的步驟,往往能夠使得算法的效果和性能得到顯著提高芜果。歸一化鞠呈、離散化、因子化右钾、缺失值處理蚁吝、去除共線性等旱爆,數(shù)據(jù)挖掘過程中很多時間就花在它們上面。這些工作簡單可復制窘茁,收益穩(wěn)定可預期怀伦,是機器學習的基礎(chǔ)必備步驟。篩選出顯著特征山林、摒棄非顯著特征房待,需要機器學習工程師反復理解業(yè)務。這對很多結(jié)果有決定性的影響驼抹。特征選擇好了桑孩,非常簡單的算法也能得出良好、穩(wěn)定的結(jié)果框冀。這需要運用特征有效性分析的相關(guān)技術(shù)流椒,如相關(guān)系數(shù)、卡方檢驗左驾、平均互信息镣隶、條件熵、后驗概率诡右、邏輯回歸權(quán)重等方法安岂。
4 訓練模型與調(diào)優(yōu)
直到這一步才用到我們上面說的算法進行訓練。現(xiàn)在很多算法都能夠封裝成黑盒供人使用帆吻。但是真正考驗水平的是調(diào)整這些算法的(超)參數(shù)域那,使得結(jié)果變得更加優(yōu)良。這需要我們對算法的原理有深入的理解猜煮。理解越深入次员,就越能發(fā)現(xiàn)問題的癥結(jié),提出良好的調(diào)優(yōu)方案王带。
5 模型診斷
如何確定模型調(diào)優(yōu)的方向與思路呢淑蔚?這就需要對模型進行診斷的技術(shù)。過擬合愕撰、欠擬合 判斷是模型診斷中至關(guān)重要的一步刹衫。常見的方法如交叉驗證,繪制學習曲線等搞挣。過擬合的基本調(diào)優(yōu)思路是增加數(shù)據(jù)量带迟,降低模型復雜度。欠擬合的基本調(diào)優(yōu)思路是提高特征數(shù)量和質(zhì)量囱桨,增加模型復雜度仓犬。誤差分析 也是機器學習至關(guān)重要的步驟。通過觀察誤差樣本舍肠,全面分析誤差產(chǎn)生誤差的原因:是參數(shù)的問題還是算法選擇的問題搀继,是特征的問題還是數(shù)據(jù)本身的問題……診斷后的模型需要進行調(diào)優(yōu)窘面,調(diào)優(yōu)后的新模型需要重新進行診斷,這是一個反復迭代不斷逼近的過程律歼,需要不斷地嘗試民镜, 進而達到最優(yōu)狀態(tài)啡专。
6 模型融合
一般來說险毁,模型融合后都能使得效果有一定提升。而且效果很好们童。工程上畔况,主要提升算法準確度的方法是分別在模型的前端(特征清洗和預處理,不同的采樣模式)與后端(模型融合)上下功夫慧库。因為他們比較標準可復制跷跪,效果比較穩(wěn)定。而直接調(diào)參的工作不會很多齐板,畢竟大量數(shù)據(jù)訓練起來太慢了吵瞻,而且效果難以保證。
7 上線運行
這一部分內(nèi)容主要跟工程實現(xiàn)的相關(guān)性比較大甘磨。工程上是結(jié)果導向橡羞,模型在線上運行的效果直接決定模型的成敗。 不單純包括其準確程度济舆、誤差等情況卿泽,還包括其運行的速度(時間復雜度)、資源消耗程度(空間復雜度)滋觉、穩(wěn)定性是否可接受签夭。
這些工作流程主要是工程實踐上總結(jié)出的一些經(jīng)驗。并不是每個項目都包含完整的一個流程椎侠。這里的部分只是一個指導性的說明第租,只有大家自己多實踐,多積累項目經(jīng)驗我纪,才會有自己更深刻的認識慎宾。故,基于此宣羊,七月在線每一期ML算法班都特此增加特征工程璧诵、模型調(diào)優(yōu)等相關(guān)課。

24.new 和 malloc的區(qū)別
@Sommer_Xia仇冯,來源: 《new和malloc的區(qū)別》
1.)malloc與free是C++/C語言的標準庫函數(shù)之宿,new/delete是C++的運算符。它們都可用于申請動態(tài)內(nèi)存和釋放內(nèi)存苛坚。
2.) 對于非內(nèi)部數(shù)據(jù)類型的對象而言比被,光用maloc/free無法滿足動態(tài)對象的要求色难。對象在創(chuàng)建的同時要自動執(zhí)行構(gòu)造函數(shù),對象在消亡之前要自動執(zhí)行析構(gòu)函數(shù)等缀。由于malloc/free是庫函數(shù)而不是運算符枷莉,不在編譯器控制權(quán)限之內(nèi),不能夠把執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務強加于malloc/free尺迂。
3.)因此C++語言需要一個能完成動態(tài)內(nèi)存分配和初始化工作的運算符new笤妙,以一個能完成清理與釋放內(nèi)存工作的運算符delete。注意new/delete不是庫函數(shù)噪裕。
4.)C++程序經(jīng)常要調(diào)用C函數(shù)蹲盘,而C程序只能用malloc/free管理動態(tài)內(nèi)存

25.hash 沖突及解決辦法
@Sommer_Xia,來源:《hash沖突的四種辦法》
關(guān)鍵字值不同的元素可能會映象到哈希表的同一地址上就會發(fā)生哈希沖突膳音。解決辦法:
1)開放定址法:當沖突發(fā)生時召衔,使用某種探查(亦稱探測)技術(shù)在散列表中形成一個探查(測)序列。沿此序列逐個單元地查找祭陷,直到找到給定 的關(guān)鍵字苍凛,或者碰到一個開放的地址(即該地址單元為空)為止(若要插入,在探查到開放的地址兵志,則可將待插入的新結(jié)點存人該地址單元)醇蝴。查找時探查到開放的 地址則表明表中無待查的關(guān)鍵字,即查找失敗毒姨。
2) 再哈希法:同時構(gòu)造多個不同的哈希函數(shù)哑蔫。
3)鏈地址法:將所有哈希地址為i的元素構(gòu)成一個稱為同義詞鏈的單鏈表,并將單鏈表的頭指針存在哈希表的第i個單元中弧呐,因而查找闸迷、插入和刪除主要在同義詞鏈中進行。鏈地址法適用于經(jīng)常進行插入和刪除的情況俘枫。
4)建立公共溢出區(qū):將哈希表分為基本表和溢出表兩部分腥沽,凡是和基本表發(fā)生沖突的元素,一律填入溢出表鸠蚪。


26.如何解決梯度消失和梯度膨脹
(1)梯度消失:根據(jù)鏈式法則今阳,如果每一層神經(jīng)元對上一層的輸出的偏導乘上權(quán)重結(jié)果都小于1的話,那么即使這個結(jié)果是0.99茅信,在經(jīng)過足夠多層傳播之后盾舌,誤差對輸入層的偏導會趨于0≌壕ǎ可以采用ReLU激活函數(shù)有效的解決梯度消失的情況妖谴。
(2)梯度膨脹:根據(jù)鏈式法則,如果每一層神經(jīng)元對上一層的輸出的偏導乘上權(quán)重結(jié)果都大于1的話,在經(jīng)過足夠多層傳播之后膝舅,誤差對輸入層的偏導會趨于無窮大嗡载。可以通過激活函數(shù)來解決仍稀。

27.下列哪個不屬于CRF模型對于HMM和MEMM模型的優(yōu)勢( ) A. 特征靈活 B. 速度快 C. 可容納較多上下文信息 D. 全局最優(yōu)
解答:首先洼滚,CRF,HMM(隱馬模型)技潘,MEMM(最大熵隱馬模型)都常用來做序列標注的建模遥巴。
隱馬模型一個最大的缺點就是由于其輸出獨立性假設,導致其不能考慮上下文的特征崭篡,限制了特征的選擇挪哄。最大熵隱馬模型則解決了隱馬的問題吧秕,可以任意選擇特征琉闪,但由于其在每一節(jié)點都要進行歸一化,所以只能找到局部的最優(yōu)值砸彬,同時也帶來了標記偏見的問題颠毙,即凡是訓練語料中未出現(xiàn)的情況全都忽略掉。條件隨機場則很好的解決了這一問題砂碉,他并不在每一個節(jié)點進行歸一化蛀蜜,而是所有特征進行全局歸一化,因此可以求得全局的最優(yōu)值增蹭。
答案為B滴某。

28.簡單說下有監(jiān)督學習和無監(jiān)督學習的區(qū)別


有監(jiān)督學習:對具有標記的訓練樣本進行學習,以盡可能對訓練樣本集外的數(shù)據(jù)進行分類預測滋迈。(LR,SVM,BP,RF,GBDT)無監(jiān)督學習:對未標記的樣本進行訓練學習霎奢,比發(fā)現(xiàn)這些樣本中的結(jié)構(gòu)知識。(KMeans,DL)

29.了解正則化么饼灿?
參考:機器學習之正則化(Regularization)
正則化是針對過擬合而提出的幕侠,以為在求解模型最優(yōu)的是一般優(yōu)化最小的經(jīng)驗風險,現(xiàn)在在該經(jīng)驗風險上加入模型復雜度這一項(正則化項是模型參數(shù)向量的范數(shù))碍彭,并使用一個rate比率來權(quán)衡模型復雜度與以往經(jīng)驗風險的權(quán)重晤硕,如果模型復雜度越高,結(jié)構(gòu)化的經(jīng)驗風險會越大庇忌,現(xiàn)在的目標就變?yōu)榱私Y(jié)構(gòu)經(jīng)驗風險的最優(yōu)化舞箍,可以防止模型訓練過度復雜,有效的降低過擬合的風險皆疹。奧卡姆剃刀原理疏橄,能夠很好的解釋已知數(shù)據(jù)并且十分簡單才是最好的模型。

30.協(xié)方差和相關(guān)性有什么區(qū)別墙基?


相關(guān)性是協(xié)方差的標準化格式软族。協(xié)方差本身很難做比較刷喜。例如:如果我們計算工資($)和年齡(歲)的協(xié)方差,因為這兩個變量有不同的度量立砸,所以我們會得到不能做比較的不同的協(xié)方差掖疮。為了解決這個問題,我們計算相關(guān)性來得到一個介于-1和1之間的值颗祝,就可以忽略它們各自不同的度量浊闪。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市螺戳,隨后出現(xiàn)的幾起案子搁宾,更是在濱河造成了極大的恐慌,老刑警劉巖倔幼,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盖腿,死亡現(xiàn)場離奇詭異,居然都是意外死亡损同,警方通過查閱死者的電腦和手機翩腐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膏燃,“玉大人茂卦,你說我怎么就攤上這事∽榱ǎ” “怎么了等龙?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伶贰。 經(jīng)常有香客問我蛛砰,道長,這世上最難降的妖魔是什么幕袱? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任暴备,我火速辦了婚禮,結(jié)果婚禮上们豌,老公的妹妹穿的比我還像新娘涯捻。我一直安慰自己,他們只是感情好望迎,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布障癌。 她就那樣靜靜地躺著,像睡著了一般辩尊。 火紅的嫁衣襯著肌膚如雪涛浙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音轿亮,去河邊找鬼疮薇。 笑死,一個胖子當著我的面吹牛我注,可吹牛的內(nèi)容都是我干的按咒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼但骨,長吁一口氣:“原來是場噩夢啊……” “哼励七!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奔缠,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤掠抬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后校哎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體两波,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年贬蛙,在試婚紗的時候發(fā)現(xiàn)自己被綠了雨女。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡阳准,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出馏臭,到底是詐尸還是另有隱情野蝇,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布括儒,位于F島的核電站绕沈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏帮寻。R本人自食惡果不足惜乍狐,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一脚囊、第九天 我趴在偏房一處隱蔽的房頂上張望硕淑。 院中可真熱鬧,春花似錦意乓、人聲如沸烫罩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贝攒。三九已至盗誊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哈踱。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工荒适, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人开镣。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓吻贿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哑子。 傳聞我的和親對象是個殘疾皇子舅列,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容