數(shù)據(jù)科學(xué)中的陷阱:變量的數(shù)學(xué)運(yùn)算合理嗎?
數(shù)據(jù)科學(xué)中有各種各樣的模型,有的聽起來很簡(jiǎn)單,比如線性回歸;有點(diǎn)呢,聽起來就很嚇人,比如深度學(xué)習(xí)。但是不管什么樣的模型,從本質(zhì)上來講,模型都是對(duì)訓(xùn)練數(shù)據(jù)做數(shù)學(xué)運(yùn)算,并以此求得模型參數(shù)的估計(jì)值。
所以我們需要保證兩點(diǎn):
- ***,訓(xùn)練數(shù)據(jù)能進(jìn)行數(shù)學(xué)運(yùn)算;
- 第二,對(duì)變量所做的數(shù)學(xué)運(yùn)算是合理的。
對(duì)于***點(diǎn),通常只在一些特定的應(yīng)用場(chǎng)景里才需要比較復(fù)雜的處理,比如自然語言處理、圖像識(shí)別等。
但對(duì)于第二點(diǎn),幾乎所有的場(chǎng)景都會(huì)遇到。
這里將注重研究第二點(diǎn)“對(duì)變量所做的數(shù)學(xué)運(yùn)算是合理的”,它表示的內(nèi)涵是:對(duì)于變量,數(shù)字的運(yùn)算有相應(yīng)的實(shí)際意義,包括以下兩個(gè)方面:
- 數(shù)字的大小關(guān)系。
- 數(shù)字的四則運(yùn)算。
為了更好地討論問題,將模型的自變量分類。正如前面章節(jié)所提到的,在模型里使用的變量可以分為兩類:數(shù)值型變量和類別型變量。如圖1所示。

圖1
數(shù)值型變量,在學(xué)術(shù)上也被稱為定量變量(quantitative variable),如長(zhǎng)度、收入、重量等。它們的數(shù)值表示具體的測(cè)量或計(jì)數(shù)。事實(shí)上,定量變量按是否連續(xù)可進(jìn)一步細(xì)分為連續(xù)型變量和離散型變量。在一定區(qū)間內(nèi)可以任意取值的變量叫連續(xù)型變量,比如人的身高、體重等;反之則是離散型變量,比如公司員工人數(shù)等。對(duì)于這類變量,數(shù)字間的不等關(guān)系是有實(shí)際意義的。比如對(duì)于收入,在數(shù)學(xué)上,100小于1000;在實(shí)際生活中,100元也小于1000元。數(shù)字間的四則運(yùn)算也同理,這里就不贅述了。當(dāng)然由于數(shù)字的等于關(guān)系和四則運(yùn)算,數(shù)值型變量常常隱含著邊際效應(yīng)恒定的假設(shè),正如我們?cè)诘?章里討論的那樣。在某些場(chǎng)景下,這個(gè)隱含假設(shè)與現(xiàn)實(shí)不符,直接使用變量會(huì)影響模型的效果。
類別型變量,也被稱為定性變量(categorical variable)。它并不是表示數(shù)量上的變化,而是表示類別。比如性別、省份、學(xué)歷、產(chǎn)品等級(jí)等。這類變量的取值通常是用文字而非數(shù)字來表示。比如對(duì)于性別這個(gè)變量,可能的取值為男、女。因此要將文字變量轉(zhuǎn)換為數(shù)字變量,并且保證對(duì)于轉(zhuǎn)換之后的變量,數(shù)學(xué)運(yùn)算是有意義的,這并不是一件容易的事情。通常針對(duì)一個(gè)類別型變量,我們會(huì)用一個(gè)數(shù)字去表示其中的一個(gè)類別,但這樣的轉(zhuǎn)換方法并不能滿足要求:
對(duì)于有序的類別型變量,比如產(chǎn)品等級(jí),0表示合格、1表示良好、2表示優(yōu)秀。這種情況下,0小于1的確對(duì)應(yīng)著合格等級(jí)次于良好等級(jí),但數(shù)字間的四則運(yùn)算就沒有對(duì)應(yīng)意義了。數(shù)學(xué)上2減1等于1,但對(duì)于產(chǎn)品等級(jí),優(yōu)秀減去良好還等于良好嗎?
對(duì)于無序的類別型變量,比如對(duì)于省份,0表示北京、1表示上海、2表示深圳等。數(shù)字間的大小關(guān)系和四則運(yùn)算都是沒有實(shí)際意義的。
因此,在模型里直接使用類別型變量是沒有任何道理的,也會(huì)嚴(yán)重影響模型的效果。由此可見,不管是數(shù)值型變量還是類別型變量,通常都需要根據(jù)問題場(chǎng)景做相應(yīng)變換后,再放到模型中使用。具體的方法將在后續(xù)的文章中詳細(xì)討論。