- 교차 검증(Cross validation) : 다양한 기계 학습 방법을 비교하여 그것들이 실제로 얼마나 잘 작동할지 알 수 있게 해준다.
- 기계 학습에서 변수를 추정하는 것은 “알고리즘을 학습한다”는 것이다.
- Estimating parameters is called “training the algorithm”
- 기계 학습에서 어떤 방법을 평가하는 것은 “알고리즘을 시험한다”는 것이다.
- Evaluating a method is called “testing the algorithm”
- 우리는 데이터가
- 기계학습 방법을 학습하고
- 기계학습 방법을 시험하게 해야 한다.
-
모든 데이터를 이용해서 변수(parameter)를 추정하는 것은 최악인데, 그 방법을 시험할 데이터가 남아있지 않기 때문이다.
→ 데이터를 재사용하는 것은 안 된다. 학습되지 않은 데이터를 이용했을 떄 이 데이터가 어떻게 작동하는지 알아야 하기 때문이다.
원핫 인코딩
- 범주형 자료 : 명목형(nominal), 순서형(ordinal)
- 명목형 : 순서가 없음
- 순서형 : 순서가 있음
- 범주형 변수를 원핫인코딩으로 변환하는 방법 : 변수 내 각 범주에 대한 변수를 따로 만듦

-
집합의 크기(Cardinality) : 그 집합 내 원소의 개수를 의미.
-
원핫인코딩을 수행하면 범주에 해당하는 변수들이 모두 차원에 더해진다. 따라서 범주가 너무 많아 집합의 크기가 큰 경우(high cardinality)에는 사용하기 부적합.
-
방법
df_oh = pd.get_dummies(df, prefix=['City'])
- category_encoders 라이브러리를 사용하면 범주형 데이터에만 원핫인코딩을 수행할 수 있음.
!pip install category_encoders ## OneHotEncoder 가져오기
from category_encoders import OneHotEncoder
encoder = OneHotEncoder(use_cat_names = True)
X_train = encoder.fit_transform(X_train)
X_test = encoder.transform(X_test)
특성 선택(Feature Selection)
- 특성공학은 과제에 적합한 특성을 만들어 내는 과정
- 차원축소(dimension reduction) : 좁은 의미로 특성 추출, 넓은 의미로는 특성 선택도 포함
- 특성 선택(feature selection)
- 특성 추출(feature extraction) : 특성을 단순히 선택하는 게 아니라 특성들의 조합으로 새로운 특성 생성, PCA 등
- 스케일링(scaling) : 변수 간의 관계가 잘 드러나게 범위 변환, 전체값에 루트를 적용하는 방법 등
- 변형(transformation) : 기존에 존재하는 변수의 성질을 이용해 다른 변수 생성,
- 비닝(binning) : 연속형 변수를 범주형 변수로 변환
- 더미(dummy) : 범주형 변수를 연속형 변수로 변환 가능
- SelectKBest를 사용해 가장 효과적인 특성 K개를 고르는 방법
from sklearn.feature_selection import f_regression, SelectKBest
selector = SelectKBest(score_func=f_regression, k=10)
## 학습데이터에 fit_transform
X_train_selected = selector.fit_transform(X_train, y_train)
## 테스트 데이터는 transform
X_test_selected = selector.transform(X_test)