close

在數據預先處理時,特徵值的比例調整是很重要的課題。
R 語言中也可以利用內建的函數來達成比例調整。

 

1. 外界的輸入值
外界的輸入值是我們由外界抓取到的數值,其中,各式各樣的數字都有可能。可能有出現很高的數字,也可能出現很小的。
一般來說,輸入值的大或小並不重要,但如果需要用這些來作分析和預測,那我們就需要將輸入的數字限制在一個合理的範圍內。這種工作稱為 比例調整(scaling)。

2. 比例調整(scaling)的方式
  其實,比例調整的方式很多,目前市面上最熟悉的方式有以下兩種:

2.1 直觀方式
   第一種是我們一般人想到的方式:我們將一筆資料裡面最大值減去最小值作為分母,分子是每一個數字減去整體的最小值。分子除以分母就可以得到調整後的比例值。

1_scaling_normalisation.png

這種方式在一般的用途來說還可以用,但是在統計學上這種方式能夠應用的資料要符合標準常態分布。也就是說:這筆數據的平均值是0,且標準差是1!

結論:直觀方式易於聯想,但是條件有限制,因此我們要再尋找其他的方式!

2.2 統計學上的比例調整(scaling)

   統計學是發展很久的一門學問,它可針對輸入的資料取出特徵。每一筆資料都具有平均數(mean)和標準差(standard deviation),因此這種方法是利用這筆資料本身的平均數和標準差來作計算。現在,分子改成資料減去平均數,分母改成這筆資料的標準差。如這裡的表示:

1_scaling_standardization.png

 

3. R 語言的支援:scale()

 3.1 在 R 語言裡面,利用 scale() 就可以達到比例調整(scaling) 的效果

寫這樣的程式
 

2_1_code_scale.png

執行卻出錯了!

2_2_error_Not_numric.png

它告訴我們 scale() 裡面必須是數值!看到這裡有些奇怪。如果去看一下前面寫過的程式

2_4_training_set_2_columns_factors.png

這裡我們已經把 Country 和 Purchased 兩欄位作轉換。轉換後成為文字,而不是數字。

解決方法是:在轉換時不包含這兩個欄位

2_3_training_set_2_columns_not_numric_circle.png

我們再看一下 training_set

2_5_train_set.png
 

第一個行(column) 是最左邊這個 1 到 9 的索引,沒有名稱(label),確是一組存在的索引值,因此稱為隱式索引。

這裡由 column 0 開始計算。所以 Country 和 Purchased 兩欄位是 2 和 3。

程式要改為只對兩個欄位 2 和 3 作 比例調整(scaling)
要改成:

 

2_6_1_newCodes.png

原來的內容是

2_5_train_set.png

2_5_test_set.png

 

改過的內容是

2_6_training_set.png

2_6_test_set.png

 

有人可能會問:這樣做只是將數值縮小,沒有太大的改變!目前來說是這樣。可是未來這些改過資料用作模型訓練及預測的時候,會使得模型可以快速收斂到一個穩定的狀態。這才是我們訓練模型的目的及價值!

文章標籤
R Data preprocessing scale
全站熱搜
創作者介紹
創作者 小木屋 的頭像
小木屋

小木屋

小木屋 發表在 痞客邦 留言(0) 人氣()