data 전처리 / 생각해야 할 문제들

2021. 9. 4. 03:03ai/Machine Learning

728x90

 

1. Loss Function

Overshooting : Learning rate의 값이 필요이상으로 크게 설정 즉 W의 값이 너무 크게 변하는걸 지칭

                    원래 w이 갱신이 되려면 w - w편미분 * learning rate 를 update 여기서 a를 너무 크게 주면 찾아야 할                        값을 찾을수가 없다

local minima : Learning rate의 값이 필요이상으로 작게 설정 위와 반대로 a를 너무 작게 설정하면 많이 반복하여도 

                   찾아야 할 값에 도달하지 못한다

 

 

 

2. Normalization(정규화)

MinMax Normalization : (최대, 최소로 이용) 쉽고 간편하게 사용할 수 있어요.       [ SKlearn 이용 ]

                                          장점 : 0 ~ 1 사이로 고정:

                                          단점 : 이상치에 상당히 민감한 방식

Standardization / Z-score Normalization : 평균과 표준편차를 이용 "고정된 범위로 scaling이 안되요"

                                                      상대적으로 이상치에 덜 민감한 방식

 

 

3.  과적합[ 과적 ]    -   간혹 과대적합을 과적합 [과적]이라고도 부른다 

이를 알수 있는 방법은 밑에 validation(모델평가)를 이용

 

과소적합  ( under fitting ) : 모델이 완성되지 않은경우 , 그렇게 자주 발생되지는 않아요

- 과대적합 ( Over fitting ) : 지나치게 모델이 (적절하게) 잘 만들어진 경우                             

  v 자주발생    ,    Trainning Data Set에 잘 맞춰진경우

Overfitting case

 

Overfitting을 피하려면?

- Trainning Data Set의 양이 많아야 해요 !!  (현실적으로는 이런 많은 [충분한]양의 data를 얻기 쉽지 않아요)

- Feature(독립변수)의 개수를 줄여야 해요! 다른거나 필요없는건 뺄수있다 ( ex)월 , 일 )  →Feature Engineering

- Feature Engineering : machine learning algorithm을 돌려서 신뢰할만한 결과를 얻기 위해서는 적절한 feature들을 선정해야 합니다. 이 작업을 feature engineering이라고 합니다. 

 

machine learning algorithm을 돌려서 신뢰할만한 결과를 얻기 위해서는 적절한 feature들을 선정해야 합니다. 이 작업을 feature engineering이라고 합니다.

필요한 feature이지만 없는 경우, 추가해야 합니다. 별로 도움이 안 될 feature는 없애 버려야 합니다. 많은 feature 중에서 결과에 좋은 영향을 줄 feature만 선정해야 합니다.

예로, height와 weight feature를 사용하여 gender를 예측하는 문제에서, “취미 (hobby)” feature를 추가하면 예측에 도움이 될 수 있을 것 같습니다. 남성과 여성의 취미가 다른 경우가 많기 때문이지요. 그러나 “나이 (age)” feature는 추가해 보았자 도움이 안 될 것 같습니다.

Weight의 값이 크면 클수록 좋지 않아요 → Regularization [규제]

 

 

 

과적합은 현재 배운걸로는 어렵고 deep learning가서 배운다 , 그래프로 간단히 알수 있다

 

4. Over sampling

inbalanced data problem : trainning data안에 data불균형        (ex)암환자)

 

inbalanced data problem 의 해결법

Over sampling -  적은 data를 늘리는 방식 / 대부분의 이 경우를 사용하며 많은 기법이 있지만

                        SMOTE알고리즘 이용하면 된다 . 아직 안배웠고 필요할때 찾아 쓰면 된다

under sampling - 적은data 기준으로 많은 data 에서 뽑아서 맞춘다 하지만 Training data크기가 줄어드는 문제점이                            있다. 즉 다시 overfitting의 문제가 발생해 거의 사용하지 않는다

 

 

5. Evalvation (모델평가)

  Evalvation (모델평가) - 내가 만든 모델의 정확도를 평가하는 것이며 model구현후 필수단계이다 . 

                                97%정도 이상이여야 한며 그 도구로 " Metric [지표] "을 이용

 

Accuracy - Metric [지표]중 하나로 data의 편차가 없다면 가장 공평한 성능평가 기법

             

              v Training Data Set으로 학습한 후 (model을 생성한 후) 

                이 Training Data Set으로 다시 이용해서 성능평가를 진행하면 안되요 !!! 

 

Testing data - 최종Model이 완성된 후 우리 Model을 평가하기 위해서 단 1번 사용

                  - Testing data를 이용한 결과(prediction data)를 이용해서 model을 변경시키지 않아요

Validation[확인] Data - model 개선을 위해 확인용 , 평가용 data 

공모전, 회사 제출용

1. Training Data Set 100% = Data80% + Testing Data20% → 

2. 위 Data80% = Traing Data80% + Validation Data20% 을 이용해서 model 개선반복

3. 개선한 model로 1번의 Testing Data20%를 입혀 결과값 제출

 

공부용 (data낭비 및 제출할게 아니기때문에 )

그러나 우리는 공모전이 아니기에 Testing data를 날리고  Validation Data만 사용

Training Data Set 100% = Training Data80% + Validation Data20% (간혹 사람들이 testing data라고 부른다) 

 

위와 같이 test를 위해 나눈 방식을 Hold-out Cross validation

하지만 2가지 문제가 있다

1. Training(학습)에 사용하는 data자체가 줄어든다 → Over fitting발생위험

2. data의 bias(편향)문제가 발생할 수 있다

 

Hold-out cross validation을 수행할때

Training data의 수가 validation data를 분할 할 수 없을 정도로 작다면?

K (n숫자) -Fold Cross validation이용

 

-우리가 validation(모델평가)을 수행하는 이유는 좋은 Model을 개발하기 위해서!

Training data 와 Validation data을 각각 이용 해서 Model을 평가 

== Overfitting (training data에 너무적합 즉 과대적합)을 알수있는 방법

 

Training data 는 높은결과 / Validation은 낮은결과 = overfitting

(당연히 Training data 에 맞췄기 때문에 다른결과(Validation)는 낮게나온다)

 

Training data 과  Validation data의 결과가 비슷하면 = overfitting이 없다

 

K (n숫자) -Fold Cross validation

장점 : Hold-out Cross validation처럼 안나누고 data모두사용가능

        data를 모두 사용하기에 bias(편향)문제 해결 

단점 : 시간이 k배

 

ex)  5-Fold Cross validation

1. Training Data Set →

2. Fold 5개를 5등분해서 각자다른위치에 Validation data를 넣는다 (위사진 참고)

( 20% Validation data + 80% Training data ) →

5개 accuracy의 평균이 결과 

'ai > Machine Learning' 카테고리의 다른 글

1차 정리  (0) 2021.09.05
Cancer 코드 sklearn ver(k-fold)  (0) 2021.09.04
분류 성능 평가 지표(Metric)  (0) 2021.09.03
Logistic[논리] Regression 코드  (0) 2021.09.03
Logistic[논리] Regression  (0) 2021.09.02