무냐의 개발일지

[Python] 머신러닝 절차 본문

데싸 추가 독학

[Python] 머신러닝 절차

무냐코드 2024. 2. 11. 12:14

* 머신러닝

- 수학, 통계학, 프로그래밍 등의 지식이 필요하기 때문에 초기 학습이 어렵고 복잡합니다. 그러나 최근에는 머신러닝을 사용하기 쉽게 만들어주는 간단한 라이브러리와 도구들이 많이 개발되어 있기 때문에 상대적으로 쉽게 접근할 수 있습니다.

 

* 딥러닝

- AI 를 구현하기 위한 머신러닝 중 하나가 딥러닝

- 딥러닝은 성능이 너무 뛰어나서, 따로 떼어 얘기한다. 머신러닝은 보통 딥러닝을 제외한 나머지 개념이다.

 

  1. 지도학습 : 데이터가 어떻게 생긴건지 라벨링하는 거 → 그에 따라 새로운 데이터를 분류, 회귀 분석 → 이진 분류/ 다중 분류 | 연속된 숫자 값 예측 (가격, 수요 예측)
  2. 비지도학습 : 군집화 & 차원축소 → 라벨링은 아니지만 비슷한 데이터끼리 묶어놓는다 (차원축소 : 많은 컬럼을 축약하는 것)
  3. 강화학습 : 알파고처럼, 환경 속 보상을 통해 학습

 

  • 과소적합(Underfitting) : 모델이 데이터를 충분히 학습하지 못하여, 복잡한 패턴을 파악하지 못하는 상태를 의미
  • 과대적합(Overfitting) : 모델이 학습 데이터에 지나치게 맞추어져 일반화 성능이 떨어지는 상태를 의미합니다.

 

| 머신러닝 절차

 

  1. 문제정의 : 무엇을 예측해야 하는가? 회귀/분류? 평가방식은? ( (분류: 예측의 정확도로 모델을 판별하기도 한다)  ex) 마감인지/ 아닌지 : 분류, 집값 예측 : 회귀
  2. EDA : 데이터 크기 확인, 결측치, 분류(예측하려는 target(label)의 비율), 컬럼 type, 수치형데이터, 범주형데이터
  3. 데이터전처리 : 결측치 (컬럼 삭제, 최빈값으로 채우기, 행을 삭제), 이상치 (1.5*IQR, Z-score 등), feature 선택 및 스케일링, 인코딩 수행
    • 수치형데이터(표준화, 정규화) :  스케일링 ex) MinMaxScaler, RobustScaler
    • 범주형데이터(숫자로 변경) : 인코딩 ex).레이블 인코딩 ( 1,2,3,…), 원핫 인코딩 (값별 컬럼을 만들어 1,0 으로만 나누는 것)
  4. 모델선택 및 학습 :
  • Train/ Validation 나누기 (학습용/ 검증용 데이터를 나눈다 - 7:3 , 8:2 정도로 나눈다)

- train으로 모델을 훈련

 

 

   5. 교차검증  : K-Fold, Stratified Kfold 등의 기법을 사용

- validation으로 모델 성능을 확인

- test 데이터로 최종 예측을 완료한다

 

  • 모델 선택 : 분류문제, 회귀문제별 다른 모델을 쓴다

 


1. 데이터 로딩:

  • 먼저, 주어진 데이터를 로드합니다. 보통 train와 test는 별도의 파일로 제공됩니다.

 

2. 훈련 데이터와 테스트 데이터 분리:

  • 일반적으로, 데이터의 약 70-80%를 훈련에 사용하고, 나머지 20-30%를 테스트에 사용합니다. 
  • 이 과정에서 데이터를 무작위로 섞는 것이 중요합니다. 데이터가 무작위로 섞이면 모델이 특정 패턴에 치우치는 것을 방지.

train 70%, test 20%, validation 10%

 

test, validation 용어는 가끔 혼동되어 쓰이기도 한다

 

3. 독립 변수(X)와 종속 변수(y) 구분: (train, validation세트에서 모두 X,y를 구분하여 모델을 훈련, 평가한다)

  • 훈련 데이터와 테스트 데이터 모두 독립 변수(X)와 종속 변수(y)로 나뉩니다. 독립 변수는 모델에 입력되는 변수이며, 종속 변수는 모델이 예측하려는 값입니다.

 

4. training data로 모델 훈련:

  • 훈련 데이터(X_train, y_train)를 사용하여 모델을 훈련합니다.
  • 모델은 독립 변수(X_train)와 종속 변수(y_train) 사이의 관계를 학습합니다

4-1. 모델 평가:

  • 테스트 데이터(X_test)를 사용하여 모델의 성능을 평가합니다. 모델이 예측한 값과 실제 값 사이의 차이를 계산하여 모델의 성능을 평가합니다.

 

 

5. 훈련 데이터를 다시 훈련(train)과 검증(validation)으로 분리:

  • 훈련 데이터를 또 다시 훈련(train)과 검증(validation) 세트로 분리합니다.
  • 훈련(train) 세트는 모델을 훈련시키는 데 사용되고, 검증(validation) 세트는 모델을 조정하고 성능을 평가하는 데 사용됩니다.

 

6. Test Data

 

진짜 최종 확인용 데이터

 

 

  • 교차 검증은 데이터를 여러 번 반복해서 나누고 모델을 훈련하고 검증하는 과정입니다.
  • 일반적인 교차 검증 기법으로는 K-Fold Cross Validation이 있습니다. 데이터를 K개의 폴드(fold)로 나누고 각 반복에서 하나의 폴드를 검증 세트로 사용하고 나머지 폴드를 훈련 세트로 사용합니다.