天天看點

【秋招】京東_資料分析崗_面試題整理

1. 怎麼做惡意刷單檢測

分類問題用機器學習方法模組化解決,我想到的特征有:

1)商家特征:商家曆史銷量、信用、産品類别、發貨快遞公司等

2)使用者行為特征:使用者信用、下單量、轉化率、下單路徑、浏覽店鋪行為、支付賬号

3)環境特征(主要是避免機器刷單):地區、ip、手機型号等

4)異常檢測:ip位址經常變動、經常清空cookie資訊、賬号近期交易成功率上升等

5)評論文本檢測:刷單的評論文本可能套路較為一緻,計算與已标注評論文本的相似度作為特征

6)圖檔相似度檢測:同理,刷單可能重複利用圖檔進行評論

2. 你系統的學習過機器學習算法嗎?

略。

3. 選個講下原理吧 K-Means算法及改進,遇到異常值怎麼辦?評估算法的名額有哪些?

1)k-means原理

2)改進:

a. kmeans++:初始随機點選擇盡可能遠,避免陷入局部解。方法是n+1個中心點選擇時,對于離前n個點選擇到的機率更大

b. mini batch kmeans:每次隻用一個子集做重入類并找到類心(提高訓練速度)

c. ISODATA:對于難以确定k的時候,使用該方法。思路是當類下的樣本小時,剔除;類下樣本數量多時,拆分

d. kernel kmeans:kmeans用歐氏距離計算相似度,也可以使用kernel映射到高維空間再聚類

3)遇到異常值

a. 有條件的話使用密度聚類或者一些軟聚類的方式先聚類,剔除異常值。不過本來用kmeans就是為了快,這麼做有些南轅北轍了

b. 局部異常因子LOF:如果點p的密度明顯小于其鄰域點的密度,那麼點p可能是異常值(參考:https://blog.csdn.net/wangyibo0201/article/details/51705966)

c. 多元高斯分布異常點檢測

d. 使用PCA或自動編碼機進行異常點檢測:使用降維後的次元作為新的特征空間,其降維結果可以認為剔除了異常值的影響(因為過程是保留使投影後方差最大的投影方向)

e. isolation forest:基本思路是建立樹模型,一個節點所在的樹深度越低,說明将其從樣本空間劃分出去越容易,是以越可能是異常值。是一種無監督的方法,随機選擇n個sumsampe,随機選擇一個特征一個值。(參考:https://blog.csdn.net/u013709270/article/details/73436588)

f. winsorize:對于簡單的,可以對單一次元做上下截取

4)評估聚類算法的名額:

a. 外部法(基于有标注):Jaccard系數、純度

b. 内部法(無标注):内平方和WSS和外平方和BSS

c. 此外還要考慮到算法的時間空間複雜度、聚類穩定性等

4. 資料預處理過程有哪些?

1)缺失值處理:删、插

2)異常值處理

3)特征轉換:時間特征sin化表示

4)标準化:最大最小标準化、z标準化等

5)歸一化:對于文本或評分特征,不同樣本之間可能有整體上的差異,如a文本共20個詞,b文本30000個詞,b文本中各個次元上的頻次都很可能遠遠高于a文本

6)離散化:onehot、分箱等

5. 随機森林原理?有哪些随機方法?

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

2)subsample(有放回抽樣)、subfeature、低維空間投影(特征做組合,參考林軒田的《機器學習基石》)

6. PCA

1)主成分分析是一種降維的方法

2)思想是将樣本從原來的特征空間轉化到新的特征空間,并且樣本在新特征空間坐标軸上的投影方差盡可能大,這樣就能涵蓋樣本最主要的資訊

3)方法:

a. 特征歸一化

b. 求樣本特征的協方差矩陣A

c. 求A的特征值和特征向量,即AX=λX

d. 将特征值從大到小排列,選擇topK,對應的特征向量就是新的坐标軸(采用最大方差理論解釋,參考:https://blog.csdn.net/huang1024rui/article/details/46662195)

4)PCA也可以看成激活函數為線性函數的自動編碼機(參考林軒田的《機器學習基石》第13課,深度學習)

7. 還有一些圍繞着項目問的具體問題

略。

8. 參加過哪些活動?

略。

9. hive?spark?sql? nlp?

1)Hive允許使用類SQL語句在hadoop叢集上進行讀、寫、管理等操作

2)Spark是一種與hadoop相似的開源叢集計算環境,将資料集緩存在分布式記憶體中的計算平台,每輪疊代不需要讀取磁盤的IO操作,進而答複降低了單輪疊代時間

10. XGBOOST

xgb也是一種梯度提升樹,是gbdt高效實作,差異是:

