hy30nq's blog
[혼공머신 / 1주차] 인공지능부터 k-최근접 이웃(KNN)까지, 머신러닝 핵심 개념 총정리 본문
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. 모델 훈련, 예측, 평가 흐름
머신러닝에서 모델은 세 단계를 거쳐서 사용합니다.
- 훈련(Training):
fit(X_train, y_train)
- 예측(Prediction):
predict(X_test)
- 평가(Evaluation):
score(X_test, y_test)
- 정확도(accuracy): 전체 예측 중 정답과 일치하는 비율
9. 지도학습 / 비지도학습 / 강화학습
- 지도학습(Supervised Learning)
- 입력 데이터와 그에 대한 정답(타깃)이 주어진 상태에서 학습
- 예: 분류(Classification), 회귀(Regression)
- 비지도학습(Unsupervised Learning)
- 정답(타깃) 없이 입력 데이터만으로 패턴을 학습
- 예: 군집화(Clustering), 차원 축소(Dimensionality Reduction)
- 강화학습(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번 ‘훈련 세트’의 통계 값(평균, 표준편차 등)을 사용해야 합니다.
- 테스트 세트 자체의 통계로 스케일링을 진행하면 데이터 누출(Data Leakage) 문제가 발생할 수 있습니다.
- 전체 데이터의 통계를 사용하는 것도 부적절합니다. 테스트 세트는 모델 평가를 위해 따로 분리해 두어야 하므로 학습 단계에 포함되면 안 됩니다.
13. 정리 및 결론
이번 글에서는 인공지능(AI) 기본 개념부터 머신러닝, 딥러닝, 그리고 k-최근접 이웃(KNN) 알고리즘까지 폭넓은 개념들을 살펴보았습니다. 특히 실무에서 많이 사용하는 scikit-learn의 주요 함수(train_test_split
, KNeighborsClassifier
, kneighbors
)와 데이터 전처리(표준점수, 스케일링 등)의 중요성을 강조했습니다.
마지막으로 테스트 세트 스케일 조정 시 주의 사항을 통해, 모델 평가에 사용되는 데이터는 훈련 과정에서 얻은 통계(평균, 표준편차)로만 스케일링해야 한다는 점을 배웠습니다. 이는 머신러닝 모델의 일반화 성능을 올바르게 측정하기 위해 꼭 지켜야 할 핵심 원칙입니다.
메타설명(Meta Description) 예시
인공지능(AI)의 개념부터 머신러닝, 딥러닝, k-최근접 이웃(KNN) 알고리즘까지 핵심 개념을 한 번에 정리합니다. scikit-learn의 주요 함수와 데이터 전처리(스케일링, 표준점수) 주의사항까지 놓치지 마세요!
더 읽어볼 거리
기본 숙제 & 추가 숙제
- 정답: ① 지도 학습
- 설명: 입력 데이터와 함께 정답(라벨)을 사용하여 모델을 학습시키는 방식
- 정답: ④ 샘플링 편향
- 정답: ② 행: 샘플, 열: 특성
- 설명: Scikit-learn에서는 데이터의 행은 각 샘플을 나타내고, 열은 각 샘플의 feature을 나타냅니다. 이를 통해 모델이 각 특성을 기반으로 샘플을 학습하거나 예측 가능
본 포스팅이 인공지능, 머신러닝, 딥러닝 기초 지식을 잡는 데 도움이 되길 바랍니다!
궁금한 점이 있다면 언제든지 댓글로 남겨주세요.
'대외 활동 > 혼공학습단' 카테고리의 다른 글
[혼공머신 / 2주차] 머신러닝 회귀 알고리즘 완벽 가이드: K-최근접 이웃부터 선형 회귀, 릿지와 라쏘까지 (0) | 2025.01.19 |
---|---|
[혼공네트] 5주차_정리 (0) | 2024.08.10 |
[혼공네트] 4주차_정리 (0) | 2024.07.25 |
[혼공네트] 3주차_정리 (0) | 2024.07.19 |
IPv4의 대표적인 기능과 라우팅 프로토콜에 대해서 (0) | 2024.07.16 |