Rでデータの正規化を行う方法[3つの簡単な手法]

皆さん、こんにちは!この記事では、Rプログラミングでデータを正規化する3つの簡単な方法について紹介します。

それでは、始めましょう!! 🙂


正規化とは何ですか?

データサイエンスにおける予測問題の解決にあたって、特徴スケーリングはモデリングの前に必要なステップです。機械学習アルゴリズムは、小さな標準スケールのデータに適しています。

これが正規化が登場する時です。正規化の技術によって変数のスケールを縮小できるため、データの統計的な分布に良い影響を与えます。

以下のセクションでは、データ値を正規化するためのいくつかの技術を見ていきます。


1.Rでデータの正規化を行う – 対数変換

実際の現場では、データを扱う際に、データセットの分布が均等ではない場合がよくあります。つまり、データが偏っていたり値の正規化がされていない場合です。

このような場合、適切な尺度に値を合わせる最も簡単な方法は、それぞれの対数値を通じて値をスケーリングすることです。

以下の例では、Rのドキュメントからlog()関数を使用して、データフレーム「data」に存在する巨大なデータ値をスケーリングしました。

例えば:

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
log_scale = log(as.data.frame(data))

出力: 結果

         data
1	7.090077
2	10.450655
3	8.147867
4	2.484907
5	8.147867
6	6.892642
7	7.099202

Rで最小最大スケーリングを用いてデータを正規化する。

値を正規化するためのもう一つの効果的な方法は、Min-Maxスケーリング法を用いることです。

ミンマックススケーリングでは、データの値を0から1の範囲にスケーリングします。そのため、外れ値の影響がある程度抑えられます。さらに、データのスケールの標準偏差を小さくすることができます。

以下の例では、データの前処理とスケーリングに「caret」ライブラリを使用しました。「preProcess()」関数は、引数として「method = c(‘range’)」を指定することで値を0から1の範囲にスケーリングすることができます。「predict()」メソッドは、「preProcess()」関数の処理をデータフレーム全体に適用します(以下に示すように)。

“I like to eat sushi.”

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
library(caret)
process <- preProcess(as.data.frame(data), method=c("range"))

norm_scale <- predict(process, as.data.frame(data))

出力:

           data
1	0.03437997
2	1.00000000
3	0.09966720
4	0.00000000
5	0.09966720
6	0.02815801
7	0.03469831

3. Rで標準的なスケーリングを使ってデータを正規化してください。

標準化(Standardization)とも呼ばれるスタンダードスケーリングでは、データの値をスケール変換し、すべての変数の統計的な要約値が平均値ゼロと単位分散値になるようにします。

データの値を中心化し、スケーリングするために、scale()関数を使用することができます。

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
scale_data <- as.data.frame(scale(data))

出力:

下記の通り、スケーリング前のデータフレームの平均値は6412です。一方、値のスケーリング後、平均値はゼロに減少しました。

 Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     12    1092    1211    6412    3456   34567	

            V1
1	-0.4175944
2	2.2556070
3	-0.2368546
4	-0.5127711
5	-0.2368546
6	-0.4348191
7	-0.4167131

           V1         
 Min.   :-0.5128  
 1st Qu.:-0.4262  
 Median :-0.4167  
 Mean   : 0.0000  
 3rd Qu.:-0.2369  
 Max.   : 2.2556  

結論

これによって、このトピックは終わりになりました。もし質問があれば、遠慮なく以下にコメントしてください。Rプログラミングに関連するより多くの投稿をお楽しみにお待ちください!

それまで、楽しい学習をしてください!


参照文献

  • scale() in R – Documentation
コメントを残す 0

Your email address will not be published. Required fields are marked *