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對代價函數做了二階泰勒展開。(為什麼使用二階泰勒展開?我這裡認為是使精度更高收斂速度更快,參考李宏毅的《機器學習》課程,對損失函數使用泰勒一次展開是梯度下降,而進行更多次展開能有更高的精度。但感覺還不完全正确,比如為什麼不三次四次,比如引進二次導會不會帶來計算開銷的增加,歡迎大家讨論指正。)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyN3kzMwMzMxEzMyUDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
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. 有一份分析報告,周一已定好架構,周五給老闆,因為種種原因沒能按時完成,怎麼辦?