1)gbdt優化時隻用到了一階導數資訊,xgb對代價函數做了二階泰勒展開。(為什麼使用二階泰勒展開?我這裡認為是使精度更高收斂速度更快,參考李宏毅的《機器學習》課程,對損失函數使用泰勒一次展開是梯度下降,而進行更多次展開能有更高的精度。但感覺還不完全正确,比如為什麼不三次四次,比如引進二次導會不會帶來計算開銷的增加,歡迎大家讨論指正。)

【秋招】京東_資料分析崗_面試題整理
【秋招】京東_資料分析崗_面試題整理
【秋招】京東_資料分析崗_面試題整理
【秋招】京東_資料分析崗_面試題整理

2)xgb加入了正則項

3)xgb運作完一次疊代後,會對葉子節點的權重乘上shrinkage(縮減)系數,削弱目前樹的影響,讓後面有更大的學習空間

4)支援列抽樣等特性

5)支援并行:決策樹中對特征值進行排序以選擇分割點是耗時操作,xgb訓練之前就先對資料進行排序,儲存為block結構,後續疊代中重複用該結構,大大減少計算量。同時各個特征增益的計算也可以開多線程進行

6)尋找最佳分割點時,實作了一種近似貪心法,同時優化了對稀疏資料、缺失值的處理,提高了算法效率

7)剪枝:GBDT遇到負損失時回停止分裂,是貪心算法。xgb會分裂到指定最大深度,然後再剪枝

11. 還問了資料庫,spark,爬蟲(履歷中有)

略。

12. 具體案例分析,關于京東商城銷售的

略。

13. Linux基本指令

1)目錄操作:ls、cd、mkdir、find、locate、whereis等

2)檔案操作:mv、cp、rm、touch、cat、more、less

3)權限操作:chmod+rwx421

4)賬号操作:su、whoami、last、who、w、id、groups等

5)檢視系統:history、top

6)關機重新開機:shutdown、reboot

7)vim操作:i、w、w!、q、q!、wq等

14. NVL函數

1)是oracle的一個函數

2)NVL( string1, replace_with),如果string1為NULL,則NVL函數傳回replace_with的值,否則傳回原來的值

15. LR

1)用于分類問題的線性回歸

2)采用sigmoid對輸出值進行01轉換

3)采用似然法求解

4)手推

5)優缺點局限性

6)改進空間

16. sql中null與‘ ’的差別

1)null表示空,用is null判斷

2)''表示空字元串,用=''判斷

17. 資料庫與資料倉庫的差別

1)簡單了解下資料倉庫是多個資料庫以一種方式組織起來

2)資料庫強調範式,盡可能減少備援

3)資料倉庫強調查詢分析的速度,優化讀取操作,主要目的是快速做大量資料的查詢

4)資料倉庫定期寫入新資料,但不覆寫原有資料,而是給資料加上時間戳标簽

5)資料庫采用行存儲,資料倉庫一般采用列存儲

6)資料倉庫的特征是面向主題、內建、相對穩定、反映曆史變化,存儲數曆史資料;資料庫是面向事務的,存儲線上交易資料

7)資料倉庫的兩個基本元素是維表和事實表,維是看待問題的角度,比如時間、部門等,事實表放着要查詢的資料

18. 手寫SQL

略。

19. SQL的資料類型

1)字元串:char、varchar、text

2)二進制串:binary、varbinary

3)布爾類型:boolean

4)數值類型:integer、smallint、bigint、decimal、numeric、float、real、double

5)時間類型:date、time、timestamp、interval

20. C的資料類型

1)基本類型:

a. 整數類型:char、unsigned char、signed char、int、unsigned int、short、unsigned short、long、unsigned long

b. 浮點類型:float、double、long double

2)void類型

3)指針類型

4)構造類型:數組、結構體struct、共用體union、枚舉類型enum

21. 分類算法性能的主要評價名額

1)查準率、查全率、F1

2)AUC

3)LOSS

4)Gain和Lift

5)WOE和IV

22. roc圖

1)以真陽(TP)為橫軸,假陽為縱軸(FP),按照樣本預測為真的機率排序,繪制曲線

2)ROC曲線下的面積為AUC的值

23. 查準率查全率

1)查準率:TP/(TP+FP)

2)查全率:TP/(TP+FN)

24. 資料缺失怎麼辦

1)删除樣本或删除字段

2)用中位數、平均值、衆數等填充

3)插補:同類均值插補、多重插補、極大似然估計

4)用其它字段構模組化型,預測該字段的值,進而填充缺失值(注意:如果該字段也是用于預測模型中作為特征,那麼用其它字段模組化填充缺失值的方式,并沒有給最終的預測模型引入新資訊)

5)onehot,将缺失值也認為一種取值

