일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 파이썬 내장 그래프
- Brightics studio
- Brigthics Studio
- paper review
- 검증 평가 지표
- 브라이틱스 프로젝트
- 브라이틱스 서포터즈
- Activation Function
- michigan university deep learning for computer vision
- 서포터즈 촬영
- 범주형 변수 처리
- Brightics 서포터즈
- 삼성 SDS
- 비전공자를 위한 데이터 분석
- Brightics AI
- 파이썬 SQL 연동
- Brightics EDA
- Python
- Random Forest
- 딥러닝
- 브라이틱스 AI
- 머신러닝
- 데이터 분석 플랫폼
- Deep Learning for Computer Vision
- 삼성 SDS 서포터즈
- 데이터 분석
- 브라이틱스 스태킹
- 브라이틱스 분석
- 분석 툴
- pymysql
- Today
- Total
하마가 분석하마
[팀 분석-3주차] 모델링 본문
안녕하세요.
Brightics 서포터즈 노승찬입니다.
[팀 분석-2주차]에는 우승자 코드를 분석하고 아이디어를 도출하는 시간을 가졌습니다.
이번 주차에는 지난 주차 및 팀원들과 함께 고민하여 생성한 변수와 우승자 코드에서 얻어낸 아이디어를 응용하여 스태킹을 시도해보려고 합니다.
모델링
변수 구성
feature set은 총 2개입니다. 성능에 유의미한 변수를 만들어보려고 많은 아이디어를 시도해 보았으나, 우승자 코드에서 아이디어를 얻은 변수를 넘는 새로운 파생 변수는 없었습니다. ㅠㅠ 그러나 다른 방식으로 적용하여 성능을 높여 보았습니다!!
모델링
Light GBM과 Extra Tree, Logistic Regression 등 다양한 알고리즘을 사용해 보려고 하였으나 성능적인 면과 브라이틱스에 아직 존재하지 않는 알고리즘들이 있었기에 Random Forest와 XGBoost만을 사용했습니다.
1. XGBoost
feature set1에 대한 XGBoost
feature set1에 있어서 Number of Tree를 120개 이상 만들 시에 성능이 떨어짐과 동시에 에러가 나는 상황을 발견했습니다. 변수 중요도를 보면 중간에 알고리즘의 베이스 파라미터를 사용하여 중요하다고 판단한 변수를 변형하여 만든 파생변수가 중요하다고 나온 것을 알 수 있습니다.
정확도 기준 0.712가 나왔습니다. 신용도가 0인 경우 2로 예측하는 경우와 1인 경우, 2로 예측하는 경우가 많아 정확도가 떨어진 것으로 보입니다.
feature set2에 대한 XGBoost
변수 중요도를 보면 feature set1과는 조금 다른 모습을 보이고 있습니다.
feature set2 에서의 XGBoost는 나무를 500개 그려도 에러가 나지 않았습니다. 이유를 모르겠습니다...
feature set1과 set2를 다시 실행해 보아도 첫 번째 변수 셋에서는 에러가 나네요 ㅠㅠ
나무의 개수가 120개와 500개로 차이가 있어 무조건은 아니지만 feature set2에서의 XGBoost 성능이 더 좋을 거라고 예상했는데요. 정확도를 보면 조금 0.702로 앞선 정확도인 0.712에는 못 미치는 것을 알 수 있습니다.
2. Random Forest
feature set1에 대한 랜덤 포레스트
랜덤 포레스트와 XGBoost 모두 중요하다고 판단한 변수는 나이, 연봉, 직장 다닌 일수 등으로 비슷합니다.
보시다시피 XGBoost가 랜덤 포레스트 보다 성능이 좋은 것을 알 수 있습니다.
feature set2에 대한 랜덤 포레스트
랜덤 포레스트가 중요하다고 판단한 변수는 XGBoost와 거의 비슷하나 중요도의 정도에서 차이가 많이 납니다.
0.699의 성능을 보이고 있습니다.
feature set2의 랜덤 포레스트는 다른 것과는 다르게 0,1 클래스를 2클래스로 예측하는 관측치보다 2클래스를 0클래스로 예측하는 관측치가 많아진 것이 보입니다.
이렇게 같은 알고리즘이라도 서로 다른 특징을 가진 변수 셋을 구성해서 넣게되면 정확도는 비슷하더라도 결과는 완전히 다른 것을 알 수 있습니다.
3. Stacking
각 클래스에 대한 예측 확률 값을 사용한 스태킹을 시도했습니다. 그러기 위해서는 Bind row Columns라는 함수가 필요한데요.
feature set1의 XGBoost와 Random Forest 예측값을 모은 것
feature set2의 XGBoost와 Random Forest 예측값을 모은 것
랜덤 포레스트를 사용한 스태킹
XGBoost를 사용한 스태킹
정확도가 0.78로 많이 오른 것을 확인할 수 있습니다.
스태킹시에 파라미터를 조금 더 최적화시키면 더 성능이 오를 거라고 생각됩니다.
팀원들과 함께 분석 관련한 영상을 촬영했습니다!
이번 영상에서는 어떤 분석을 했는지와 전처리를 어떻게 했는지 자세한 내용을 담았는데요!
다음에는 영상으로 찾아뵙겠습니다, 감사합니다!
"Brightics 서포터즈 활동의 일환으로 작성된 포스팅입니다."
'Brightics 서포터즈' 카테고리의 다른 글
[개인 분석-1주차] 분석 주제 선정 (0) | 2021.08.31 |
---|---|
[팀 분석-4주차] 모델링2 (0) | 2021.08.24 |
[팀 분석-2주차] 우승자 코드 분석 및 아이디어 도출 (0) | 2021.08.09 |
[팀 분석-1주차] 프로젝트 소개 및 데이터 이해 (2) | 2021.08.02 |
[팀 미션] 슬기로운 분석생활, 비하인드 스토리 (0) | 2021.07.20 |