본문 바로가기

파이썬/머신러닝

[#E9] 학습 데이터 전처리 (PreProcessing)

학습 데이터를 다루다보면 원하는 결과가 아닌 NAN이 출력되는 경우가 있습니다. 이것의 원인은 다양한데, 일반적으로 세 가지가 있습니다.


1. Learning Rate가 너무 크거나 작게 설정된 경우


1
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
cs
 


Solution : 특별한 방법 없이 다양한 Rate 값을 시도해야 합니다.

 

2. Over Fitting


  

Solution : 데이터 Regularization, 더 많은 데이터, 특징이 되는 값 제거


Regularization의 경우 Cost 함수 + Term으로 구성됩니다. Term은 다음과 같습니다.


1
2
3
4
5
6
7
8
9
10
11
//TERM = REGULARIZATION STRENGTH * Cost(W)
0.001 * tf.reduce_sum(tf.square(W))
 
//(usege example) 
tf.reduce_mean(tf.square(hypothesis - Y) + 0.001*tf.reduce_sum(tf.square(W)) 
 
/*
0.001 = not important
...
1 = very important
*/
cs


REGULARIZATION STRENGTH는 해당 데이터의 Reqularization이 중요한지, 그렇지 않은지 나타내는 사용자 임의의 척도입니다.

 

3. 데이터 간의 차이가 매우 크거나 작은 경우

 

Solution : 데이터 Normalization (MinMaxScaler)


MinMaxScaler는 모든 데이터를 크기에 따라 0과 1사이의 값으로 조정합니다. 이는 다음과 같이 쉽게 사용할 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def MinMaxScaler(data):
    numerator = data - np.min(data, 0)
    denominator = np.max(data, 0- np.min(data, 0)
    # noise term prevents the zero division
    return numerator / (denominator + 1e-7)
 
xy = np.array([[828.659973833.450012908100828.349976831.659973],
               [823.02002828.0700071828100821.655029828.070007],
               [819.929993824.4000241438100818.97998824.159973],
               [816820.9589841008100815.48999819.23999],
               [819.3599858231188100818.469971818.97998],
               [8198231198100816820.450012],
               [811.700012815.251098100809.780029813.669983],
               [809.51001816.6599731398100804.539978809.559998]])
 
xy = MinMaxScaler(xy)
 
cs


결과


1
2
3
4
5
6
7
8
[[0.99999999 0.99999999 0.         1.         1.        ]
 [0.70548491 0.70439552 1.         0.71881782 0.83755791]
 [0.54412549 0.50274824 0.57608696 0.606468   0.6606331 ]
 [0.33890353 0.31368023 0.10869565 0.45989134 0.43800918]
 [0.51436    0.42582389 0.30434783 0.58504805 0.42624401]
 [0.49556179 0.42582389 0.31521739 0.48131134 0.49276137]
 [0.11436064 0.         0.20652174 0.22007776 0.18597238]
 [0.         0.07747099 0.5326087  0.         0.        ]]
cs


자세한 강의는 링크를 참고하세요