[혼공학습단 9기] 혼자 공부하는 머신러닝 + 딥러닝 Ch 02

수빈·2023년 1월 8일
0

02-1 훈련 세트와 테스트 세트

지도 학습과 비지도 학습

지도 학습(Supervised Learning) : 훈련하기 위한 데이터와 정답이 필요하다.
비지도 학습(Unsupervised Learning)

지도 학습에서는 데이터와 정답을 입력(input) 그리고 타깃(target)이라고 학, 이 둘을 합쳐 훈련 데이터(training data)라고 한다. 마지막으로, 입력으로 사용된 데이터들을 특성(feature)이라고 한다.

지도 학습은 정답(타깃)이 있으니 정답을 맞히는 것을 학습하지만, 비지도 학습 알고리즘은 타깃 없이 입력 데이터만 사용한다. 이것은 정답을 사용하지 않으므로 무언가를 맞힌다기 보다는 데이터를 잘 파악하거나 변형하는 데 중점을 둔다.

훈련 세트와 테스트 세트

평가에 사용하는 데이터를 테스트 세트(test set)라고 하고 훈련에 사용되는 데이터를 훈련 세트(train set)이라고 한다.

데이터 세트 안의 하나의 데이터를 샘플이라고 한다.

샘플링 편향

훈련 세트와 테스트 세트에 샘플이 골고루 섞여 있지 않으면 샘플링이 한쪽으로 치우치게 된다. 이것을 샘플링 편향(sampling bias)이라고 한다.
이렇기 때문에 훈련 세트와 테스트 세트를 나누기 전에 데이터를 섞든지 골고루 샘플을 뽑아 훈련 세트와 테스트 세트를 만들어야 한다.
이 작업은 파이썬 라이브러리인 넘파이를 사용하여 실행한다. 넘파이는 고차원의 배열을 손쉽게 만들고 조작할 수 있는 간편한 도구를 많이 제공한다.

02-2 데이터 전처리

넘파이 사용하기

넘파이 배열을 출력하면 리스트처럼 한 줄로 길게 출력되기 보다는 행과 열을 맞추어 가지런히 정리된 모습으로 출력된다.

사이킷런으로 훈련 세트와 테스트 세트 나누기

넘파이 배열은 인덱스를 직접 섞어 훈련 세트와 테스트 세트로 나누었다. 하지만 이 방법은 조금 번거롭기 때문에 또 다른 라이브러리인 사이킷런을 사용해 볼 것이다.

사이킷런 라이브러리는 머신러닝 모델을 위한 알고리즘뿐만 아니라 다양한 유틸리티 도구를 제공한다. 그 중 하나는 train_test_split() 함수인데, 이 함수는 전달되는 리스트나 배열을 섞어준 후, 비율에 맞게 훈련 세트와 테스트 세트로 나누어 준다.

문제 해결하기

이 전에는 x축과 y축의 스케일(scale)이 다르기 때문에 원하는 결과가 출력되지 않을 때가 있었다.
데이터를 표현하는 기준이 다르면 알고리즘 또한 올바르게 예측할 수 없다. 알고리즘들은 샘플 간의 거리에 영향을 많이 받으므로 제대로 사용하기 위해서는 특성값을 일정한 기준으로 맞추어 주어야 한다. 이런 작업을 데이터 전처리(data preprocessing)이라고 한다.

가장 널리 사용하는 전처리 방법 중 하나는 표준점수(standard score)인데 각 특성값이 평균에서 표준편차의 몇 배만큼 떨어져 있는지를 나타낸다.

profile
CS공부 하고 있는 수빈입니다.

0개의 댓글