Data preprocessing是處理現實資料一些問題或者因應一些演算法的限制產生的技巧
比方說missing value,現實生活上,可能會有資料遺失的問題,就好筆填寫表格,有些欄位並沒有被填寫,如果以real value來說,就可以考慮使用現有的training set中的mean value來填入
在Text mining中,常用的演算法是naive bayes
例如想使用幾個關鍵字,代表某一個網頁,如果直接使用該網頁最常出現的文字來代表,會產生一種偏差,比方說am, are, he, she這類常見的文字
所以有一種稱之為Term Frequency Inverse Document Frequency(TF-IDF)的技巧,就是將所有要評估的網頁作單一文字,如果一個關鍵字在各個網頁出現在多次,那麼表示這個關鍵字是一個常見的文字,並不適合用來代表某個網頁
經過這樣的事先處理,就可以把文字丟入naive bayes演算法做計算,獲得比較好的分類器
而許多分類器只能接受數值型(numeric)的特徵,那麼就必須把category的特徵做轉換,如果只有單純的性別,就可以轉換為0跟1即可,如果類似居住城市這種多種類別,也可以轉換為0, 1, 2, ...。如果同時考慮多個category的特徵,是否可以使用一個數值來表示呢?這就是one hot encoding的方式,他將一個有m個可能性的category變成一個m個bits表達的數字,接著如果有k個特徵,整個可以變成k*m的binary數值,k個特徵只要經過一次numeric處理提升了分類器的效能,同時又兼顧了每個特徵的獨特性。
其實我認為one hot encoding是否能夠滿足分類器的需求,還是硬將category的特徵轉換為數值,對於提升分類的準確度的幫助才是整個重點
反過來,有些演算法卻只能比較有效處理category的特徵,好比ID3這種decision tree的演算法。它使用entropy/information gain來作為分類的標準,如果撇開數學意義來說,我個人以不嚴謹的白話說法就是,一個特徵對於target的辨識程度
https://en.wikipedia.org/wiki/ID3_algorithm
當然相對的來說,數值的轉換就是另外一道課題,好比ID3的改良C4.5就考慮到這一點。它使用若干個threshold來分隔數值
https://www.jair.org/media/279/live-279-1538-jair.pdf
相關資料
https://read01.com/5M32Jn.html
http://mirlab.org/jang/books/dcpr/prNbc.asp?title=5-5%20Naive%20Bayes%20Classifiers%20(%B3%E6%AF%C2%A8%A9%A4%F3%A4%C0%C3%FE%BE%B9)&language=chinese
https://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91
沒有留言:
張貼留言