開發理想的解決方案需要什麼? 當我面對新的資料科學問題時,我經常這樣問自己。令人驚訝的是,答案始終如一 - 「資料。」
在我的職業生涯中,對我來說最具挑戰性的任務一直是追求完美無瑕的資料。老實說,我從未成功過。
完美資料集存在嗎?
但是,究竟什麼才算是完美資料?簡單來說,資料可以分為良好的訓練和驗證資料集,以訓練一個在生產環境中表現良好且能長期穩定的模型。而且,如果您在訓練模型時資料集不佳,那麼即時結果將與您在實驗期間觀察到的結果大相逕庭。
真實世界的資料是混亂的、很少結構化、不平衡的,並且有遺失的資訊、雜訊,有時還被錯誤地標記。此外,在某些情況下,可能沒有資料,或者實際有價值的資料比例非常少。此外,在某些情況下,建立高品質資料集的成本可能很高。
使用不平衡資料集的個人經驗
在這個故事中,我將分享我在資料科學家職業生涯的第一個專案中所面臨的挑戰。
我參與了一個文字分類專案,旨在將客戶的評論分類為正面或負面。這些評論是我們在 Basecamp 上與客戶進行定期對話的一部分。
與普遍的看法相反,這個問題一點也不簡單。
首先,負面評論的定義非常具體。
如果評論顯示以下意圖之一,我們才需要標記該評論
- 客戶正在詢問進行中專案的更新/預計到達時間/狀態/後續追蹤;
- 客戶給予負面回饋,或 CX 團隊未能滿足客戶對交付項目的期望;
- 客戶感到沮喪、憤怒或困惑;
- 客戶要求緊急交付專案或中期交付項目;
此外,即使在從 Basecamp 抓取所有評論後,我們也只獲得了 3500 條客戶評論。註解結果顯示只有 540 條負面評論,其餘為正面評論。
在 EDA 期間,我們分析到某些評論長達 100-200 字。這些是客戶對交付項目的回饋。在大多數回饋中,只有部分文字是負面的。然而,由於文字截斷,該負面部分被忽略,我們的模型將文字預測為正面。
此外,增加截斷長度會使我們的結果惡化。為了克服這個問題,文字被標記化為個別句子。這些個別句子再次被標記,結果產生了 760 條負面句子和 9905 條正面句子。這是不平衡資料集的經典範例。我們納入了一些來自 SST2 的負面文字,以確保資料集平衡。
額外資料的加入幫助我們解決了小資料集和不平衡資料的問題。它也幫助我們捕捉到人類常見的負面情緒。
我們的最終資料集看起來像這樣 - 9905 條正面評論和 2760 條負面評論,這幫助我們實現了 92.5% 的準確度。
由於我們的大部分負面評論來自 SST2,因此我們採用了持續重新訓練的方法來改進我們的分類模型。我們產生了模型預測的所有正面和負面訊息的每週摘要,為期三個月。我們手動分析了此摘要,並識別出假陽性 (FP)。然後將這些 FP 饋送到我們的模型中進行重新訓練和效能提升。這將我們模型的準確度提高到 97%。