나랑 now

[혼공머신] 1주차_나의 첫 머신러닝 & 데이터 다루기 본문

혼공학습단/혼공머신

[혼공머신] 1주차_나의 첫 머신러닝 & 데이터 다루기

nowj8n 2024. 1. 7. 19:41
반응형
# 진도 기본 미션 선택 미션
1주차
(1/2 ~ 1/7)
Chapter 01 ~ 02 코랩 실습 화면 캡처하기 Ch.02(02-1) 확인 문제 풀고, 풀이 과정 정리하기
2주차
(1/8 ~ 1/14)
Chapter 03 Ch.03(03-1) 2번 문제 출력 그래프 인증하기 모델 파라미터에 대해 설명하기
3주차
(1/15 ~ 1/21)
Chapter 04 Ch.04(04-1) 2번 문제 풀고, 풀이 과정 설명하기 Ch.04(04-2) 과대적합/과소적합 손코딩 코랩 화면 캡처하기
4주차
(1/22 ~ 1/28)
Chapter 05 교차 검증을 그림으로 설명하기 Ch.05(05-3) 앙상블 모델 손코딩 코랩 화면 인증하기
5주차
(1/29 ~ 2/4)
Chapter 06 k-평균 알고리즘 작동 방식 설명하기 Ch.06(06-3) 확인 문제 풀고, 풀이 과정 정리하기
6주차
(2/5 ~ 2/12)
Chapter 07 Ch.07(07-1) 확인 문제 풀고, 풀이 과정 정리하기 Ch.07(07-2) 확인 문제 풀고, 풀이 과정 정리하기

 

  • 인공지능과 머신러닝, 딥러닝
    • 인공지능(artificail intelligence): 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술
    • 머신러닝(machine learning):
      • 규칙을 일일이 프로그래밍(하드코딩)하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야
      • 인공지능의 하위 분야 중에서 지능을 구현하기 위한 소프트웨어를 담당하는 핵심 분야
      • 대표적인 머신러닝 라이브러리: 사이킷런(scikit-learn)
    • 딥러닝(deep learning):
      • 머신러닝 알고리즘 중 인공 신경망(artificial neural network)을 기반으로 한 방법들을 통칭
      • 대표적인 딥러닝 라이브러리: 구글의 텐서플로(TensorFlow), 페이스북의 파이토치(Pytorch)

 

  • 지도 학습과 비지도 학습
    • 머신러닝 알고리즘은 크게 지도 학습(supervised learning)과 비지도 학습(unsupervised learning), 강화 학습(reinforcement learning)으로 나눔.
    • 지도 학습 알고리즘:
      • 훈련하기 위한 데이터와 정답 필요.
      • 데이터와 정답을 입력(input)과 타깃(target)이라 부르며, 이 둘을 합쳐 훈련 데이터(taining data)라고 부름.
      • 입력으로 사용된 데이터의 특징들을 특성(feature)이라고 함.

 

  • 훈련 세트와 테스트 세트
    • 훈련 세트(train set): 훈련에 사용되는 데이터. 규모가 클수록 좋음.
    • 테스트 세트(test set): 평가에 사용하는 데이터. 전체 데이터에서 20~30% 정도를 테스트 세트로 사용.
    • 관련 코드:
import numpy as np
변수 = np.column_stack(튜플 객체)	#column_stack은 매개변수로 1, 2차원 배열의 Python 튜플을 받으며, 2차원 넘파이 배열로 값을 반환해줌.
from sklearn.model_selection import train_test_split

# train_test_split 함수는 전달받은 배열을 비율에 맞게 훈련 세트와 테스트 세트로 2개씩 나누어 섞인 배열을 반환해줌.
# 아래에선 data와 target의 두 가지 배열을 입력했으므로 총 4개의 배열을 반환해줌.
# random_state 매개변수는 랜덤 시드를 지정할 수 있음.
train_input, test_input, train_target, test_target = train_test_split(data, target, random_state=42)

 

  • 샘플링 편향
    • 샘플(sample): 데이터 세트의 개별 데이터
    • 샘플링 편향(sampling bias): 훈련 세트와 테스트 세트에 샘플이 골고루 섞여 있지 않아 샘플링이 한쪽으로 치우쳐진 경우.
    • 훈련 세트와 테스트 세트에는 전체 데이터의 샘플 비중만큼 들어가있어야 샘플링 편향이 발생하지 않음.
    • 관련 코드: 
import numpy as np

