一年一度的秋招已經悄悄來臨,徵戰在求職路上的你,準備好了嗎?
工欲善其事,必先利其器。
這裡有一份NLP面試大全,全中文教學,囊括機器學習及NLP算法面試中常考的知識點,還有算法實戰代碼,實乃算法工程師求職路上,必備良品。
宜入門,亦宜複習。還登上了GitHub趨勢榜。
學習目錄這份學習資料分為機器學習、深度學習和NLP三個部分。
機器學習有16節:
深度學習有8節:
NLP有8節:
都是由淺入深,乾貨十足。
事不宜遲,一起來看看具體該如何食用這份學習大餐吧。
以機器學習的第一節線性回歸為例。
在每一節的一開始都有該節的內容目錄,詳盡列舉了這一節中都有哪些知識點,新手可以按部就班地學習,而倘若你只是想在面試開始前再鞏固一下知識點,就可以哪裡不熟點哪裡了。
基礎到什麼是線性、非線性:
進一步到損失函數如何計算,過擬合、欠擬合如何解決:
再到應用場景:
沒有多餘的廢話,儘是知識要點。拿著這樣一份重點筆記有針對性地學習、複習,豈不爽哉?
光看理論記不住?放心,每一節的文末都有配套的課後習題,邊學邊練,事半功倍。
課後習題不僅包括題目、數據和代碼實現,項目作者還結合自身的經驗,把整個解題的思路完整呈現了出來,可以參考學習。
比如機器學習入門中的經典題房價預測。
題目是:
從給定的房屋基本信息以及房屋銷售信息等,建立一個回歸模型預測房屋的銷售價格。
測試數據主要包括3000條記錄,13個欄位,跟訓練數據不同的是測試數據並不包括房屋銷售價格,學員需要通過由訓練數據所建立的模型以及所給的測試數據,得出測試數據相應的房屋銷售價格預測。
腦子一團漿糊不知道從何著手?
可以參考一下作者的思路:
1、選擇合適的模型,比如這裡,選擇多元線性回歸模型。
2、對缺失的值進行補齊操作,可以使用均值的方式補齊數據,使得準確度更高。
3、數據的取值一般跟屬性有關,為了提高預測的準確度,需統一數據維度進行計算,方法有特徵縮放和歸一法等。
housing = pd.read_csv('kc_train.csv')
target=pd.read_csv('kc_train2.csv')
t=pd.read_csv('kc_test.csv')
housing.info()
from sklearn.preprocessing import MinMaxScaler
minmax_scaler=MinMaxScaler()
minmax_scaler.fit(housing)
scaler_housing=minmax_scaler.transform(housing)
scaler_housing=pd.DataFrame(scaler_housing,columns=housing.columns)
4、調用模型庫進行訓練。
from sklearn.linear_model import LinearRegression
LR_reg=LinearRegression()
LR_reg.fit(scaler_housing,target)
from sklearn.metrics import mean_squared_error
preds=LR_reg.predict(scaler_housing)
mse=mean_squared_error(preds,target)
plot.figure(figsize=(10,7))
num=100
x=np.arange(1,num+1)
plot.plot(x,target[:num],label='target')
plot.plot(x,preds[:num],label='preds')
plot.legend(loc='upper right')
plot.show()
5、使用測試數據進行目標函數預測輸出,觀察結果是否符合預期。或者通過畫出對比函數進行結果線條對比。
當然,最後都會附上參考答案。
NLP部分也是一樣的節奏,比如全局向量詞嵌入(GloVe)。
先說明概念:
GloVe的全稱叫Global Vectors for Word Representation,它是一個基於全局詞頻統計(count-based & overall statistics)的詞表徵(word representation)工具,它可以把一個單詞表達成一個由實數組成的向量,這些向量捕捉到了單詞之間一些語義特性,比如相似性(similarity)、類比性(analogy)等。我們通過對向量的運算,比如歐幾裡得距離或者cosine相似度,可以計算出兩個單詞之間的語義相似性。
再詳述實現步驟:
1、構建共現矩陣。
2、詞向量和共現矩陣的近似關係。
3、構造損失函數。
4、訓練GloVe模型。
還分析了一番GloVe與LSA(Latent Semantic Analysis,潛在語義分析)、Word2Vec(詞嵌入)的比較。
LSA(Latent Semantic Analysis)是一種比較早的count-based的詞向量表徵工具,它也是基於co-occurance matrix的,只不過採用了基於奇異值分解(SVD)的矩陣分解技術對大矩陣進行降維,而我們知道SVD的複雜度是很高的,所以它的計算代價比較大。還有一點是它對所有單詞的統計權重都是一致的。而這些缺點在GloVe中被一一克服了。
而word2vec最大的缺點則是沒有充分利用所有的語料,所以GloVe其實是把兩者的優點結合了起來。從這篇論文給出的實驗結果來看,GloVe的性能是遠超LSA和word2vec的,但網上也有人說GloVe和word2vec實際表現其實差不多。
最後,還是附上代碼實現。
One More Thing面向面試,重點明確,這份資源實在火。連外國友人都來求英文版了。
雖然有部分章節還在施工中,還是很值得Mark一下啊~
傳送門:
https://github.com/NLP-LOVE/ML-NLP
作者系網易新聞·網易號「各有態度」籤約作者
— 完 —
2019中國人工智慧年度評選啟幕,領航企業、商業突破人物、最具創新力產品3大獎項,歡迎優秀的AI公司報名參與!