hy30nq's blog

[혼공머신 / 1주차] 인공지능부터 k-최근접 이웃(KNN)까지, 머신러닝 핵심 개념 총정리 본문

대외 활동/혼공학습단

[혼공머신 / 1주차] 인공지능부터 k-최근접 이웃(KNN)까지, 머신러닝 핵심 개념 총정리

hy30nq 2025. 1. 9. 19:47
728x90

1. 인공지능(AI) 기본 개념

인공지능(Artificial Intelligence, AI)은 ‘사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템’을 만드는 기술을 뜻합니다.

  • 인공 일반 지능(Artificial General Intelligence, AGI) 또는 강 인공지능(Strong AI): 사람과 유사한 지능 전반의 능력을 갖춘 AI
  • 약 인공지능(Weak AI): 특정 문제 해결에 특화된 AI

오늘날 실무에서 활용되는 대부분의 AI는 약 인공지능에 속합니다.


2. 머신러닝(Machine Learning)이란?

머신러닝은 주어진 데이터로부터 패턴(규칙)을 자동으로 학습하는 알고리즘을 연구하는 분야입니다.

  • 프로그래머가 직접 모든 규칙을 작성하지 않아도, 데이터에서 규칙을 자동으로 학습하는 것을 목표로 합니다.
  • 대표적인 라이브러리: 사이킷런(Scikit-learn)

3. 딥러닝(Deep Learning)이란?

딥러닝은 머신러닝 알고리즘 중 인공 신경망(Artificial Neural Network)을 기반으로 한 방법들을 통칭합니다.

  • 기존 머신러닝 방식보다 은닉층(Hidden Layer)이 여러 개인 모델을 사용하여 복잡한 패턴을 학습
  • 대표적인 딥러닝 라이브러리: 텐서플로우(TensorFlow), 파이토치(PyTorch)

4. 케글(Kaggle) 소개

케글(Kaggle)은 전 세계 머신러닝, 데이터 사이언스 경진대회가 열리는 플랫폼입니다.

  • 다양한 데이터셋과 문제를 접할 수 있으며, 실전 경험을 쌓기에 최적의 환경

5. 이진 분류(Binary Classification)란?

머신러닝에서 분류(Classification) 문제는 여러 개의 클래스 중 하나를 예측하는 작업을 말합니다.

  • 클래스가 2개(예: 스팸 메일/정상 메일)인 경우를 이진 분류(Binary Classification)라고 합니다.

※ 여기서 파이썬의 class 개념과는 다른, “범주(카테고리)”의 개념입니다.


6. k-최근접 이웃(k-Nearest Neighbors, KNN)

k-최근접 이웃(KNN) 알고리즘은 새로운 데이터가 들어왔을 때, 기존 데이터 중 가장 가까운 k개의 이웃을 찾아 그 이웃들이 어떤 클래스에 속하는지 투표하여 분류하는 방식입니다.

  • 장점: 구현이 간단하고, 직관적입니다.
  • 단점: 데이터가 매우 많은 경우, 거리 계산 비용이 커집니다.

k-최근접 이웃 예시

from sklearn.neighbors import KNeighborsClassifier

kn = KNeighborsClassifier(n_neighbors=5)  # 기본 이웃 수는 5
kn.fit(X_train, y_train)
print(kn.score(X_test, y_test))  # 정확도(accuracy) 확인
  • n_neighbors: 사용할 이웃의 개수 (기본값 5)
  • p: 거리 측정 방식을 지정 (1: 맨해튼 거리, 2: 유클리디안 거리)
  • n_jobs: 사용할 CPU 코어 수 (-1이면 모든 코어 사용)

7. 파이썬 필수 함수와 라이브러리

7.1 zip() 함수

  • 여러 개의 리스트에서 원소를 하나씩 꺼내 묶어주는 함수
    length = [10, 20, 30]
    weight = [100, 200, 300]
    fish_data = [[l, w] for l, w in zip(length, weight)]
    # fish_data = [[10, 100], [20, 200], [30, 300]]

7.2 matplotlib

  • matplotlib는 파이썬에서 가장 널리 사용되는 시각화 라이브러리
  • scatter(x, y, c=색상, marker=마커) 등 다양한 그래프 기능 제공

7.3 넘파이(NumPy)

  • 파이썬 대표 배열(array) 라이브러리
  • 배열 인덱싱, 슬라이싱, 브로드캐스팅 등 고성능 연산 지원
  • 주요 함수: arange(), array(), column_stack(), concatenate()

8. 모델 훈련, 예측, 평가 흐름

머신러닝에서 모델은 세 단계를 거쳐서 사용합니다.

  1. 훈련(Training): fit(X_train, y_train)
  2. 예측(Prediction): predict(X_test)
  3. 평가(Evaluation): score(X_test, y_test)
    • 정확도(accuracy): 전체 예측 중 정답과 일치하는 비율