6)壓縮感覺及矩陣補全

25. 内連接配接與外連接配接的差別

1)内連接配接:左右表取比對行

2)外連接配接:分為左連接配接、右連接配接和全連接配接

26. 歐式距離

1)字段取值平方和取開根号

2)表示m維空間中兩個點的真實距離

27. 普通統計分析方法與機器學習的差別

這裡不清楚普通統計分析方法指的是什麼。

如果是簡單的統計分析名額做預測,那模型的表達能力是落後于機器學習的。

如果是指統計學方法,那麼統計學關心的假設檢驗,機器學習關心的是模組化,兩者的評估不同。

28. BOSS面:關于京東的想法,哪裡人,什麼學校,多大了,想在京東獲得什麼,你能為京東提供什麼,關于轉正的解釋,工作内容,拿到offer

略。

29. 先問了一個項目,然後問了工作意向,對工作是怎麼看待的

略。

30. 問了一點Java很基礎的東西,像set、list啥的

略。

31. 感覺一二面的面試官比較在意你會不會hive、sql

略。

32. 怎麼判斷一個賬号不安全不正常了,比如被盜号了,惡意刷單之類的

分類問題用機器學習方法模組化解決,我想到的特征有:

1)商家特征:商家曆史銷量、信用、産品類别、發貨快遞公司等

2)使用者行為特征:使用者信用、下單量、轉化率、下單路徑、浏覽店鋪行為、支付賬号

3)環境特征(主要是避免機器刷單):地區、ip、手機型号等

4)異常檢測:ip位址變動、經常清空cookie資訊、賬号近期交易成功率上升等

5)評論文本檢測:刷單的評論文本可能套路較為一緻,計算與已标注評論文本的相似度作為特征

6)圖檔相似度檢測:同理,刷單可能重複利用圖檔進行評論

33. 隻是崗位名稱一樣,我一面問的都是圍繞海量資料的推薦系統,二面就十幾分鐘,都是自己再說……感覺涼的不能再涼了

1)基于内容

2)協同過濾

3)基于矩陣分解

4)基于圖

其它包括冷啟動、評估方法等

34. 項目寫的是天池比賽,隻是大概描述了一下,特征工程和模型的選擇

1)資料預處理

2)時間特征處理(sin化等)

3)連續特征處理(分箱等)

4)類别特征處理(onehot等)

5)交叉特征

6)特征hash化

7)gbdt構造特征

8)tfidf等對文本(或類似文本)的特征處理

9)統計特征

10)embedding方法作用于樣本

11)聚類、SVD、PCA等

12)NN抽取特征

13)自動編碼機抽取特征

35. GBDT原理介紹下

1)首先介紹Adaboost Tree,是一種boosting的樹內建方法。基本思路是依次訓練多棵樹,每棵樹訓練時對分錯的樣本進行權重。樹模型中對樣本的權重實際是對樣本采樣幾率的權重,在進行有放回抽樣時,分錯的樣本更有可能被抽到

2)GBDT是Adaboost Tree的改進,每棵樹都是CART(分類回歸樹),樹在葉節點輸出的是一個數值,分類誤差就是真實值減去葉節點的輸出值,得到殘差。GBDT要做的就是使用梯度下降的方法減少分類誤內插補點

在GBDT的疊代中,假設我們前一輪疊代得到的強學習器是ft−1(x), 損失函數是L(y,ft−1(x)), 我們本輪疊代的目标是找到一個CART回歸樹模型的弱學習器ht(x),讓本輪的損失損失L(y,ft(x)=L(y,ft−1(x)+ht(x))最小。也就是說,本輪疊代找到決策樹,要讓樣本的損失盡量變得更小。

GBDT的思想可以用一個通俗的例子解釋,假如有個人30歲,我們首先用20歲去拟合,發現損失有10歲,這時我們用6歲去拟合剩下的損失,發現差距還有4歲,第三輪我們用3歲拟合剩下的差距,差距就隻有一歲了。如果我們的疊代輪數還沒有完,可以繼續疊代下面,每一輪疊代,拟合的歲數誤差都會減小。

(參考:https://www.cnblogs.com/pinard/p/6140514.html)

3)得到多棵樹後,根據每顆樹的分類誤差進行權重投票

36. XGBoost原理介紹下

見前文。

37. 用滑動視窗是怎樣構造特征的

文本和圖像資料中,設定視窗大小與滑動步長,以視窗為片段抽取特征。

38. 簡單的介紹随機森林,以及一些細節

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

2)随機方法包括:subsample(有放回抽樣)、subfeature、低維空間投影(特征做組合,參考林軒田的《機器學習基石》)

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

4)也可以用OOB做特征選擇,思路:

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

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

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

