본문 바로가기
혼공학습단-혼공머신

[혼공머신] 1주차 공부 인증 Ch. 1 & Ch. 2

by 바이오인포하는 tansansoo 2025. 7. 5.

썸네일

Ch. 1과 Ch. 2는 인공지능과 구글 코랩 소개 및 생선 분류를 위한 머신러닝 모델을 만드는 과정을 다루었다.

개념 및 용어 정리

Ch 1. 나의 첫 머신러닝

01-1 인공지능과 머신러닝, 딥러닝
  • 인공지능(Artificial Intelligence, AI): 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술.
    • 강인공지능(인공일반지능): 사람의 지능과 유사한 AI로, 영화 속에서 많이 등장함. 예시로, 미션 임파서블 데드 레코닝·파이널 레코닝에 등장한 엔티티가 있음.
      엔티티
    • 약인공지능: 특정 분야에서 사람을 돕는 보조 AI로, 예시로 음성 비서, 자율 주행 자동차 등.
  • 머신러닝(Machine Learning): 인공지능의 하위 분야로, 데이터에서 스스로 규칙을 학습하는 알고리즘을 연구하는 분야
    • 머신러닝의 대표 라이브러리는 사이킷런으로 사이킷런은 파이썬 API 사용함.
      어떤 머신러닝 알고리즘이 유용성이 증명되고 널리 사용되면 사이킷런 라이브러리에 추가됨
  • 딥러닝(Deep Learning): 딥러닝은 인공신경망을 기반으로 한 머신러닝 분야를 일컬음
    • 대표 라이브러리는 텐서플로와 파이토치가 있음
01-2 코랩과 주피터 노트북
  • 구글 코랩(Colab): 클라우드 기반의 주피터 노트북 개발 환경으로, 웹 브라우저에서 텍스트와 프로그램 코드를 자유롭게 작성 할 수 있는 온라인 에디터.
    구글 계정만 잇으면 누구나 무료로 코랩을 사용할 수 있으며, 노트북은 구글 클라우드의 가상 서버에 연결되어 있음.
     코랩 노트북 화면 상단 오른쪽의 RAM, 디스크 아이콘에 마우스를 올리면 가상 서버 정보를 알 수 있음(아래 사진)

  • 노트북: 코랩의 프로그램 작성 단위이며 코랩 노트북이라고도 부름. 노트북에는 코드, 코드의 실행 결과, 문서를 모두 저장하여 보관할 수 있음
  • 셀(cell): 코랩의 최소 실행 단위로, 코드 셀과 텍스트 셀이 있음
01-3 마켓과 머신러닝
  • 분류(classification) : 머신러닝에서 여러 개의 종류(혹은 클래스) 중 하나를 구별해 내는 문제
  • 이진 분류(binary classification): 2개의 종류(클래스) 중 하나를 고르는 문제를 이진 분류라 함
  • k-최근접 이웃 알고리즘(k-Nearest Neighbors Algorithm, KNN): 가장 간단한 머신러닝 알고리즘 중 하나로 어떤 규칙을 찾기보다는 인접한 샘플을 기반으로 예측을 수행함
k-최근접 이웃 알고리즘이 정답을 판단하는 원리

어떤 데이터에 대한 답을 구할 때 주위의 다른 데이터를 보고 다수를 차지하는 것을 정답으로 사용함(기본값 5개)
즉, 주위의 데이터로 현재의 데이터를 판단함

 

Ch 2. 데이터 다루기

