아무것도 모르는 공대생의 지식 탐험기

[혼공머신]_1주차 나의 첫 머신러닝 & 데이터 다루기 with 코랩 본문

카테고리 없음

[혼공머신]_1주차 나의 첫 머신러닝 & 데이터 다루기 with 코랩

luvm._. 2024. 7. 7. 23:05

 
이번에, 새롭게 혼공단 12기에 참여할 수 있게 되어 기쁜 마음으로 공부를 시작해보도록 하겠습니다 ! :)
 
그러면 빠르게 공부한 내용을 정리해보겠습니다 !
 
- 인공지능과 머신러닝, 딥러닝 

  • 인공지능 ( Artificial Intelligence ) : 사람처럼 학습하고, 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술
  • 머신러닝 ( Machine Learning ) :
    1. 규칙을 하나 하나 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분
    2. 인공지능의 하위 분애 중에서 지능을 구현하기 위한 소프트웨어를 담당하는 핵심 분야
    3. 컴퓨터 과학 분야의 대표적인 머신러닝 라이브러리 : 사이킷런 ( Scikit-learn )
  • 딥러닝 (Deep Learning ) : 
    1. 인간의 뉴런과 비슷한 인공신경망 (artificial neural network)의 방식으로 정보를 처리함
    2. 대표적인 딥러닝 라이브러리 : 구글의 텐서플로 (TensorFlow), 페이스북의 파이토치 (Pytorch)
[그림 출처]    http://scienceon.hani.co.kr/397536

 
코랩 : 구글 계정이 있으면 누구나 사용할 수 있는 웹 브라우저 기반의 파이썬 코드 실행 환경
정확도 : 정확한 답을 몇 개 맞추었는지 백분율로 나타낸 값 (사이킷런에서는 0 ~ 1 사이)
정확도 = (정확히 맞힌 개수 ) / ( 전체 데이터 개수 ) 
 

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

  • 비지도 학습 알고리즘
    학습 알고리즘에 결과물이라고 할 수 있는 출력을 미리 제공하지 않고 인공지능이 입력 세트에서 패턴과 상관관계를 찾아내야 하는 머신러닝 알고리즘이다.

- 훈련 세트와 테스트 세트 : 

  • 훈련 세트 (Train set) : 훈련에 사용되는 데이터이며 훈련 세트가 클수록 좋다
  • 테스트 세트 (Test Set) : 평가에 사용되는 데이터이며, 전체 데이터에서 20% ~ 30% 정도를 테스트 세트로 사용함
  • 예시 코드 : 
#numpy로 배열 만들기
import numpy as np
np.column_stack(튜플 객체)
# np.column_stack 함수는 여러 개의 1차원 배열을 입력으로 받아, 각 배열을 열(column)로 하는 2차원 배열을 생성

from sklearn.model_selection import train_test_split
# train_test_split() 함수는 기본적으로 25%를 테스트 세트로 떼어냄
# 맨 아래 코드에서 data와 target의 두 가지 배열을 입력했으므로 총 4개의 배열을 반환함. 
# random_state 매개변수는 랜덤 시드를 지정 가능
train_input, test_input, train_target, test_target = train_test_split(data, target, random_state=42)

여기서 random_state 란 ? 

  • random_state는 train_test_split 함수에서 일관된 학습/테스트 데이터 세트를 생성하기 위한 난수 값으로, 이를 설정하면 매번 동일한 데이터 분할 결과를 얻을 수 있다. random_state에는 어떤 숫자를 사용해도 그 기능은 동일하며, 이를 설정하지 않으면 함수를 실행할 때마다 다른 데이터 세트가 생성된다. 
  • 샘플링 편향
  • 샘플 (sample) : 데이터 세트의 개별 데이터 
  • 샘플링 편향 ( Sampling bias)  : 훈련 세트와 테스트 세트에 샘플들이 골고루 섞여 있지 않아서 샘플링이 한쪽으로 치우쳐져 있는 경우
  • 훈련 세트와 테스트 세트에는 전체 데이터의 샘플링 편향이 발생하지 않는다
