2019網易互娛資料探勘實習生筆試部分記錄
今晚做完了網易互娛資料探勘實習生的筆試題,雖然大部分的題目都不太記得了。但是還是有一些印象比較深的坑需要填一下。比起騰訊和字條跳動難度適中,不算很大,位元組的筆試掛了。其實這次感覺自己做的也不是挺好哈哈哈。
1、題型
筆試分為三部分:20道單選題 + 10道不定項選擇 + 2道程式設計題
2、題目
選擇題
1. one-vs-rest
題目是讓選擇對用one-vs-rest思想進行n分類,需要幾個分類器。
一開始還不知道原來one-vs-rest就是one-vs-all,但是後來排除了就剩下n個分類器這個答案了。
one-vs-all(one-vs-rest):利用n個二分類器完成n分類的任務。
2.sigmoid、TaNh、ReLU
題目是選擇哪個函式有可能是輸出為-0.01的神經網路的激勵函式。
其實題目很簡單利用函式的值域就能解出來,但是利用這個機會去理一理這三個函式的區別吧。
神經網路中的啟用函式3、bootstrap原理
題目是選擇boostrap的原理。主要是要學會區別與其他整合學習演算法的原理。
bootstrap: 整合學習中的一個演算法,是一種估計統計量的重取樣方法,從大小為n的原始訓練資料集D中隨機選擇n個樣本點組成一個新的訓練集,這個選擇過程獨立重複B次,然後用這B個數據集對模型統計量進行估計(如均值、方差等)。由於原始資料集的大小就是n,所以這B個新的訓練集中不可避免的會存在重複的樣本。
4、正負樣本不均衡的解決辦法
題目是用取樣方法去緩解正負樣本不均衡的解決辦法。
取樣分為上取樣(Oversampling) 和下采樣(Undersampling) 。
上取樣是把小眾類複製多份;下采樣是從大眾類中剔除一些樣本,或者說只從大眾類中選取部分樣本。
上取樣會把小眾樣本複製多份,一個點會在高維空間中反覆出現,這會導致一個問題,那就是運氣好就能分對很多點,否則分錯很多點。為了解決這一問題,可以在每次生成新資料點時加入輕微的隨機擾動,經驗表明這種做法非常有效。
因為下采樣會丟失資訊,如何減少資訊的損失呢?
第一種方法叫做EasyEnsemble,利用模型融合的方法(Ensemble):多次下采樣(放回取樣,這樣產生的訓練集才相互獨立)產生多個不同的訓練集,進而訓練多個不同的分類器,通過組合多個分類器的結果得到最終的結果。
第二種方法叫做BalanceCascade,利用增量訓練的思想(Boosting):先通過一次下采樣產生訓練集,訓練一個分類器,對於那些分類正確的大眾樣本不放回,然後對這個更小的大眾樣本下采樣產生訓練集,訓練第二個分類器,以此類推,最終組合所有分類器的結果得到最終結果。
第三種方法是利用KNN試圖挑選那些最具代表性的大眾樣本,叫做NearMiss。
5、 至於剩下的題目也不太記得了,主要是一些關於p值還有零假設檢驗的合理性。看來還是需要補一補統計學的知識。
程式設計題
資料探勘考的大題是程式設計題,同學資料分析考的是sql題。還好看了點往年的題型最近練習的側重點是程式設計,雖然說sql語句以後也會考到,找個時間猛補吧。
1、排序題
題目描述不大記得了,主要是:給出一組數字,讓你從這組數中找出最長的遞增數列長度。
比如:
輸入:
10, 9, 2, 5, 3, 6, 7, 4, 9, 8, 101, 18
輸出:
6
提示:
1、該遞增數列是 2, 3, 6, 7, 9, 101
2、該遞增數列在原數列中不一定是連續的。
我的第一時間想法就是先去重排序(去重是因為相同的數字不算遞增,所以重複的數字不影響),然後就得到了已經排序號的數列,但是這些數列是在原數列有排序的,所以只要判斷去重排序中的元素在原數列中的索引是否遞增就能找出答案。但是在實際通過樣例只有83.3%,搞不懂是不是漏了一些條件,明天去班裡問問ACM大神吧。
data = [10, 9, 2, 5, 3, 6, 7, 4, 9, 8, 101, 18] sortData = sorted(list(set(data))) count = 0 for i in range(1, len(sortData)): if data.index(sortData[i]) > data.index(sortData[i-1]): count += 1 print(count)
第二題稍微忘了題目了,等拿到真題再完整的更新一次吧。
把每一次筆試都當作查漏補缺,加油。