文章目錄[隱藏]
技巧1:快速讀取數據
現在很多Kaggle比賽,數據集都比較大,大於(yu) 3GB是非常常見的事情。在讀取數據集時,可能會(hui) 遇到一些困難。
你可以嚐試以下的方法加速數據讀取:
- 在pandas讀取時手動設置變量類型
- 使用cudf代替pandas完成讀取
- 轉為parquet或feather再進行讀取
技巧2:擴充數據集
當比賽數據集非常小時,外部數據集就非常關(guan) 鍵了。此時可以尋找相似的外部數據集來完成預訓練。
例如對於(yu) QA任務,可以選擇以下的數據完成預訓練。
- https://rajpurkar.github.io/SQuAD-explorer/
- https://nlpprogress.com/english/question_answering.html
當然也可以從(cong) 偽(wei) 標簽和數據擴增和回譯來增加數據樣本。
技巧3:深入文本數據
文本分析
EDA有助於(yu) 更好地理解數據。在開始開發機器學習(xi) 模型之前,應該閱讀/做大量的數據文本,這有助於(yu) 特征工程和數據清洗。
- 文本長度規律
- 語種規律
- 標點符號規律
- 特殊字符規律
文本清洗
文本清理是NLP賽題中的重要組成部分。文本數據總是需要一些預處理和清理,然後我們(men) 才能用合適的形式表示它。
- Remove HTML tags
- Remove extra whitespaces
- Convert accented characters to ASCII characters
- Expand contractions
- Remove special characters
- Lowercase all texts
- Convert number words to numeric form
- Remove numbers
- Remove stopwords
- Lemmatization
技巧4:文本表示
文本表示方法影響文本的表示形式,也決(jue) 定了模型的精度。基礎的詞向量包括:
- PretrainedGlovevectors
- Pretrainedfasttextvectors
- Pretrainedword2vecvectors
- PretrainedParagramvectors
- Universal Sentence Encoder
也可以考慮組合上述詞向量以減少OOV的情況,當然同一個(ge) 單詞也可以拚接或平均多種詞向量。
也可以直接考慮直接使用高階嵌入方法:
- Bert
- Roberta Bert
- XLNET
技巧5:模型構建
損失函數
- 二分類Binary cross-entropy
- 多分類Categorical cross-entropy
- 二分類Focal loss
- 多分類Weighted focal loss
- 多分類Weighted kappa
優化器
- SGD
- RMSprop
- Adagrad
- Adam
- Adam with warmup
Callback
- Model checkpoint
- Learning rate scheduler
- Early Stopping
評論已經被關(guan) 閉。