天天看點

one class問題、few shot(one-shot)問題、異常檢測問題

one class問題

  • one class與2分類,多分類的差別?
    • two class:"是"自行車,或者"不是"自行車,訓練集裡有自行車的資料和不是自行車的資料。模型判斷是屬于自行車類,還是others類。
    • mutil class: 人臉識别等,每個人就是一個類别;COCO資料集包含80個class的資料;
    • one class:"是"自行車,或者"不是"自行車,但是訓練集裡隻給了自行車的資料。模型直接把不屬于這一類的資料歸為不是,而不是由于屬于另一類才傳回的“不是”結果。
  • 場景:

    進入商場的人是否購買一件商品(比如牛奶)的資料,肯定是買的人占總體比例少,但是如果two class的話,正負樣本十分不均衡,訓練器會偏向負樣本,甚至全分過去,精度也不會低,這時候當做one class問題考慮的話,隻把購買的人的資料放進訓練集,來判斷一個人是不是購買這個商品。

  • 常用方法:
    • SVDD(Support Vector Data Description):

      采用一個球形方法,該算法在特征空間中獲得資料周圍的球形邊界,這個超球體的體積是最小化的,進而最小化異常點的影響。當隻有一個class,訓練出一個最小的超球面,将定義的類别的資料用球面全部“包起來”,當測試階段,有一個新的資料點時,如果這個資料點落在超球面内,就屬于這個類,否則不是。

    • OCSVM(one class support vector machine):

      将資料樣本通過核函數映射到高維特征空間,使其具有更良好的聚集性,在特征空間中求解一個最優超平面實作目标資料與坐标原點的最大分離,坐标原點被假設為唯一的一個異常樣本。

few shot(one-shot)問題

  • zero-shot learning和one-shot learning?
    • zero-shot learning

      訓練集中沒有某個類别的樣本,但是可以學到一個映射,能通過這個映射得到這個新類的特征。

      即: 對訓練集中沒有出現過的類别,模型能自動創造出相應的映射: X -> Y

    • one-shot learning

      訓練集中,每個類别都有樣本,但都隻是少量樣本(隻有一個或幾個)。可以在一個更大的資料集上或者利用knowledge graph、domain-knowledge 等方法,學到一個一般化的映射,然後再到小資料集上進行更新更新映射。

一篇綜述:https://zhuanlan.zhihu.com/p/61215293

異常檢測問題

  • 什麼是異常檢測?

    給定資料集x(1),x(2),…,x(m),我們假使資料集是正常的,我們希望知道新的資料xtest是不是異常的,即這個測試資料不屬于該組資料的幾率如何。我們所建構的模型應該能根據該測試資料的位置告訴我們其屬于一組資料的可能性P(x)。

  • 類别:
    • 奇異點檢測(novelty detection):當訓練資料中沒有離群點,目标是用訓練好的模型去檢測另外未見過的樣本;
    • 離群點檢測(outlier detection):當訓練資料中包含離群點,模型訓練時要比對訓練資料的中心樣本,忽視訓練樣本中的其它異常點;
  • 場景:
    • 資料預處理
    • 病毒木馬檢測
    • 工業制造産品檢測
    • 網絡流量檢測
  • 常用方法:
    • sklearn中的方法OneClassSVM(奇異點檢測)
    • Isolation Forest(離群點檢測)
    • Local Outlier Factor(離群點檢測)等

繼續閱讀