Kaggle Top1% 是如何煉成的!

我是小白,但是對數(shù)據(jù)科學(xué)充滿求知欲。
我想要?dú)v練自己的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)技能,成為一名真正的數(shù)據(jù)科(lao)學(xué)(si)家(ji)。
我想贏取獎金,成為人生贏家。

Feature 特征變量,也叫自變量,是樣本可以觀測到的特征,通常是模型的輸入。
Label 標(biāo)簽,也叫目標(biāo)變量,需要預(yù)測的變量,通常是模型的標(biāo)簽或者輸出。
Train Data 訓(xùn)練數(shù)據(jù),有標(biāo)簽的數(shù)據(jù),由舉辦方提供。
Test Data 測試數(shù)據(jù),標(biāo)簽未知,是比賽用來評估得分的數(shù)據(jù),由舉辦方提供。
Train Set 訓(xùn)練集,從Train Data中分割得到的,用于訓(xùn)練模型(常用于交叉驗(yàn)證)。
Valid Set 驗(yàn)證集,從Train Data中分割得到的,用于驗(yàn)證模型(常用于交叉驗(yàn)證)。
回歸問題
分類問題(二分類、多分類、多標(biāo)簽) 多分類只需從多個類別中預(yù)測一個類別,而多標(biāo)簽則需要預(yù)測出多個類別。
數(shù)據(jù)應(yīng)該怎么清洗和處理才是合理的?
根據(jù)數(shù)據(jù)的類型可以挖掘怎樣的特征?
數(shù)據(jù)中的哪些特征會對標(biāo)簽的預(yù)測有幫助?




對于數(shù)值型變量(Numerical Variable),需要處理離群點(diǎn),缺失值,異常值等情況。
對于類別型變量(Categorical Variable),可以轉(zhuǎn)化為one-hot編碼。
文本數(shù)據(jù)是較難處理的數(shù)據(jù)類型,文本中會有垃圾字符,錯別字(詞),數(shù)學(xué)公式,不統(tǒng)一單位和日期格式等。我們還需要處理標(biāo)點(diǎn)符號,分詞,去停用詞,對于英文文本可能還要詞性還原(lemmatize),抽取詞干(stem)等等。
對于Numerical Variable,可以通過線性組合、多項(xiàng)式組合來發(fā)現(xiàn)新的Feature。
對于文本數(shù)據(jù),有一些常規(guī)的Feature。比如,文本長度,Embeddings,TF-IDF,LDA,LSI等,你甚至可以用深度學(xué)習(xí)提取文本特征(隱藏層)。
如果你想對數(shù)據(jù)有更深入的了解,可以通過思考數(shù)據(jù)集的構(gòu)造過程來發(fā)現(xiàn)一些magic feature,這些特征有可能會大大提升效果。在Quora這次比賽中,就有人公布了一些magic feature。
通過錯誤分析也可以發(fā)現(xiàn)新的特征(見1.5.2小節(jié))。

Feature和Label的相關(guān)度可以看作是該Feature的重要度,越接近1或-1就越好。
Feature和Feature之間的相關(guān)度要低,如果兩個Feature的相關(guān)度很高,就有可能存在冗余。
KNN
SVM
Linear Model(帶懲罰項(xiàng))
ExtraTree
RandomForest
Gradient Boost Tree
Neural Network
Question1: Which is the best digital marketing institution in banglore?
Question2: Which is the best digital marketing institute in Pune?
根據(jù)經(jīng)驗(yàn),選出對模型效果影響較大的超參。
按照經(jīng)驗(yàn)設(shè)置超參的搜索空間,比如學(xué)習(xí)率的搜索空間為[0.001,0.1]。
選擇搜索算法,比如Random Search、Grid Search和一些啟發(fā)式搜索的方法。
驗(yàn)證模型的泛化能力(詳見下一小節(jié))。
簡單分割
交叉驗(yàn)證



