Dalam pemrograman R, ketika kita melakukan scaling pada sebuah matriks, langkah selanjutnya untuk mengembalikannya ke bentuk aslinya disebut “unscale”. Untuk melakukan unscale, kita perlu menyimpan faktor skala yang telah digunakan saat melakukan scaling sebelumnya.
Misalnya, jika kita melakukan scaling pada matriks dengan mengurangi rata-rata kolom dan membagi setiap elemen dengan standar deviasi kolom, kita harus menyimpan nilai rata-rata dan standar deviasi dari setiap kolom matriks tersebut.
Setelah kita menyimpan faktor skala (nilai rata-rata dan standar deviasi), kita dapat mengembalikan matriks ke bentuk aslinya dengan langkah-langkah berikut:
Ambil matriks yang telah diubah skala.
Untuk setiap elemen dalam matriks, lakukan langkah-langkah berikut:
Dengan melakukan operasi tersebut untuk setiap elemen dalam matriks yang diubah skala, kita dapat mengembalikannya ke bentuk aslinya.
Penting untuk mencatat bahwa faktor skala yang harus disimpan dan digunakan saat melakukan unscale harus sesuai dengan faktor skala yang digunakan saat melakukan scaling sebelumnya. Jika faktor skala berbeda, hasil unscale mungkin tidak akan mengembalikan matriks ke bentuk aslinya dengan benar.
mt <- matrix(c(1:20), ncol = 5)
cat("Original matrix:\n")
## Original matrix:
print(mt)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 5 9 13 17
## [2,] 2 6 10 14 18
## [3,] 3 7 11 15 19
## [4,] 4 8 12 16 20
scaled.mt <- scale(mt)
cat("Scaled matrix:\n")
## Scaled matrix:
print(scaled.mt)
## [,1] [,2] [,3] [,4] [,5]
## [1,] -1.1618950 -1.1618950 -1.1618950 -1.1618950 -1.1618950
## [2,] -0.3872983 -0.3872983 -0.3872983 -0.3872983 -0.3872983
## [3,] 0.3872983 0.3872983 0.3872983 0.3872983 0.3872983
## [4,] 1.1618950 1.1618950 1.1618950 1.1618950 1.1618950
## attr(,"scaled:center")
## [1] 2.5 6.5 10.5 14.5 18.5
## attr(,"scaled:scale")
## [1] 1.290994 1.290994 1.290994 1.290994 1.290994
unscaled.mt <- t(apply(scaled.mt, 1,
function(r) r * attr(scaled.mt, 'scaled:scale') +
attr(scaled.mt, 'scaled:center')))
cat("Unscaled matrix:\n")
## Unscaled matrix:
print(unscaled.mt)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 5 9 13 17
## [2,] 2 6 10 14 18
## [3,] 3 7 11 15 19
## [4,] 4 8 12 16 20
Proses ini akan menghasilkan matriks yang kembali ke bentuk aslinya sebelum dilakukan scaling. Dengan demikian, kita dapat memperoleh kembali nilai-nilai yang sesungguhnya dari data yang telah diubah skala sebelumnya.