1. 程式人生 > >【秋招】京東_資料分析崗_面試題整理

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

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就是為了快,這麼做有些南轅北轍了

        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

    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歲擬合剩下的差距,差距就只有一歲了。如果我們的迭代輪數還沒有完,可以繼續迭代下面,每一輪迭代,擬合的歲數誤差都會減小。

    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導致低端使用者驅逐(剛性流失)、社交蒸發難以滿足前期使用者需求(受挫流失)和競爭產品影響(市場流失)。

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

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. 有一份分析報告,週一已定好框架,週五給老闆,因為種種原因沒能按時完成,怎麼辦?

略。

--------------------- 本文來自 稻蛙 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/u013382288/article/details/80417681?utm_source=copy