Stage1: A和B各自寫出了答案。
Stage2: C和D偷看了A和B的答案,C認(rèn)為A和B一樣聰明,D認(rèn)為A比B聰明一點(diǎn)。他們各自結(jié)合了A和B的答案后,給出了自己的答案。
Stage3: E偷看了C和D的答案,E認(rèn)為D比C聰明,隨后E也給出自己的答案作為最終答案。

Text Mining Feature,比如句子長度;兩個句子的文本相似度,如N-gram的編輯距離,Jaccard距離等;兩個句子共同的名詞,動詞,疑問詞等。
Embedding Feature,預(yù)訓(xùn)練好的詞向量相加求出句子向量,然后求兩個句子向量的距離,比如余弦相似度、歐式距離等等。
Vector Space Feature,用TF-IDF矩陣來表示句子,求相似度。
Magic Feature,是Forum上一些選手通過思考數(shù)據(jù)集構(gòu)造過程而發(fā)現(xiàn)的Feature,這種Feature往往與Label有強(qiáng)相關(guān)性,可以大大提高預(yù)測效果。

Stage1: 將兩個問句與Magic Feature輸入Deep Learning中,將其輸出作為下一層的特征(這里的Deep Learning相當(dāng)于特征抽取器)。我們一共訓(xùn)練了幾十個Deep Learning Model。
Stage2: 將Deep Learning特征與手工抽取的幾百個傳統(tǒng)特征拼在一起,作為輸入。在這一層,我們訓(xùn)練各種模型,有成百上千個。
Stage3: 上一層的輸出進(jìn)行Ensemble Selection。
對于一些數(shù)據(jù)的Pattern,在Train Data中出現(xiàn)的頻數(shù)不足以讓深度學(xué)習(xí)學(xué)到對應(yīng)的特征,所以我們需要通過手工提取這些特征。
由于Deep Learning對樣本做了獨(dú)立同分布假設(shè)(iid),一般只能學(xué)習(xí)到每個樣本的特征,而學(xué)習(xí)到數(shù)據(jù)的全局特征,比如TF-IDF這一類需要統(tǒng)計(jì)全局詞頻才能獲取的特征,因此也需要手工提取這些特征。
Embedding Feature
Text Mining Feature
Structural Feature(他們自己挖掘的Magic Feature)
Stage1: 使用了Deep Learning,XGBoost,LightGBM,ExtraTree,Random Forest,KNN等300個模型。
Stage2: 用了手工特征和第一層的預(yù)測和深度學(xué)習(xí)模型的隱藏層,并且訓(xùn)練了150個模型。
Stage3: 使用了分別是帶有L1和L2的兩種線性模型。
Stage4: 將第三層的結(jié)果加權(quán)平均。
Numpy | 必用的科學(xué)計(jì)算基礎(chǔ)包,底層由C實(shí)現(xiàn),計(jì)算速度快。
Pandas | 提供了高性能、易用的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)分析工具。
NLTK | 自然語言工具包,集成了很多自然語言相關(guān)的算法和資源。
Stanford CoreNLP | Stanford的自然語言工具包,可以通過NLTK調(diào)用。
Gensim | 主題模型工具包,可用于訓(xùn)練詞向量,讀取預(yù)訓(xùn)練好的詞向量。
scikit-learn | 機(jī)器學(xué)習(xí)Python包 ,包含了大部分的機(jī)器學(xué)習(xí)算法。
XGBoost/LightGBM | Gradient Boosting 算法的兩種實(shí)現(xiàn)框架。
PyTorch/TensorFlow/Keras | 常用的深度學(xué)習(xí)框架。
StackNet | 準(zhǔn)備好特征之后,可以直接使用的Stacking工具包。
Hyperopt | 通用的優(yōu)化框架,可用于調(diào)參。

●這18張 Python 數(shù)據(jù)科學(xué)速查表真棒!
●中槍了吧?六種讓你的 Python 程序變慢的壞習(xí)慣
長按或掃描下方二維碼,后臺回復(fù):加群,可申請入群。一定要備注:入群+地點(diǎn)+學(xué)習(xí)/公司。例如:入群+上海+復(fù)旦。
感謝你的分享,點(diǎn)贊,在看三連 
