2번째 줄: |
2번째 줄: |
| 결측치를 제거하거나 새로운 값을 부여하거나, 범주형 변수를 어떻게 처리할지에 대한 지식을 모아둔 분류. | | 결측치를 제거하거나 새로운 값을 부여하거나, 범주형 변수를 어떻게 처리할지에 대한 지식을 모아둔 분류. |
| | | |
− | == 데이터 분류 == | + | = 전처리 = |
| + | 데이터마다 스케일의 크기가 다르다. 어떤 것은 1~5 사이인데, 어떤 것은 100~1000 사이이기도 하고.. 요소마다 스케일이 다르기도 한데, 크기가 큰 항목에 더 크게 영향을 받기 때문에 이들에 대한 전처리가 필요하다. |
| + | |
| + | 1. 텍스트 데이터의 경우. |
| + | |
| + | 컴퓨터가 이해할 수 있는 평태로 변환. |
| + | 단어를 인덱싱하여 벡터화 해 수치화. |
| + | 2. 정규화 |
| + | |
| + | 데이터 크기 자체에 영향을 받지 않게끔. |
| + | |
| + | == 정규화 방법 == |
| + | |
| + | === Min-Max Normalization(최소-최대 정규화) === |
| + | <math>x' = {x-min \over max-min}</math> 모델의 가장 작은 값을 0으로, 가장 큰 값을 1로 맞춘다. |
| + | |
| + | 이상치에 취약하다는 약점이 있다.(값이 1개라도 이상하게 크게 튀면 나머지 모두가 영향을 받아버린다.) |
| + | |
| + | === '''Z-Score Normalization(Z-점수 정규화), 표준화''' === |
| + | 위 정규화의 약점을 해결하기 위해 나온 전략. 표준화라고도 한다. 평균이 0이고, 분산이 1인 상태로 만들어 다루는 것.(사이킷런에서 기본적으로 제공하는 기능이다.) |
| + | |
| + | <math>z = {x-mean \over \sigma}</math> 평균과 표준편차를 이용해 데이터가 정규분포(가우시안분포)에 해당하게 바꾸어주는 과정이다. |
| + | |
| + | = 모델 평가를 위한 데이터 분류 = |
| 데이터는 일반적으로 다음의 3개로 분류한다. | | 데이터는 일반적으로 다음의 3개로 분류한다. |
| + | {| class="wikitable" |
| + | !데이터 |
| + | !의도 |
| + | |- |
| + | |훈련데이터 |
| + | |가중치(매개변수)를 학습하는 데 쓰이는 데이터. |
| + | |- |
| + | |검증데이터 |
| + | |모델 평가에 사용. |
| + | 테스트 데이터와의 차이는 무엇일까? => 하이퍼파라미터를 조절하는 데 사용. 검증세트에 맞게끔 모델을 튜닝하다 보면 오히려 여기에 과적합 되어 테스트에 맞지 않게 될 수도 있다.(이를 정보누설이라 한다.) |
| + | |
| + | 때문에 테스트 데이터는 최종적으로 한 번만 사용하게끔 개발계획을 잡는 것이 이상적. |
| + | |- |
| + | |시험데이터 |
| + | |완전히 다른 데이터셋으로 최종적으로 테스트.(모델은 간접적으로라도 테스트세트에 대한 어떠한 정보도 얻어선 안된다.) |
| + | |} |
| | | |
− | * 훈련데이터 : 가중치(매개변수)를 학습하는 데 쓰이는 데이터.
| + | == dataframe을 배열로 == |
− | * 시험데이터 : 신경망의 성능 평가.(하이퍼파라미터를 조정하는 데 쓰면 하이퍼파라미터가 여기에 오버피팅 되어버린다.)
| + | 일반적으로 데이터 관리에서 데이터프레임을 사용하지만, 인공지능에선 넘파이 배열을 사용한다.<syntaxhighlight lang="python"> |
− | * 검증데이터 : 하이퍼파라미터의 성능을 평가하기 위한 데이터.
| + | import numpy as np |
| | | |
| + | x_train = np.asarray(x_train).astype('float32') |
| + | # 시간형은 어떻게 바꾸지? |
| + | </syntaxhighlight> |
| [[분류:인공지능 이론]] | | [[분류:인공지능 이론]] |