-> 사람이 하는 모든 일을 기계가 대체하는 것.
Weak AI - 현재의 대부분의 Ai 모델들
Strong AI - 인간과 동일한 수준의 지능을 갖고 자율적으로 사고하며 문제를 해결할 수 있는 ai
Artificial Super Intelligence, ASI - 스스로 목표를 설정하여 지식을 강화하는 인공지능
AI > ML > DL
정답(label)이 포함된 데이터를 학습하여 새로운 데이터의 결과를 예측
| 분류 | 설명 | 대표 알고리즘 |
|---|---|---|
| 분류 (Classification) | 데이터를 정해진 범주(Category) 중 하나로 분류 | 로지스틱 회귀, 결정 트리(DT), 랜덤 포레스트(RF), SVM, XGBoost, LightGBM |
| 회귀 (Regression) | 연속적인 숫자 값을 예측 (예: 집값, 주가) | 선형 회귀, 릿지(Ridge), 라쏘(Lasso), 엘라스틱넷, 회귀 트리 |
| 앙상블 (Ensemble Learning) | 여러개의 개별모델을 결합하여 더 강력한 예측모델을 만드는 방법 | Voting, Bagging, Boosting, Stacking |
-> 학습데이터로 사용하는 데이터 안에, 어떤 데이터를 바탕으로 어떤 값이 결론으로 나온다는 정답이 들어가야 한다.
-> 예측 결과를 기반으로 모델의 성능을 평가하고, 성능을 최적화한다.
-> 지도 학습은 주어진 정답이 있으므로 모델 성능이 더 높지만, 정답 데이터가 없으면 학습할 수 없다는 단점을 가진다.
Task:
(1) 분류 (Classification) - 입력 데이터를 주어진 클래스(label)로 분류하는 문제 (예: 스팸 이메일 분류, 이미지 분류 등) -> 이상값 형태로 예측. 결과값이 학습데이터 안에만 있는 결과값만 나옴.
(2) 회귀 (Regression) - 연속적인 값을 예측하는 문제 (예: 주택 가격 예측, 주식 가격 예측 등) -> 결과가 연속값 형태로 예측, 학습데이터안에 값이 있을수도, 없을수도..
정답(Label)이 없을 때 사용하는 방식, 정답이 없는 데이터를 받아 데이터가 어떻게 구성되었는지(어떠한 특성을 바탕으로 하는지)를 직접 찾아 학습하는 방식 -> 정답(Label) 없이 데이터 자체의 패턴이나 구조를 발견
| 분류 | 설명 | 대표 알고리즘 |
|---|---|---|
| 군집화 (Clustering) | 유사한 특성을 가진 데이터끼리 그룹화 | K-평균(K-Means), DBSCAN, 계층적 군집화 |
| 차원 축소 (Dimension Reduction) | 데이터의 특성 수를 줄이면서 핵심 정보 유지 | PCA(주성분 분석), LDA, t-SNE, UMAP |
| 연관 규칙 (Association Rule) | 데이터 간의 상관관계 발견 (장바구니 분석) | Apriori, FP-Growth |
(1) 군집화 (Clustering) - 비슷한 특성을 가진 데이터끼리 그룹화하는 문제 (예: 고객 세분화 등) -> 데이터 통으로 주고 너가 생각할때 비슷한 애들끼리 그룹화 해.
(2) 차원축소 (Dimension Reduction) - 데이터의 차원을 축소해 시각화하거나, 계산량을 줄이는 기법 (예: PCA(주성분 분석) 등) -> 데이터의 차원을 축소, 핵심특징만 남기고 복잡도 줄임
차원 축소 기법은 '정답(Label)의 유무'와 '데이터를 직선으로 파악하는지(선형/비선형)'에 따라 다음과 같이 구분된다.
| 기법명 | 학습 유형 | 선형/비선형 | 핵심 목적 |
|---|---|---|---|
| PCA (주성분 분석) | 비지도 학습 | 선형 | 데이터의 분산(Variance)을 최대한 보존하며 축소 |
| LDA (선형 판별 분석) | 지도 학습 | 선형 | 클래스(정답) 간의 차이를 최대화하며 축소 |
| LLE (지역 선형 임베딩) | 비지도 학습 | 비선형 | 이웃 데이터들 간의 국소적 관계를 유지하며 축소 |
정답대신 보상(Reward)를 통해 학습하는 방식. 에이전트(컴퓨터) 가 특정 환경에서 행동을 하고, 그 결과에 따라 상이나 벌을 받으며 최적의 행동 순서를 스스로 찾아냄. (시행착오를 통해 최적의 행동을 찾게 됨) -> 에이전트가 환경과 상호작용하며 보상(Reward)을 최대화하는 방향으로 학습
e.g) 자율주행, 게임 AI 등..
| 분류 | 설명 | 대표 알고리즘 |
|---|---|---|
| 강화 학습 | 행동에 따른 보상을 통해 최적의 정책 학습 | Q-Learning, DQN, PPO, A3C |
머신러닝은 해결하려는 문제의 성격(데이터의 정답 유무 등)에 따라 크게 세가지 task로 구분됨.
| 모델명 | 설명 |
|---|---|
| 로지스틱 회귀 (Logistic Regression) | 이진 또는 다중 클래스 확률 기반 분류, 출력은 특정 클래스에 속할 확률로 나타남. |
| K-최근접 이웃 (K-Nearest Neighbors, KNN) | 가장 가까운 K개의 이웃을 기반으로 클래스를 예측하는 모델. 데이터의 분포에 따라 성능이 크게 달라질 수 있음. |
| 서포트 벡터 머신 (Support Vector Machine, SVM) | 클래스 간의 최대 마진을 찾는 분류 모델로, 고차원 데이터에서도 잘 동작함. |
| 결정 트리 (Decision Tree) | 의사결정 규칙을 시각화할 수 있는 트리 구조로 분류. 이해와 해석이 쉬우나, 과적합에 취약할 수 있음. |
| 랜덤 포레스트 (Random Forest) | 여러 결정 트리를 결합해 예측하는 앙상블 모델로, 과적합을 방지하고 성능을 향상시킴. |
| 나이브 베이즈 (Naive Bayes) | 조건부 확률 기반 분류 모델로, 가정이 간단하고 계산 효율이 높아 텍스트 분류 등에 자주 사용됨. |
| 그래디언트 부스팅 머신 (Gradient Boosting Machine, GBM) | 이전 트리의 오차를 줄이는 방식으로 여러 트리를 결합해 성능을 향상시키는 모델. XGBoost, LightGBM 등이 대표적. |
| 모델명 | 설명 |
|---|---|
| 선형 회귀 (Linear Regression) | 독립 변수와 종속 변수 간의 선형 관계를 가정하여 값을 예측하는 모델 |
| 다중 선형 회귀 (Multiple Linear Regression) | 여러 독립 변수를 사용해 종속 변수의 값을 예측하는 선형 모델 |
| 릿지 회귀 (Ridge Regression) | 과적합을 방지하기 위해 L2 정규화(term)를 추가한 선형 회귀 모델 |
| 라쏘 회귀 (Lasso Regression) | 과적합을 방지하기 위해 L1 정규화(term)를 추가한 선형 회귀 모델 |
| 다항 회귀 (Polynomial Regression) | 독립 변수와 종속 변수 간의 비선형 관계를 나타낼 때 사용하는 회귀 모델 |
| 그래디언트 부스팅 회귀 (Gradient Boosting Regression) | 회귀 문제에 적합한 앙상블 학습 모델로, 여러 약한 학습기를 결합해 성능을 향상시키는 방식. XGBoost, LightGBM 등 사용. |
| 모델명 | 설명 |
|---|---|
| K-평균 군집화 (K-Means Clustering) | 데이터를 K개의 군집으로 나누어 각 군집의 중심과 가까운 데이터를 그룹화하는 군집화 기법. |
| 계층적 군집화 (Hierarchical Clustering) | 데이터 간의 거리를 측정해 계층적으로 군집을 형성하며, 트리 구조로 시각화 가능. |
| DBSCAN (Density-Based Spatial Clustering of Applications with Noise) | 밀도 기반의 군집화 기법으로, 밀집된 군집과 잡음을 구분함. 비정형 데이터에 강한 성능을 보임. |
| 주성분 분석 (PCA, Principal Component Analysis) | 차원을 축소해 데이터의 주요 성분을 추출하는 기법으로, 데이터 시각화나 차원 축소에 사용됨. |
| t-SNE (t-distributed Stochastic Neighbor Embedding) | 고차원의 데이터를 2차원 또는 3차원으로 변환해 데이터의 분포를 시각화하는 비지도학습 기법. |
| UMAP (Uniform Manifold Approximation and Projection) | 차원 축소 기법으로, t-SNE와 유사하지만 더 빠르고 정확한 성능을 제공함. |
| GAN (Generative Adversarial Network) | 생성자와 판별자와의 경쟁 속에서 더 나은 데이터 샘플을 만들어 내는 방식. 이미지 생성, 데이터 증강에 효과적. |
| 단계 |
|---|
| 1. 데이터 수집 |
| 2. EDA |
| 3. 데이터 전처리 |
| 4. 데이터 분류 |
| 5. 모델 선정 |
| 6. 학습 |
| 7. 평가 |
데이터 로드 및 정제 : 데이터베이스, API, 웹 크롤링 등을 통해 원천 데이터를 확보합니다.
데이터 확인 (EDA)
X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, train_size=0.8, shuffle=False, stratify=iris_data.label, random_state=11)
💡 하이퍼파라미터 (Hyperparameter) vs 파라미터 (Parameter)
파라미터는 모델이 공부하면서 스스로 최적값을 찾아가는 과정임. 우리가 직접 건드릴 수 없음.
하이퍼파라미터는 우리가 직접 설계하고 입력해야 하는 값. 모델이 성능이 안 나온다면, 우리는 파라미터를 고치는 게 아니라 하이퍼파라미터를 수정(Tuning)해야 함. 즉, '어디를 고쳐야 할지' 알기 위해 구분해야 함.
-> 예를 들어, 결정 트리(Decision Tree)에서 max_depth(트리 깊이)라는 하이퍼파라미터를 너무 크게 잡으면 모델이 데이터에 너무 집착해서 과적합(Overfitting)이 발생한다. 모델의 공부 방식을 제어하는 브레이크 역할을 내가 쥐고 있다는 뜻.
| 구분 | 하이퍼파라미터 (Hyperparameter) | 파라미터 (Parameter) |
|---|---|---|
| 결정 주체 | 사용자(사람)가 직접 설정 | 모델이 학습을 통해 스스로 결정 |
| 특징 | 모델 학습 전에 미리 설정됨 | 학습 과정에서 데이터에 의해 업데이트됨 |
| 목적 | 학습 알고리즘의 동작 방식을 제어 | 데이터의 패턴을 표현 |
| 예시 | 학습률(Learning Rate), 트리 깊이, K값 | 선형 회귀의 가중치(w), 편향(b) |
| 비유 | 공부할 때 쓰는 '학습 계획표/환경' | 머릿속에 쌓이는 '지식/경험' |
대부분의 알고리즘은 파이썬의 대표적인 머신러닝 라이브러리인 Scikit-learn에서 제공하며, 일부 고성능 모델이나 생성 모델은 전용 라이브러리를 사용함.
| 모델명 | 설명 | 라이브러리 |
|---|---|---|
| 로지스틱 회귀 | 이진 또는 다중 클래스 확률 기반 분류 | Scikit-learn |
| KNN | 가까운 K개의 이웃 기반 예측 | Scikit-learn |
| SVM | 클래스 간 최대 마진을 찾는 모델 | Scikit-learn |
| 결정 트리 | 의사결정 규칙을 트리 구조로 시각화 | Scikit-learn |
| 랜덤 포레스트 | 여러 결정 트리를 결합한 앙상블 모델 | Scikit-learn |
| XGBoost / LightGBM | 성능이 뛰어난 그래디언트 부스팅 계열 | 별도 라이브러리 |
| 모델명 | 설명 | 라이브러리 |
|---|---|---|
| 선형 회귀 | 독립-종속 변수 간 선형 관계 예측 | Scikit-learn |
| 릿지 / 라쏘 | 과적합 방지를 위한 정규화 회귀 모델 | Scikit-learn |
| 다항 회귀 | 비선형 관계를 나타내기 위한 모델 | Scikit-learn |
| GBM 회귀 | 부스팅 방식을 회귀 문제에 적용 | Scikit-learn/별도 |
차원 축소 모델은 학습 유형(지도/비지도)과 데이터의 선형성 유지 여부에 따라 다음과 같이 구분된다.
| 모델명 | 분류 (학습 유형) | 선형/비선형 | 설명 | 라이브러리 |
|---|---|---|---|---|
| K-Means / DBSCAN | 군집화 | - | 데이터를 유사한 그룹으로 묶음 | Scikit-learn |
| PCA | 차원 축소 (비지도) | 선형 | 데이터 분산을 최대화하는 방향으로 축소 | Scikit-learn |
| LDA | 차원 축소 (지도) | 선형 | 클래스 간 분별력을 최대화하도록 축소 | Scikit-learn |
| LLE | 차원 축소 (비지도) | 비선형 | 이웃 간의 국소적 구조를 보존하며 축소 | Scikit-learn |
| t-SNE | 차원 축소 (비지도) | 비선형 | 고차원 데이터 시각화에 최적화된 기법 | Scikit-learn |
| UMAP | 차원 축소 (비지도) | 비선형 | t-SNE보다 빠르고 전역 구조를 잘 보존함 | 별도 (umap-learn) |
| GAN | 데이터 생성 | - | 가짜 데이터를 생성하는 생성 모델 | 딥러닝 (PyTorch 등) |