02-1 훈련 세트와 테스트 세트
  • 지도학습(supervised learning): 지도 학습은 입력(데이터)과 타깃(정답)으로 이뤄진 훈련 데이터가 필요하며 새로운 데이터를 예측하는 데 활용함. 1장에서 사용한 k-최근접 이웃이 지도 학습 알고리즘임
  • 비지도학습(unsupervised learning): 타깃 데이터 없이 입력 데이터만 있을 때 사용. 이런 종류의 알고리즘은 정답을 사용하지 않으므로 무언가를 맞힐 수가 없는 대신 데이터를 잘 파악하거나 변형하는 데 도움을 줌

 

  • 훈련 데이터(training data): 지도 학습의 경우 필요한 입력(데이터)과 타깃(정답)을 합쳐 놓은 것
  • 훈련 세트와 테스트 세트(train set와 test set): 모델을 훈련할 때는 훈련 세트를 사용하고 평가는 테스트 세트로 함. 테스트 세트는 전체 데이터에서 20~30%의 비중을 둠
  • 특성: 데이터를 표현하는 하나의 성질

 

  • 샘플링 편향(sampling bias): 훈련 세트와 테스트 세트에 샘플이 고르게 섞여 있지 않을 때 나타나는 현상
  • 넘파이(Numpy): 파이썬의 대표적인 배열(array) 라이브러리로 고차원의 배열을 손쉽게 만들고 조작할 수 있는 간편한 도구를 많이 제공함.

 

02-2 데이터 전처리
  • 데이터 전처리(data preprocessing): 머신러닝 모델에 훈련 데이터를 주입하기 전 가공하는 단계로 특성값을 일정한 기준으로 맞추어 주는 작업. 데이터를 표현하는 기준이 다르면 알고리즘을 올바르게 예측할 수 없음
  • 표준점수: 가장 널리 사용하는 전처리 방법 중 하나로, 각 특성값이 평균에서 표준편차의 몇 배만큼이나 떨어져 있는지 나타냄. 이를 통해 실제 특성값의 크기와 상관없이 동일한 조건에서 비교할 수 있음
  • 브로드캐스팅(broadcasting): 조건을 만족하면 모양이 다른 배열 간의 연산을 가능하게 해 주는 기능.

 

생선 분류를 위한 모델 만들기

Ch 1과 Ch 2에 나온 머신러닝 문제 해결과정을 요약 정리하였다. 책에서는 차근차근 시행착오를 거쳐서 모델을 완성해낸다.

길이와 무게가 측정된 도미와 빙어를 분류할 수 있는 머신러닝 모델을 만들기

 

사용한 머신러닝 모델은 인접한 샘플을 기반으로 예측을 수행하는 k-최근접 이웃 알고리즘(KNN)이다.

 

모델 생성에 앞서, 데이터를 나눌 때 일어날 수 있는 데이터 편향 문제를 고려해야 한다.

이를 위해서 사이킷런 패키지의 train_test_split() 함수를 사용해서 생선 데이터를 훈련 세트와 테스트 세트로 랜덤하게 섞은 후 나누어 데이터 편향 문제를 해결하였다. 만약, 랜덤하게 섞지 않으면 한쪽에만 특정 생선 데이터가 쏠려 모델이 분류를 제대로 수행할 수 없게 된다.

훈련 및 테스트에 사용한 생선 데이터는 무게와 길이라는 두 개의 특성을 가지고 있는데, 산점도를 그려 확인해보았다.

도미와 빙어의 산점도(앞에서 도미 데이터를 추가해서 도미 데이터 추가과정은 생략되었음)

 

산점도에서 x축은 생선 길이, y축은 생선 무게이다. x축의 범위가 10~45(cm) 정도라면 y축은 범위가 0~1000(g)정도까지 되는데 x축과 y축의 값의 범위가 다름을 알 수 있다. 이것을 스케일이 다르다라고 말하며, 이웃한 주변의 샘플 중에서 다수인 클래스를 예측으로 사용 하는 k-최근접 이웃 알고리즘이 올바르게 작동하지 않을 수 있다.

 

따라서, 데이터 속성의 스케일을 비슷하게 바꾸는 데이터 전처리를 수행하여야 한다.

 

데이터 전처리 방식은 흔한 방식으로, 데이터를 표준 점수로 변환하는 표준화 방법으로 수행되었다.

 