import numpy as np
np.random.shuffle(데이터) #shuffle 함수는 주어진 배열을 무작위로 섞는다

 

  • k-최근접 이웃(k-Nearest Neighbors) 알고리즘
  • 가장 간단한 머신러닝 알고리즘으로, 분류(Classification) 알고리즘이다. 비슷한 특성을 가진 데이터는 비슷한 범주에 속하는 경향이 있다는 가정하에 사용한다.
  • 새로운 데이터에 대한 예측을 가장 가까운 직선거리에 있는 훈련 데이터를 참고하여 결정을 내림.
  • 데이터가 아주 많으면, 직선거리 계산을 위한 많은 메모리와 많은 시간이 필요함
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
kn.fit(train_input, train_target)
kn.score(test_input, test_target)
print(kn.predict([[25,150]]))
  • 데이터 전처리(data preprocessing)
    • 스케일 (scale): 샘플들이 가진 특성의 범위
    • 데이터 전처리: 스케일의 값이 다른 경우, 알고리즘이 올바르게 예측할 수 없어 특성값을 일정한 기준으로 맞추는  일
    • 전처리 방법 중 하나 : 표준점수사용하기
      • 표준점수: : 각 데이터가 원점에서 몇 표준편차만큼 떨어져 있는지지 나타내는 값
      • 분산: 데이터에서 평균을 뺀 값을 모두 제곱한 다음 평균표준점수: 각 데이터가 원점에서 몇 표준편차만큼 떨어져있는지 나타내는 값
      • 표준편차: 분산의 제곱근, 데이터가 분산된 정도
    • 훈련 세트의 전처리 방식에 따라 테스트 세트와 새로운 데이터도 훈련세트의 평균과 표준편차로 변환해서 데이터 스케일을 맞춰줘야 한다.
#표준점수사용하기: 각 데이터가 원점에서 몇 표준편차만큼 떨어져 있는지지 나타내는 값

mean = np.mean(train_input, axis=0) #평균
std = np.std(train_input, axis=0) #표준편차
print(mean, std)

#표준점수, 모든 행에 적용
train_scaled = (train_input - mean) / std

 


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

 
 
선택 미션 : Ch.02(02-1) 확인 문제 풀고, 풀이 과정 정리하기
 

1. 머신러닝 알고리즘의 한 종류로서, 샘플의 입력과 타깃(정답)을 알고 있을 때 사용할 수 있는 학습 방법은 무엇인가요 ? 

(1) 지도 학습
(2) 비지도 학습 
(3) 차원 축소
(4) 강화 학습

 
 
정답 ; (1) 지도 학습
풀이 : 지도 학습은 이미 샘플의 입력과 타깃을 알고 있을 때 새용할 수 있는 방법이다,
 

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

 
정답 : (4) 샘플링 편향 
풀이 : 샘플링 편향은 훈련 세트와 테스트 세트에 샘플들이 골고루 섞여 있지 않아서 샘플링이 한쪽으로 치우쳐져 있는 경우 전체 데이터를 대표하지 못하게 된다.
 

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

 
정답 : (2) 행: 샘플, 열: 특성
풀이 : 사이킷런이 (행: 샘플, 열: 특성) 구조를 사용하는 주된 이유는 데이터 표현의 직관성과 계산 효율성 때문입니다. 이 구조는 각 샘플을 쉽게 추가하거나 처리할 수 있게 하며, 대부분의 머신러닝 알고리즘과 수치 계산 라이브러리에 최적화되어 있어 더 빠른 연산을 가능하게 한다. 
 



 소감 :
처음으로 혼공단에 참여하게 되면서, 제대로 딥러닝과 머신러닝의 개념을 잡고 갈 수 있겠다는 생각이 들어 기쁩니다 !
앞으로도 열심히 참여하겠습니다 ☺️