秋招 攜程 資料分析崗 面試題整理

2021-08-20 05:42:10 字數 3420 閱讀 1019

1. spark用過嗎?那你覺得和mr這兩個計算框架中間產生的資料傾斜怎麼處理

1)資料傾斜指的是key的分布嚴重不均,如wordcount中,有80%的資料都是('aaa',1),這樣大部分資料交給乙個reduce,剩下的20%資料分散到不同的reduce處理

2)造成資料傾斜的原因:

a. group by維度小,某值數量多

b. distinct 遇見某較多的特殊值

c. join 某個表比較小,導致key集中

d. join 兩個大表,但是分桶的判斷欄位0值或空值過多,這些0值和控制都由乙個reduce處理

3)mapreduce處理資料傾斜:

a. 調優引數

ii:set hive.groupby.skewindata=true:生成查詢會有兩個mrjob,第乙個job中map的輸出結果會隨機分布到reduce中,相同group by key可能分到不同reduce中;第二個job再根據預處理的結果按照groupby key分布到reduce中

b. 將傾斜的key分成多組,如'aaa'分成'aaa1'、'aaa2'等

c. 能先進行 group 操作的時候先進行 group 操作,把 key 先進行一次 reduce,之後再進行 count 或者 distinct count 操作

d. join 操作中,使用 map join 在 map 端就先進行 join ,免得到reduce 時卡住

f. 大小表join:使用map join讓小的維度表(1000條以下的記錄條數) 先進記憶體。在map端完成reduce

g. 大表join大表:把空值的key變成乙個字串加上隨機數,把傾斜的資料分到不同的reduce上,由於null值關聯不上,處理後並不影響最終結果

h. 空值情況:count distinct時,將值為空的情況單獨處理,如果是計算count distinct,可以不用處理,直接過濾,在最後結果中加1。如果還有其他計算,需要進行group by,可以先將值為空的記錄單獨處理,再和其他計算結果進行union

i. groupby 維度過小:採用sum() group by的方式來替換count(distinct)完成計算

(參考:

2. 我們工作需要用到一點ai演算法,你挑乙個講講吧

略。3. 問了dbscan

1)屬於密度聚類方法

2)基於鄰域來描述樣本集的緊密程度,由密度可達關係匯出最大密度相連的集合

3)過程:

a. 定義距離和最小子樣本集大小minpts

b. 根據距離和minpts找到核心物件

c. 隨機選擇乙個核心物件,找到核心可達的核心物件集合,形成聚類

d. 重複c過程,直到遍歷所有核心物件

4)優點:

a. 可用於任意形狀的稠密資料

b. 對異常點不敏感(不屬於任何核心物件的,一般認為雜訊點)

c. 對初始值不敏感(除了乙個點同時屬於兩個核心物件的情況,這種情況下會採用先來後到進行點的歸類)

5)缺點:

a. 密度不均勻、聚類間距差距大,效果差

b. 相對於kmeans調k,dbscan需要調disntance和minpts,調參難度會大一些

c. 樣本集大時,收斂慢,因為要做距離計算,可以建立kd tree改進

(參考:

4. 問了核函式

一些模型中我們需要將特徵對映到高維空間再進行分割(如svm),這時候我們需要先把x轉換到高維空間z,然後在高維空間對z進行內積計算,當維度特別高時,計算量特別大。那麼我們能不能偷吃步,把對映到高維空間和內積計算放在一起計算,降低計算量?

如果低維空間中存在乙個函式k(x,x'),它正好等於高維空間中的內積計算,即k( x, x′) = ,那麼我們稱其為核函式。

1)多項式核函式:

a. 假設乙個轉換函式,它會求x內兩兩元素的組合,從而將x對映到高維空間z。在高維空間求內積,經過化簡,我們發現可以表示成低維空間x的內積計算

b. 對現有核函式進行一些微小的改動,就可以使算式更一般,也更容易 計算,並能投影到更複雜的空間中

c. 進一步,我們也可以對指數進行轉換。這時候我們就能投影到更複雜的空間中去

2)線性核函式:當多項式核函式的指數為1,就退化為線性核函式

3)高斯核函式:

a. 將高斯函式進行泰勒展開,發現它包含著無限多維的轉換

b. 更一般的高斯核函式

4)sigmoid核函式:

a. κ(x,xi)=tanh(η+θ)

b. 採用sigmoid核函式,支援向量機實現的就是一種多層神經網路

(參考:林軒田《機器學習技法》第3課「kernel核函式」;

5. 現場寫sql

略。6. 隨機森林

1)隨機森林原理:通過構造多個決策樹,做bagging以提高泛化能力

3)有放回抽樣,可以用包外樣本做檢驗

4)也可以用oob做特徵選擇,思路:

a. 如果乙個特徵有效,那麼這個特徵引入雜質會明顯影響模型效果

b. 引入雜質會影響分布,所以更好的方式是對特徵中的取值進行洗牌,然後計算前後模型的差異

c. 但是我們不想訓練兩個模型,可以利用oob進行偷懶。把oob中的資料該特徵取值洗牌,然後扔進訓練好的模型中,用輸出的結果進行誤差檢驗

7. 資料清理

1)缺失值處理

a. 刪(橫刪、豎刪、成對刪)

b. 均值、中位數、眾數填充

c. 建模填充

d. 對映到高維空間(如onehot)

2)異常值/雜訊處理

a. 刪

b. 上下擷取(winsorzion)

c. 轉為缺失值,用缺失值處理的方法處理

d. 分箱

e. pca等降維方法,去雜訊字段

f. 聚類去雜訊點

3)唯一性處理

a. 去重

b. 對於資料不一致情況,判斷資料**的權威性

4)量綱不一致

a. 標準化(最大最小、z標準化)

b. 歸一化(對文字、評分類資料)

5)格式異常

8. 給乙個實際場景,怎麼分析資料,怎麼提取資料特徵

略。

秋招 快手 資料分析崗 面試題整理

1.不用任何公開參考資料,估算今年新生兒出生數量 1 採用兩層模型 人群畫像 人群轉化 新生兒出生數 各年齡層育齡女性數量 各年齡層生育比率 2 從數字到數字 如果有前幾年新生兒出生數量資料,建立時間序列模型 需要考慮到二胎放開的突變事件 進行 3 找先兆指標,如嬰兒類用品的新增活躍使用者數量x表示...

秋招 搜狐遊戲 資料分析崗 面試題整理

1.如果現在有個情景,我們有一款遊戲收入下降了,你怎麼分析。我說完她說不到位,然後幫我補充了很多,我也問了一點問題,這部分聊了十分鐘 1 兩層模型 細分使用者 渠道 產品,看到底是 的收入下降了 2 指標拆解 收入 玩家數量 活躍佔比 付費轉化率 付費次數 客單價 進一步細分,如玩家數量 老玩家數量...

實習 資料分析崗 試題整理

1 增加資料 2 正則項 3 early stopping 4 控制模型複雜度 a.dropout 我覺得類似於subfeature b.剪枝 控制樹深 c.增大分割平面間隔 5 bagging 6 subsampe subfeature 7 特徵選擇 特徵降維 8 資料增強 加包含雜訊的資料 9 ...