KT AIVLE/AI Track(교육)

[AI] KT AIVLE(KT 에이블스쿨) 3기 AI 개발자 트랙 5차 미니프로젝트 -11주차-

머준 2023. 4. 18. 21:43

프로젝트 주제

스마트폰 센서 데이터 기반 인간 행동 인식 분류

 

1. 데이터 확인

- UCL에서 제공하는 데이터

(https://archive.ics.uci.edu/ml/datasets/human+activity+recognition+using+smartphones)

 

- 데이터 셋 Shape

Feature - 스마트폰 센서의 측정값을 이용해 추출한 특징
- 560 여개의 특징이 있음
Label - 6개의 클래스
  (서기, 앉기, 눕기, 걷기, 계단 오르기, 계단 내려가기)

 

2. 데이터 전처리

- 걷기 = 0, 계단 오르기 = 1, 계단 내려가기 = 2, 눕기 = 3, 서기 = 4, 앉기 = 5 으로 라벨링

-  Activity_dynamic 컬럼을 새로 만들어 [0,1,2] -> 1 / [3,4,5] -> 2 라벨링 (정적 = 0 / 동적 = 1)

 

- 변수 중요도( Feature Importance) 추출

  -> 하위 10개 컬럼 제거 CASE1

      하위 15개 컬럼 제거  CASE2

      로 나누어서 진행함

 

3. 모델 학습

3-1) 정적/동적 분류

- SCV

  : 0.9991

 

- CAT BOOST

 : 0.9993

 

3-2) 정적 동작 세부 분류

- SVC

  :  0.6646

'''
GridSearchCV로 하이퍼 파라미터 조절

- C: 정규화 매개변수로, 각각의 데이터 포인트가 다른 클래스에 더 맞게 배치되도록 균형을 조정
     C 값이 클수록 모델은 훈련 데이터에 더 맞춰져서 복잡하게 되며, 
     C 값이 작을수록 모델은 단순해지고 일반화 성능이 향상될 가능성이 있음.

- kernel: 사용할 커널의 종류 선형(linear), 다항식(polynomial), RBF(Radial Basis Function), 시그모이드(sigmoid) 등

- gamma: RBF 커널의 폭을 결정
         gamma 값이 작을수록 결정 경계가 부드러워지며, 큰 값이면 결정 경계가 더 복잡해짐
'' '

model = SVC(C = model_grid.best_params_['C'], gamma = model_grid.best_params_['gamma'], kernel = 'rbf')

 

- CAT BOOST

  : 0.6981

  -> 하이퍼 파라미터 조절 

'''
- learning_rate: 학습률은 각 트리에 대한 가중치 갱신에 사용되는 스케일링 파라미터
               학습률이 작으면 모델이 더욱 안정적이지만 더 많은 학습 반복이 필요
- l2_leaf_reg: L2 정규화 파라미터. 모델이 더욱 일반화되고 편향이 줄어들게 함.
- iterations: 학습 반복 횟수
'''

model =  CatBoostClassifier(l2_leaf_reg=1, learning_rate = 0.1, iterations = 5000, random_state=2023)

 

- LGBM

  : 0.6757

'''
GridSearchCV로 하이퍼 파라미터 조절

- n_estimators: 생성될 트리의 개수. 값이 클수록 모델은 더 많은 트리를 학습 
                n_estimators 값이 너무 크면 학습 시간이 오래 걸림

- max_depth: 생성될 트리의 최대 깊이를 제어. 값이 클 수록 과적합 발생할 수 있음
'''

model = LGBMClassifier(n_estimators = model_grid.best_params_['n_estimators'], max_depth = model_grid.best_params_['max_depth'])

 

3-3) 동적 동작 세부 분류

- SVC

  : 0.8330

 

- CAT BOOST

  : 0.8560

 

- LGBM

  : 0.8403

 

 

4. 결과 합치기

- 3-1) 정적 / 동적 분류

  3-2) 정적 동작 세부 분류 (앉기, 서기, 눕기) 한 결과 값과

  3-3)동적 동작 세부 분류 (걷기, 계단 오르기, 계단 내려가기) 한 결과 값을 합쳐서 Kaggle에 제출

 

- 최종 점수: 0.76682 (190등)

 

5. 결론

- CAT BOOSTER의 하이퍼 파라미터를 조절해가며 성능 향상에 부단히 노력했지만 전처리 문제에서 오류가 있었는지 0.76682점을 넘지 못함.

- 뒤 늦게 LGBM 모델을 써보았지만 역시나 최고 점수를 넘지 못함.

- 아무래도 전처리 부분에서 실수가 있었던 것으로 판단되어짐. 상위-중상위 에이블러 분들께 여쭈어 봤더니 전처리를 하지 않고 머신러닝 하이퍼 파라미터만 열심히 수정하다 보니 좋은 점수를 얻을 수 있다고 하심... 너무 아쉬운 개인 Kaggle 이었음