2021年算法工作总结
2021年5月10日,我轉行到互聯網做算法工作,離開了工作接近8年的機械設計工作,還是要在這里感謝軍哥對我的幫助和指點!
換工作后,陸續學了《流暢的python》,FastAPI框架學了點皮毛,python web 編程學了點,LeetCode的算法題還在寫,新年還是要抽時間多學習新的知識。
下面對自己的算法工作做一些總結:
-
如果沒有標注數據,一開始需要自己先標注少量的數據,對數據的特點進行大致的歸類
-
能用簡單規則去解決相當一部分的問題(就是一個簡單的手寫決策樹:if - else)
-
需要抽樣估計一下有多少 case 漏召回,可以將算法中的一些規則放松一些,看看有多少例子被召回,此時召回率會上升,準確率會有所下降,用這樣的方法去看看,算法有沒有漏掉很多問題,盡量把這個規則算法的召回率做高,準確率保證在20%-30%以上都可以
-
根據規則算法把召回來的case自己進行標注,注意各類樣本的比例是否合適,避免后面標注人員的無效工作,注意什么標注方法比較合理,或者編寫標注工具,需要和業務方就標注標準達成共識
-
拿到標注結果后,抽樣檢查標注結果一致性如何,確定是否要進行二次標注或修改
-
數據準備好之后,會發現規則算法越寫越復雜,解決了一部分問題,另一些問題又沖突不對了,準確率和召回率的蹺蹺板來回倒騰,可以使用GBDT等樹模型進行機器學習,抽取一些特征,如是否有疑問詞,是否有?,編輯距離是多少(參考加州房價項目),一種特征的one-hot維數比較大,可以考慮分桶降維,不斷的加入特征,提高準確率,可以用sklearn搜索參數,看看比較重要的特征是哪些
-
如果到這步效果已經可以了(業務認可業務場景下的效果,注意不要拿算法研發的中間結果說明問題),那就可以收斂了,畢竟機器學習的計算成本還是比較小的
-
如果還不能滿意,考慮深度學習算法,使用BERT,ERNIE等大模型進行學習
-
出來一版算法的結果時,去分析混淆矩陣中的 badcase,發現 badcase 的共同特征,把這個特征加入到模型當中,通過分析還可能發現 有的 case 就是人漏標了,有的 case 就是人標錯了,匯總各類問題的分布比例是如何,找準問題的大頭去努力解決
-
如果需要的話,還可組合更復雜的模型,比如底層用多個深度學習模型,預測的結果作為上層模型的特征,另外再添加一些其他的特征,一起提供給上層的模型(可以是機器學習模型或者深度學習模型),需要注意標注的數據量是否足夠多能滿足模型這么多參數的學習
總結
以上是生活随笔為你收集整理的2021年算法工作总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 6060. 找到最接近
- 下一篇: fastapi 请求体 - 多个参数 /