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 ...