39. 一個網站銷售額變低,你從哪幾個方面去考量?

1)首先要定位到現象真正發生的位置,到底是誰的銷售額變低了?這裡劃分的次元有:

a. 使用者(畫像、來源地區、新老、管道等)

b. 産品或欄目

c. 通路時段

2)定位到發生未知後,進行問題拆解,關注目标群體中哪個名額下降導緻網站銷售額下降:

a. 銷售額=入站流量*下單率*客單價

b. 入站流量 = Σ各來源流量*轉化率

c. 下單率 = 頁面通路量*轉化率

d. 客單價 = 商品數量*商品價格

3)确定問題源頭後,對問題原因進行分析,如采用内外部架構:

a. 内部:網站改版、産品更新、廣告投放

b. 外部:使用者偏好變化、媒體新聞、經濟壞境、競品行為等

40. 還有使用者流失的分析,新使用者流失和老使用者流失有什麼不同?

1)使用者流失分析:

a. 兩層模型:細分使用者、産品、管道,看到底是哪裡使用者流失了。注意由于是使用者流失問題,是以這裡細分使用者時可以細分使用者處在生命周期的哪個階段。

b. 名額拆解:使用者流失數量 = 該群體使用者數量*流失率。拆解,看是因為到了這個階段的使用者數量多了(比如說大部分使用者到了衰退期),還是這個使用者群體的流失率比較高

c. 内外部分析:

a. 内部:新手上手難度大、收費不合理、産品服務出現重大問題、活動品質低、缺少留存手段、使用者參與度低等

b. 外部:市場、競争對手、社會環境、節假日等

2)新使用者流失和老使用者流失有什麼不同:

a. 新使用者流失:原因可能有非目标使用者(剛性流失)、産品不滿足需求(自然流失)、産品難以上手(受挫流失)和競争産品影響(市場流失)。

新使用者要考慮如何在較少的資料支撐下做流失使用者識别,提前防止使用者流失,并如何對有效的新使用者進行挽回。

b. 老使用者流失:原因可能有到達使用者生命周期衰退期(自然流失)、過度拉升arpu導緻低端使用者驅逐(剛性流失)、社交蒸發難以滿足前期使用者需求(受挫流失)和競争産品影響(市場流失)。

老使用者有較多的資料,更容易進行流失使用者識别,做好防止使用者流失更重要。當使用者流失後,要考慮使用者生命周期剩餘價值,是否需要進行挽回。

(參考@王玮 的回答:https://www.zhihu.com/question/26225801)

【秋招】京東_資料分析崗_面試題整理

41. 京東商城要打5-6線管道,PPT上放什麼怎麼放?對接人是CXO

(我剛準備開口講面試官讓我先思考一下)

1)根據到底是CXO再決定

2)重點是了解CXO在這個打管道行為中的角色,CXO關心的業績名額是什麼,然後針對性地展示 為了達成這個業績名額 所相關的資料

42. GMV升了20%怎麼分析

(我噼裡啪啦分析了一通面試官笑嘻嘻地告訴我是資料錯了,因為面試較緊張沒有意識到這個問題,現在想想真是個大坑啊)

1)參考該面試者經驗,應該先估算一下數字有沒有問題

2)同樣的套路:

a. 兩層模型:進行使用者群體、産品、管道細分,發現到底是誰的GMV提升了

b. 名額拆解:将GMV拆解成乘法模型,如GMV=廣告投放數量*廣告點選率*産品浏覽量*放入購物車率*交易成功率*客單價,檢查哪一步有顯著變化導緻了GMV上升

c. 内外部分析:

a. 内部:網站、産品、廣告投放、活動等

b. 外部:套PEST等架構也行,或者直接分析也行,注意MEMC即可

這一題要注意,GMV流水包括取消的訂單金額和退貨/拒收的訂單金額,還有一種原因是商家刷單然後退貨,雖然GMV上去了,但是實際成交量并沒有那麼多。

43. 怎麼向小孩子解釋正态分布

(随口追問了一句小孩子的智力水準,面試官說七八歲,能數數)

1)拿出小朋友班級的成績表,每隔2分統計一下人數(因為國小一年級大家成績很接近),畫出鐘形。然後說這就是正态分布,大多數的人都集中在中間,隻有少數特别好和不夠好

2)拿出隔壁班的成績表,讓小朋友自己畫畫看,發現也是這樣的現象

3)然後拿出班級的身高表,發現也是這個樣子的

4)大部分人之間是沒有太大差别的,隻有少數人特别好和不夠好,這是生活裡普遍看到的現象,這就是正态分布

44. 有一份分析報告,周一已定好架構,周五給老闆,因為種種原因沒能按時完成,怎麼辦?

繼續閱讀