표준 점수는 각 특성값이 평균에서 표준편차의 몇 배만큼 떨어져있는지를 나타낸다. 표준 점수를 이용하면 실제 특성값의 크기와 상관없이 동일한 조건으로 값들을 비교할 수 있다.

 

33번째로 실행된 코드 주석에 오타났음 훈련 데이터 입니다.

 

테스트를 진행할 새로운 샘플도 표준 점수로 변환해야 k-최근접 이웃 알고리즘이 올바르게 작동할 수 있다.

 

데이터 전처리를 수행한 후, k-최근접 이웃 모델을 훈련시키고 평가하였다.

 

모델을 평가하기에 앞서, 훈련 세트를 변환한 방식 그대로 테스트 세트도 변환했다.

이는 모델에 학습 및 테스트 시킬 데이터를 표현하는 기준이 다르면 알고리즘이 올바르게 예측할 수 없기 때문이다.

만약, 변환하지 않는 다면 특성값이 엉뚱하게 변환되어 훈련 세트로 훈련된 모델이 제대로 동작하지 않을 수 있다.

 

score() 메서드로 모델의 정확도를 평가하였을 때, 정확도가 100%로 나왔고, 김 팀장의 새로운 샘플로 모델의 예측을 출력하였을 때 정답인 도미로 나왔다(모델에서 도미가 1이다).

 

kneighbors() 함수로 김 팀장의 새로운 샘플의 k-최근접 이웃을 산점도를 통해 확인해보았다.

 

삼각형이 김 팀장의 새로운 생선 데이터이고, 마름모가 새로운 생선 데이터에 이웃한 5 개의 클래스이다. 이웃한 5개의 클래스가 모두 도미 샘플이기 때문에, 모델은 새로운 생선 데이터가 도미라고 예측하였다. 


기본 숙제

코랩 실습 화면 캡쳐하기

 

코랩 실습 화면

추가 숙제

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

 

정답은 1번 지도학습으로, 샘플의 입력과 정답이 준비되어 있고 샘플의 양이 많지 않을때 사용할 수 있다.

 

2. 훈련 세트와 테스트 세트가 잘못 만들어져 전체 데이터를 대표하지 못하는 현상을 무엇이라고 부르나요?

 

정답은 4번 샘플링 편향이다. 훈련 세트와 테스트 세트에 샘플이 고르게 섞여 있지 않을 때 나타나는 현상을 샘플링 편향이라 부르며 샘플링 편향이 발생한 경우 제대로 된 지도 학습 모델을 만들 수 없다.

 

3. 사이킷런은 입력 데이터(배열)가 어떻게 구성되어 있을 것으로 기대하나요?

 

정답은 2번, 사이킷런은 입력 데이터가 2차원의 리스트로 구성되어 있어야 합니다.

가로인 행은 샘플, 세로인 열은 특성이 위치한다고 가정합니다. 

보라색 사각형이 샘플, 주황색 타원이 특성

 

 

4. 다음 중 배열 arr에서 두 번째 원소에서부터 다섯 번째 원소까지 선택하기 위해 올바르게 슬라이싱 연산자를 사용한 것은 무엇인가요?

 

정답은 3번 arr[1:5]이다. 슬라이싱 연산자를 사용해서 원소를 선택할 때에는 헷갈리지 않게 주의해야 한다. 배열에서 첫 번째 인자로는 선택할 첫 원소의 인덱스를 입력해야 한다. 인덱스는 0부터 시작하므로 두 번째 원소면 인덱스는 1이 된다. 그리고 두번째 인자로는 선택할 마지막 N 번째 원소의 다음 원소(N+1 번째 원소)의 인덱스를 입력해야 한다. 인덱스는 0부터 시작하므로 다섯 번째 원소의 인덱스는 4가 된다. N+1 번째 원소의 인덱스를 입력해야 하므로 두 번째 인자에 들어갈 인덱스는 5가 된다. 따라서 두 번째 원소에서부터 다섯 번째 원소까지 선택하기 위해서는 arr[1:5]을 입력해야 한다.