就是一個數據矩陣,按列歸一化跟按行歸一化的區別


首先,很少有做你所說的行歸一化的。列代表著一個特徵,而行代表著一個記錄的幾個維度,這些維度特徵之間標準不同,單位不同,數據範疇不同,這個時候做歸一化就失去意義了,如果強行歸一化甚至會產生掩蓋特徵的作用。比如說一個特徵是身高一般用厘米來表示都是175左右的數據,而另一個特徵是假設在0-1之間表示,這個時候強行歸一就失去意義了,而即使進行了歸一他們之間的差距依然存在,反而因為後面數據變得更小而使得此特徵作用可能消失。

需要看你做歸一化的動機是什麼。

縱向歸一化是因為縱向的特徵具有可比較性,歸一化後的大小需要能描述之前的「距離」;橫向特徵不具有比較性,歸一化沒有實際的意義。


瀉藥。

以搞演算法比賽為例,一般行表示sample,列表示feature。了解這個的話下面可以看看歸一化到底有啥用。

一般來講,歸一化是線性模型做數據預處理的關鍵步驟,比如LR。非線性的就不用歸一化了。

歸一化不特別說明都是對特徵歸一化,進階版本可以取99分位,防止某些樣本數值過於誇張導致訓練出來的模型在某些位置顯得很突兀。

比如預測欺詐交易,某特徵x表示a給b轉賬錢數,還有個特徵y表示a曾經用過多少設備,最後訓練起來必定特徵x給y帶跑偏導致y顯得沒有那麼重要。

因為要取99分位,如果是大規模機器學習運算集群會扛不住,怎麼辦,用ps-smart好了,非線性,甭歸一,強泛化,美滋滋~
歸一化就是變為標準正太分布或者x減去最小除以最大。在數據挖掘中這個處理也是對列做吧

一般來說,列是特徵 ,行是樣本。

按列處理應該是比較常見的,因為這樣的話,某一樣本的某特徵和其他樣本相比仍然不會丟失信息。而如果是按行來,處理後該特徵的信息可能會被自身其他數據淹沒了。總之,是要和其他樣本來對比的,所以要用列。

舉個例子,比如 2個樣本,每個有3個特徵。

2,3,30;

0.6,3,5;

本來2和0.6相比,特徵是較為明顯的,按照列不會改變這種狀況。

如果按照行的話,2會被後面的數據(比如,30)淹沒掉信息,歸一化後,2可能會小於0.6了,原始的數據意義已經被打破了。


搞deep learning歸一化和不歸一化不會有啥區別。
推薦閱讀:
相关文章