np.random.shuffle(데이터)	# shuffle 함수는 주어진 배열을 랜덤하게 섞음

 

  • k-최근접 이웃(k-Nearest Neighbors) 알고리즘
    • 새로운 데이터에 대한 예측을 가장 가까운 직선거리에 있는 k개 이내의 훈련 데이터를 참고하여 결정을 내림.
    • 데이터가 아주 많은 경우 직선거리 계산을 위한 많은 메모리와 많은 시간이 필요.
    • 관련 코드:
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier()				# n_neighbors 매개변수를 통해 새로운 데이터 예측시 참고할 데이터 개수 설정 가능. 기본값은 5.
							# KNeighborsClassifier(n_neighbors = 3

model.fit(훈련 데이터, 훈련 데이터에 맞는 정답 데이터)		# fit 메서드는 모델을 학습시킴.
model.score(테스트 데이터, 테스트 데이터에 맞는 정답 데이터)	# score 메서드는 모델의 정확도 평가.
model.predict(새로운 데이터)				# predict 메서드는 새로운 데이터의 정답 예측

 

  • 데이터 전처리(data preprocessing)
    • 스케일(scale): 샘플들이 가진 특성의 범위
    • 데이터 전처리: 스케일의 값이 다른 경우, 알고리즘이 올바르게 예측할 수 없어 특성값을 일정한 기준으로 맞추는 작업
    • 전처리 방법론: 표준점수(standard score, z 점수)
      • 표준점수: 각 특성값이 평균에서 표준편차의 몇 배만큼 떨어져 있는지를 나타냄
        각 데이터가 원점에서 몇 표준편차만큼 떨어져 있는지를 나타내는 값
    • 훈련 세트의 전처리 방식에 따라, 훈련 세트의 평균과 표준편차를 이용하여 테스트 세트, 새로운 데이터 모두 변환해야 함.
    • 관련 코드:
import numpy as np

mean = np.mean(데이터, axis=0)	# np.mean() 함수는 평균을 계산
std =. p.std(train_input, axis=0)	#np.std() 함수는 표준편차를 계산
					# 각 특성별로 계산해야하므로 axis=0, 행을 따라 각 열의 통계값을 계산하기 위함
데이터_scaled = (데이터 - mean) / std	# 표준점수 계산

 

 

참고:

https://scikit-learn.org/stable/modules/neighbors.html#nearest-neighbors-classification

https://numpy.org/doc/stable/reference/generated/numpy.column_stack.html#numpy-column-stack

https://www.thedatahunt.com/trend-insight/reinforcement-learning

https://ko.wikipedia.org/wiki/K-최근접_이웃_알고리즘


  • 기본 미션: 코랩 실습 화면 캡처하기

 

  • 선택 미션: Ch.02(02-1) 확인 문제 풀고, 풀이 과정 정리하기
1. 머신러닝 알고리즘의 한 종류로서 샘플의 입력과 타깃(정답)을 알고 있을 때 사용할 수 있는 학습 방법은 무엇인가요?
(1) 지도 학습
(2) 비지도 학습
(3) 차원 축소
(4) 강화 학습

정답: (1) 지도 학습

풀이:

(2) 비지도 학습은 정답을 제공하지 않으므로, 예측이 아닌 입력 데이터의 특징을 찾는 데 주로 사용됨.

(3) 차원 축소는 데이터의 차원이 높아질수록 품질이 좋은 데이터의 양이 희소해지는 문제를 피하기 위해 더 좋은 특성으로 데이터를 구성하는 것을 의미.

(4) 강화 학습은 선택 가능한 행동들 중 보상을 극대화하기 위해 어떤 행동을 할지를 선택함.

 

2. 훈련 세트와 테스트 세트가 잘못 만들어져 전체 데이터를 대표하지 못하는 현상을 무엇이라고 부르나요?
(1) 샘플링 오류
(2) 샘플링 실수
(3) 샘플링 편차
(4) 샘플링 편향

정답: (4) 샘플링 편향

풀이: 샘플링 편향(sampling bias)는 샘플링 데이터가 모집단을 대표하지 못하는 경우로, 특정 개인이나 그룹이 샘플링에 더 많이 포함되는 경우를 의미한다.

 

3. 사이킷런은 입력 데이터(배열)가 어떻게 구성되어 있을 것으로 기대하나요?
(1) 행: 특성, 열: 샘플
(2) 행: 샘플, 열: 특성
(3) 행: 특성, 열: 타깃
(4)행: 타깃, 열: 특성0

정답: (2) 행: 샘플, 열: 특성


후기:

확실히 어렵지만 재밌습니다.

우선 다른 머신러닝 관련 책들을 읽을 때는 이걸 왜 해야하지? 무슨 의미가 있지? 싶었는데

이 책은 하나하나 설명해주며, 중간에 생길법한 의문들을 뒤에서 해소해준다!

열심히 해보겠습니다.

반응형