🧠

머신러닝에 대하여

카테고리
🎮 Artificial Intelligence
작성자
박용성박용성
작성일
2024년 11월 07일
태그
Python
AI

🔍 머신러닝의 개념

 

🔍 선형회귀, 나의 첫 머신러닝

💡
선형 회귀는 회귀 문제를 해결하는 가장 보편적인 알고리즘

💡 분류 문제 vs 회귀 문제

분류, 즉 Classification 문제는 예측 결과값이 이산값인 문제
회귀, 즉 Regression 문제는 예측 결과값이 연속값인 문제
 

📌 Regression 알고리즘의 성능평가 지표 - MSE, RMSE, MAE

회귀 문제를 해결했을 때, 학습된 예측 모델의 성능을 평가할 수 있어야 한다.
  • MSE(평균제곱오차) : 가장 일반적
    • MSE가 작은 머신러닝 모델이 더욱 좋은 머신러닝 모델이라고 판단
  • RMSE : 평균제곱오차에 루트 씌움
  • MAE : 예측값과 정답간의 차이에 절댓값을 취함
 

📌 Scikit-learn

  1. Train/Test Set
  1. Estimator 선언 (선형 회귀 등)
  1. .fit() 함수 호출을 통한 트레이닝
  1. .predict() 함수 호출을 통한 예측
 

🔍 Kaggle 입문

💡 결정 트리

몇몇 입력 변수를 바탕으로 목표 변수의 값을 예측하는 모델 생성
notion image
  • 장점 : 동작과정 직관적, 학습시간 빠름, 개별 특징들을 개별적으로 확인하므로 Feature Normalization 필요 X
  • 단점 : 오버피팅에 빠지기 쉬움
sklearn.tree.DecisionTreeClassifier (분류문제 사용) sklearn.tree.DecisionTreeRegressor (회귀문제 사용)
 

📌 Categorical column vs Numerical Column

  • 범주형 데이터는 값이 [1,2,3], [’내부’, ‘외부’] 와 같이 몇 가지 분류로 한정되는 데이터
  • 수치형 데이터는 값이 숫자 축으로 무한히 위치할 수 있는 데이터
 

📌 preprocessing.LabelEncoder

머신러닝 알고리즘은 string(=object) 형태의 값은 처리할 수 없기 때문에 이를 숫자형 값으로 변경해줘야 함. LabelEncoder 를 이용해 문자 형태의 값을 숫자 형태로 바꿀 수 있음
 

🔍 선형 회귀 알고리즘 (Ridge, Lasso, ElasticNet)

📌 K-Fold Cross Validation (K-Fold 교차 검증)

데이터의 개수가 너무 작을 경우, 트레이닝 데이터와 테스트 데이터가 어떻게 나눠지냐에 따라 학습된 무델과 성능 측정 결과가 크게 달라질 수 있으므로, K-Fold 교차 검증을 시행할 수 있음.
notion image

📌 Feature Engineering

도메인 지식이나 분석을 통해 유의미한 특징들만을 선별해내거나 특징의 형태를 더욱 적합한 형태로 변경
Feature Selection, Normalization, Feature Generation 등이 존재함
 

1️⃣ Feature Selection : 불필요한 특징 제거

→ 상관 분석(Correlation Analysis) 진행 가능
  • 상관 분석 : 두 변수 간에 어떤 선형적 또는 비선형적 관계를 갖고 있는지 연관관계 파악
  • Regression 알고리즘?
 

2️⃣ Feature Normalization

→ 특징 값의 범위를 조정 (0 ~ 5000과 50 ~ 500의 특징 2가지를 정규화)
  1. 일반적으로 정규 분포로 정규화함 → Standardization
  1. Min-Max Scaling 기법도 사용 → MinMaxScaler
 

3️⃣ Feature Generation

→ 특징 값들을 조합해 새로운 특징을 만들어냄
  • PolynomialFeatures : 서로 다른 특징간의 곱셈을 통해 새로운 특징으로 만듦
 

📌 Ridge & Lasso & ElasticNet Regression

기본 선형 회귀는 인풋 데이터의 Feature X에 가중치 w를 곱해 적절한 y를 예측, 여기서 overfitting 발생 가능성
Polynomial Features같은 경우에, Degree를 높이면 (조합 개수) Regularization이 적용되지 않아 오버피팅 가능성 ↑
가중치를 조정하는데 제약을 거는 기법이라고 생각하면 된다.
💡
하이퍼 파라미터 : 알고리즘 디자이너가 설정해야주어야 하는 값
 

🔍 Random Forest

💡
분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종, 훈련 과정에서 구성한 다수의 결정 트리로부터 부류(분류) 또는 평균 예측치(회귀 분석)를 출력함으로써 동작
결정 트리가 나무, 랜덤 포레스트가 숲이라 생각하면 됨
트레이닝 데이터를 다르게 뽑아 여러 결정 트리에 넣은 후, 앙상블 학습
 
많은 하이퍼 파라미터 튜닝을 거치지 않아도 일반적으로 좋은 성능 발휘
병렬 처리를 이용해 여러 개의 트리를 한번에 학습 가능
sklearn.ensemble.RandomForestClassifier (분류) sklearn.ensemble.RandomForestRegressor (회귀)
 

📌 앙상블 러닝 (Ensemble Learning)

💡
여러 개의 분류기의 예측 결과값 간의 투표를 통해 최종 결과값을 만들어내는 기법
notion image
 

🔍 One-hot Encoding

💡
Categorical Value를 Binary Value로 바꿔 표현
  • [개, 고양이, 밀] → [’1 0 0’, ‘0 1 0’, ‘0 0 1’]
  • → 해당 레이블을 나타내는 인덱스만 1의 값을 가지고 나머지는 0을 가진 이진화된 값으로 표현
  • 단순 Integer Encoding의 문제점은 머신러닝 알고리즘이 정수 값으로부터 잘못된 경향성을 학습하게 될 수도 있다. (개 + 밀 / 2 = 고양이) → 잘못된 의미를 학습할 수 있음!
 

📌 이상치 제거 (Remove Outlier)

💡
다른 데이터와 크게 다른 값을 갖는 데이터를 삭제
  • IQR (Inter Quantile Range) 방법을 이용해 이상치 제거
  • 이상치를 제거할 column을 선택하는 데는 상관 분석 사용
    •  

댓글

guest