1. 程式人生 > 其它 >機器學習演算法工程師 知能科技 筆試面經

機器學習演算法工程師 知能科技 筆試面經

首先是筆試,通過後才能面試。

筆試題目需要在1.5小時內做完,一共6道題目。兩道簡答題,一道計算題(機器學習的),一道numpy程式設計題,一道機器學習調參題,最後一道演算法leetcode hard題,只需要寫出思路,不需要code。

題目如下:

1.(簡答題):防止overfit的方法,說三個,用英語

dropout

data augmentation(for images data(such as rotating,cut the images))

L1/L2 regularization

2.(簡答題):relu的作用

步驟:relu可以防止過擬合,讓一些神經元的輸出為0,同時增加了神經網路的非線性關係

3. (計算題:二選一):

我選的第一個題目做

題目一:樸素貝葉斯分類器,給出了條件概率,求分類的結果(分類的結果就是求出y等於多少)

解題步驟:直接寫出貝葉斯公式,帶入概率值,最後發現帶入的概率值是一個關於y的多項式方程,對其求導=0,得到最大似然估計的概率最大值時y的取值

本題得解

題目二:手算反向傳播

4. numpy還原矩陣

將原始m*n的矩陣交換行的順序,為matrix1,然後交換原始矩陣的列的順序,為matrix2.

通過matrix1和matrix2得到原始矩陣。拿到的是numpy陣列,也需要返回numpy陣列

這題我numpy當時忘記了,只寫了一半

5.機器學習調參題:

給了train data set,train lebel,和test data set,讓分類器的模型使得test data set的prediction acc達到90%以上。一共有5個數據集的prediction acc達到90%,就可以拿到滿分。

題目要求只能使用tensorflow,pytorch和sklearn。我尋思這個給的是結構化資料,深度神經網路不太適合處理這樣的資料,因此肯定選GBDT,GBDT在sklearn當中也是最強的演算法之一了,而且也不能用xgboost,catboost,gbdt或者svm就成了最優的選擇。

我首先用knn試了試grid search,但是考試平臺不能用grid search這個包,因為看不到grid search輸出的結果。於是我就改用我用的sklearn當中GBDT手動除錯的引數。只能手動調參,

最後我的最高acc為92%,4個上了90,有一個test case沒上90% acc,為89%。

6.演算法題:

至少為k的連續子序列,leetcode hard難度,類似於

leetcode862. 和至少為 K 的最短子陣列

但是稍有改動,我稍微想了下就想出來了,用快排和雜湊表輕鬆得解。

總結:最後沒有通過筆試,沒有拿到面試的資格,6個題目,我自認為還做得不錯,除了第四題都做出來了,依然沒有通過筆試,挺奇怪的,一個小start up的門檻居然這麼高?這都不給面試機會?