
주어진 데이터를 스스로 학습하여 수치적인 특징을 찾고, 다른 데이터가 주어졌을 때 결과가 되는 데이터를 예측할 수 있는 인공지능 모델을 만드는 것. 통계적 접근법, 경사하강법을 통해 정답과 예측한 값의 차이를 점차 줄여나가는 방식으로 학습하는 것이 특징.
지도 학습은 정답을 학습하고 예측하는 것
비지도 학습의 핵심은 패턴 발견으로 데이터의 숨겨진 구조를 찾는 것
모델이 원하는 형태로 데이터를 제공하기 위한 과정
정규화와 표준화: 특성(Feature) 간의 크기 차이 조정
정규화와 표준화가 필요한 이유:
1) 거리 기반 알고리즘의 성능 향상(KNN, SVM, K-Means, PCA 등)
머신러닝 모델은 숫자의 크기에 민감하여 한 특성이 0~1 사이의 값을 가지는데, 다른 특성이 1~1000 사이의 값을 가진다면 값이 큰 특성이 모델의 예측에 더 큰 영향을 주어 스케일이 더 큰 특성이 더 중요하게 여겨짐
2) 경사하강법(Gradient Descent) 기반의 모델 속도 개선(선형 회귀, 로지스틱 회귀, 신경망), 특성마다 값의 범위가 다르면 최적의 가중치로 수렴하기까지 더 많은 시간이 걸릴 수 있습니다. 쉽게 말해 학습 속도 느려짐.
정규화 또는 표준화가 필요한 모델:
1) 꼭 필요한 모델
거리 기반 알고리즘: KNN, K-Means, SVM
경사하강법 기반 알고리즘: 선형 회귀, 로지스틱 회귀
2) 덜 필요하거나 불필요한 모델
트리 기반 알고리즘: 결정 트리, 랜덤 포레스트, XGBoost
트리 모델은 데이터 스케일에 영향을 받지 않기 때문.
정규화 vs 표준화 비교
| 방법 | 계산 방식 | 값의 범위 | 사용 예시 |
|---|---|---|---|
| 정규화 (Min-Max Scaling) | (값 - 최소값) / (최대값 - 최소값) | 0 ~ 1 | KNN, K-Means, Neural Network |
| 표준화 (Standardization) | (값 - 평균) / 표준편차 | 평균 0, 표준편차 1 | SVM, 선형 회귀, PCA |
Pandas:
Pandas는 고수준 데이터 분석을 위해 만들어진 라이브러리로, 주로 DataFrame과 Series 구조를 사용해서 데이터를 다루며, 다양한 라벨링, 데이터 전처리 및 필터링 기능을 제공한다. 자동으로 데이터의 인덱스나 컬럼명을 관리하고, 데이터 형식이 다양할 수 있어 유연한 처리가 가능하지만, 머신러닝 모델에서 효율적인 수치 연산을 요구하는데는 부적합한 경우가 많다.
-> 추가적인 관리가 가능하지만 이로 인해 메모리 사용이 많고 성능 떨어짐
Numpy:
Numpy는 고성능 수치 연산을 위해 설계된 라이브러리로, 배열 단위의 연산을 매우 빠르게 수행할 수 있도록 최적화되어 있어 배열 구조(Array)와 벡터화 연산을 사용하여 대규모 데이터의 수학적 계산을 효율적으로 처리할 수 있다. 머신러닝 알고리즘은 대부분 행렬 연산이나 벡터 연산을 사용하기 때문에, Numpy 배열은 이러한 연산에 적합하고, 더 나은 성능을 제공한다.
-> C언어로 구현되어 있어 속도 빠르고 메모리 사용 효율적, 단순한 데이터 타입을 다루기 때문에 배열 크기가 커질수록 성능 차이가 두드러짐
결론:
Pandas는 데이터 탐색(EDA)과 분석에 강점을 가진 반면,
Numpy는 수치 연산과 머신러닝 알고리즘의 요구사항에 맞춰 최적화되어 있음.