9. 지도학습 / 비지도학습 / 강화학습

  1. 지도학습(Supervised Learning)
    • 입력 데이터와 그에 대한 정답(타깃)이 주어진 상태에서 학습
    • 예: 분류(Classification), 회귀(Regression)
  2. 비지도학습(Unsupervised Learning)
    • 정답(타깃) 없이 입력 데이터만으로 패턴을 학습
    • 예: 군집화(Clustering), 차원 축소(Dimensionality Reduction)
  3. 강화학습(Reinforcement Learning)
    • 정답 대신 행동 결과로 인한 보상을 통해 학습
    • 예: 알파고(AlphaGo), 게임 AI

10. 데이터 전처리(스케일링, 표준점수 등)

머신러닝 모델(특히 거리 기반 모델)은 특성(feature)들의 값 범위가 크게 다르면 성능이 떨어질 수 있습니다. 이를 방지하기 위해 데이터 전처리가 필수적입니다.

  • 표준점수(Standard Score, z-score)
    [
    z = \frac{x - \mu}{\sigma}
    ]
    • (\mu): 해당 특성의 평균
    • (\sigma): 해당 특성의 표준편차
    • 반드시 훈련 세트의 평균과 표준편차로 테스트 세트도 스케일링해야 합니다.

11. scikit-learn 주요 함수와 예시

11.1 train_test_split()

  • 훈련 세트와 테스트 세트를 나누는 함수
  • test_size로 테스트 세트 비율(기본 0.25) 결정
  • shuffle=True로 무작위 섞기 가능
  • stratify 인자로 타깃 데이터를 넣으면 클래스 비율에 맞추어 분리 가능

11.2 kneighbors()

  • KNN 모델에서 가장 가까운 이웃을 직접 확인하기 위한 메서드
  • return_distance=True (기본값): 거리와 인덱스 반환
  • return_distance=False: 이웃 인덱스만 반환

12. 테스트 세트 스케일 조정 시 주의 사항 (확인 문제 2-2-2)

질문: 테스트 세트의 스케일을 조정하려고 합니다. 어떤 데이터의 통계 값을 사용해야 하나요?
선택지:

  1. 훈련 세트
  2. 테스트 세트
  3. 전체 데이터

정답:
1번 ‘훈련 세트’의 통계 값(평균, 표준편차 등)을 사용해야 합니다.

  • 테스트 세트 자체의 통계로 스케일링을 진행하면 데이터 누출(Data Leakage) 문제가 발생할 수 있습니다.
  • 전체 데이터의 통계를 사용하는 것도 부적절합니다. 테스트 세트는 모델 평가를 위해 따로 분리해 두어야 하므로 학습 단계에 포함되면 안 됩니다.

13. 정리 및 결론

이번 글에서는 인공지능(AI) 기본 개념부터 머신러닝, 딥러닝, 그리고 k-최근접 이웃(KNN) 알고리즘까지 폭넓은 개념들을 살펴보았습니다. 특히 실무에서 많이 사용하는 scikit-learn의 주요 함수(train_test_split, KNeighborsClassifier, kneighbors)와 데이터 전처리(표준점수, 스케일링 등)의 중요성을 강조했습니다.

마지막으로 테스트 세트 스케일 조정 시 주의 사항을 통해, 모델 평가에 사용되는 데이터는 훈련 과정에서 얻은 통계(평균, 표준편차)로만 스케일링해야 한다는 점을 배웠습니다. 이는 머신러닝 모델의 일반화 성능을 올바르게 측정하기 위해 꼭 지켜야 할 핵심 원칙입니다.


메타설명(Meta Description) 예시

인공지능(AI)의 개념부터 머신러닝, 딥러닝, k-최근접 이웃(KNN) 알고리즘까지 핵심 개념을 한 번에 정리합니다. scikit-learn의 주요 함수와 데이터 전처리(스케일링, 표준점수) 주의사항까지 놓치지 마세요!


더 읽어볼 거리


기본 숙제 & 추가 숙제

 

 

  • 정답: ① 지도 학습
  • 설명: 입력 데이터와 함께 정답(라벨)을 사용하여 모델을 학습시키는 방식

 

  • 정답: ④ 샘플링 편향

 

  • 정답: ② 행: 샘플, 열: 특성
  • 설명: Scikit-learn에서는 데이터의 행은 각 샘플을 나타내고, 열은 각 샘플의 feature을 나타냅니다. 이를 통해 모델이 각 특성을 기반으로 샘플을 학습하거나 예측 가능

 

 


본 포스팅이 인공지능, 머신러닝, 딥러닝 기초 지식을 잡는 데 도움이 되길 바랍니다!
궁금한 점이 있다면 언제든지 댓글로 남겨주세요.

728x90