卷了兩年,終上岸滴滴機器學(xué)習(xí)算法崗!
↓推薦關(guān)注↓
大家好,我是城哥。
今天分享一位星球成員的算法崗上岸之旅,他沒有985的背景,但很喜歡算法崗,最終成功拿下滴滴機器學(xué)習(xí)算法崗。
我把面試題進行了梳理,分享給大家,希望對后續(xù)找工作的朋友有所幫助。喜歡記得點贊、收藏、關(guān)注。更多技術(shù)交流&面經(jīng)學(xué)習(xí),可以文末加入我們交流群。
問題1:樣本不平衡問題怎么處理的,有什么方法?
-
重采樣方法:通過欠采樣(隨機刪除多數(shù)類樣本)或過采樣(復(fù)制少數(shù)類樣本或生成合成樣本)來平衡樣本分布。常見的方法包括隨機欠采樣、SMOTE(Synthetic Minority Over-sampling Technique)等。
-
類別權(quán)重調(diào)整:通過調(diào)整分類算法中不同類別的權(quán)重,使得分類器更加關(guān)注少數(shù)類樣本。一些分類算法(如邏輯回歸、支持向量機)提供了設(shè)置類別權(quán)重的參數(shù)。
-
集成方法:使用集成學(xué)習(xí)算法,如隨機森林或梯度提升樹(例如XGBoost和LightGBM),能夠處理樣本不平衡問題。這是因為集成算法可以從多個子模型中綜合考慮不同類別的情況。
問題2:快速排序時間復(fù)雜度?穩(wěn)定性怎么樣?為什么是不穩(wěn)定的
快速排序(QuickSort)的平均時間復(fù)雜度為O(n log n),最壞情況下的時間復(fù)雜度為O(n^2)??焖倥判虻姆€(wěn)定性取決于具體的實現(xiàn)方式。通常情況下,快速排序是不穩(wěn)定的,因為在分區(qū)過程中,元素的相對順序可能會改變。
快速排序的不穩(wěn)定性是由于分區(qū)過程中的元素交換操作引起的。在分區(qū)過程中,我們選擇一個基準(zhǔn)元素(通常是第一個或最后一個元素),將小于基準(zhǔn)的元素放在基準(zhǔn)的左邊,大于基準(zhǔn)的元素放在基準(zhǔn)的右邊。在交換元素的過程中,相等元素的相對順序可能發(fā)生改變,從而導(dǎo)致排序結(jié)果的不穩(wěn)定性。
問題3:各種評估指標(biāo)
-
準(zhǔn)確率(Accuracy):分類正確的樣本數(shù)與總樣本數(shù)之比。
-
精確率(Precision):在被分類為正例的樣本中,真正例的比例。
-
召回率(Recall):在所有正例中,被正確分類為正例的比例。
-
F1分?jǐn)?shù)(F1 Score):精確率和召回率的調(diào)和均值,綜合考慮了兩者。
-
ROC曲線(Receiver Operating Characteristic curve)和AUC(Area Under the Curve):繪制真正例率(TPR)和假正例率(FPR)之間的關(guān)系曲線,并計算曲線下面積。
-
混淆矩陣(Confusion Matrix):展示分類結(jié)果的四個統(tǒng)計數(shù)字:真正例(True Positive, TP)、假正例(False Positive, FP)、真反例(True Negative, TN)和假反例(False Negative, FN)。
問題4:xgboost算法介紹?
XGBoost是一種基于梯度提升樹(Gradient Boosting Tree)算法的集成學(xué)習(xí)模型,它在梯度提升樹的基礎(chǔ)上進行了優(yōu)化和改進。
XGBoost的主要特點和優(yōu)勢包括:
-
正則化:XGBoost引入了正則化項來控制模型的復(fù)雜度,防止過擬合。它通過控制葉子節(jié)點的權(quán)重以及樹的復(fù)雜度來實現(xiàn)正則化,避免單棵樹過于復(fù)雜。
-
自定義損失函數(shù):XGBoost允許用戶自定義損失函數(shù),從而能夠靈活地適應(yīng)不同的任務(wù)需求。
-
特征選擇:XGBoost通過計算特征的重要性得分,可以幫助識別和選擇最具預(yù)測能力的特征。
-
高效并行:XGBoost在訓(xùn)練過程中支持并行計算,可以利用多線程和分布式計算加速模型的訓(xùn)練。
-
缺失值處理:XGBoost能夠自動學(xué)習(xí)如何處理缺失值,無需對缺失值進行特殊處理。
-
特征交叉:XGBoost支持特征交叉,可以通過組合特征創(chuàng)建新的特征,提升模型的表達能力。
問題5:評分卡建模全流程?
-
數(shù)據(jù)準(zhǔn)備:收集并清洗需要建模的數(shù)據(jù),包括缺失值處理、異常值處理、變量轉(zhuǎn)換等。
-
變量選擇:通過特征分析、相關(guān)性分析、變量篩選方法(如IV值、WOE值)等,選擇最具預(yù)測能力的變量作為建模輸入。
-
數(shù)據(jù)切分:將數(shù)據(jù)集切分為訓(xùn)練集和驗證集(測試集),用于模型訓(xùn)練和驗證。
-
建立評分卡模型:根據(jù)業(yè)務(wù)需求選擇適當(dāng)?shù)姆诸愃惴?,如邏輯回歸、決策樹等,建立評分卡模型。在建模過程中,需要進行特征工程、變量轉(zhuǎn)換、變量融合等步驟。
-
模型評估和驗證:使用驗證集對模型進行評估,包括計算評分卡的各項指標(biāo),如準(zhǔn)確率、精確率、召回率、F1分?jǐn)?shù)等。根據(jù)評估結(jié)果對模型進行調(diào)優(yōu)和驗證。
問題6:是否熟悉 transformer 的架構(gòu)
Transformer 本身是一個典型的encoder-decoder模型,Encoder端和Decoder端均有6個Block,Encoder端的Block包括兩個模塊,多頭self-attention模塊以及一個前饋神經(jīng)網(wǎng)絡(luò)模塊;Decoder端的Block包括三個模塊,Masked多頭self-attention模塊,多頭Encoder-Decoder attention交互模塊,以及一個前饋神經(jīng)網(wǎng)絡(luò)模塊;需要注意:Encoder端和Decoder端中的每個模塊都有殘差層和Layer Normalization層。
問題7:transformer 輸出層的 softmax 有什么用
Transformer輸出層的softmax用于將模型的輸出轉(zhuǎn)換為概率分布,以便進行分類任務(wù)。它將模型的最后一層的隱藏狀態(tài)映射到一個多類別分類任務(wù)上的概率分布,使得模型可以計算每個類別的概率,并選擇概率最高的類別作為預(yù)測結(jié)果。
問題8:一個數(shù)組返回所有和為k的組合
給定一個數(shù)組,返回所有和為k的組合可以通過回溯法或動態(tài)規(guī)劃來實現(xiàn)。以下是一個示例的偽代碼,演示如何使用回溯法來找到和為k的組合:
def find_combinations(nums, k):
def backtrack(start, target, path):
if target == 0:
result.append(path)
return
for i in range(start, len(nums)):
if nums[i] <= target:
backtrack(i, target - nums[i], path + [nums[i]])
result = []
backtrack(0, k, [])
return result
- EOF -
作者簡介
城哥,公眾號9年博主,一線互聯(lián)網(wǎng)工作10年、公司校招和社招技術(shù)面試官,主導(dǎo)多個公司級實戰(zhàn)項目(Python、數(shù)據(jù)分析挖掘、算法、AI平臺、大模型等)。
關(guān)注我,陪你一起成長,遇見更好的自己。
星球服務(wù)
會不定期發(fā)放知識星球優(yōu)惠券,加入星球前可以添加城哥微信:dkl88191,咨詢優(yōu)惠券問題。
加入知識星球后,可以享受7大福利與服務(wù):免費獲取海量技術(shù)資料、向我 1 對 1 技術(shù)咨詢、求職指導(dǎo),簡歷優(yōu)化、歷史文章答疑(源碼+數(shù)據(jù))、綜合&專業(yè)技術(shù)交流社群、大模型技術(shù)分享、定制專屬學(xué)習(xí)路線,幫你快速成長、告別迷茫。
原創(chuàng)不易,技術(shù)學(xué)習(xí)資料如下,星球成員可免費獲取,非星球成員,添加城哥微信:dkl88191,請城哥喝杯星巴克。
