[AI] KT AIVLE(KT 에이블스쿨) 3기 AI 개발자 트랙 5차 미니프로젝트 -11주차-
프로젝트 주제
스마트폰 센서 데이터 기반 인간 행동 인식 분류
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 이었음