일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- likelion
- seaborn
- intern10
- 마이온컴퍼니
- parklab
- 온보딩
- TiL
- SQL
- 그리디
- Join
- folium
- 인턴10
- 알고리즘
- pyhton
- 멋쟁이사자처럼멋쟁이사자처럼
- likelionlikelion
- 프로젝트
- DP
- 파이썬
- 멋쟁이사자처럼
- Plotly
- 시각화
- ux·ui디자인
- BFS
- GIS
- 마이온
- DFS
- 멋재이사자처럼
- 멋사
- Today
- Total
지금은마라톤중
멋사 AI스쿨 TIL - (23) 본문
2023.03.20
● train과 test의 day가 아예 다르기 때문에 빼주는 것이 낫다고 판단!
신호와 소음 구분하기
질문🙋🏻♂️ : 왜 label='casual', label='registered'을 따로 해주나요 ? - 모델을 만들고 돌릴 때부터 각각 따로 학습을 시켜준 뒤 최적의 하이퍼파라미터를 찾습니다. - count = casual + registered |
질문🙋🏻♂️ : train 에는 unique 값의 max 가 2545 인데, test는 49인 이유는? - 정답값(y) 컬럼이 빠져 있기 때문 |
질문🙋🏻♂️ : 간단하게 모델을 만들기 전에 EDA를 해본다면 어떤 것을 해볼 수 있을까요? - 정답값의 분포를 참고하여 레이블 스무딩 기법을 적용한다 - 바이너리 인코딩을 적용할 수 있다. - object타입을 카운트해볼 수 있다 |
● 기술통계를 통해 알 수 있는 것
0) 익명화 되어 있습니다.
1) 같은 값으로 되어 있는 변수도 있으며
2) 수치데이터의 경우 0~1 사이로 이미 스케일링 되어 있다는 것을 알 수 있습니다.
● skew -> 비대칭도
skew가 50보다 큰(비대칭도가 큰) 컬럼에 대해 히스토그램을 그려 값이 한쪽으로 치우쳐진 컬럼을 찾아주었습니다
● 데이터의 수가 매우 많을 경우
-> 기술통계의 기술통계들을 구해보거나 , 왜도 첨도를 구해서 데이터의 특성을 파악합니다.
질문🙋🏻♂️ : 기술통계에 대한 기술통계를 구하고 이것을 활용하는 방법에 대해서 다시 한 번 설명해주실 수 있을까요? 데이터의 수가 매우 많기 때문에 , 데이터의 특성을 한눈에 보기 어려워 먼저 기술통계를 출력합니다 ! 전체적으로 기술통계를 보았을때 max 값에 대한 기술통계 값을 보면 최댓값이 모두 1인 것을 확인할 수 있습니다. -> 평균값과 중앙값의 차이가 크지 않을걸로 보아 정규분포와 비슷한 형태를 띄는것을 알 수 있었습니다 -> 범주형으로 보았을 때 카테고리가 여러 개 중 하나만 있는 데이터의 경우 분포가 한쪽으로 값이 치우져져있습니다. 따라서 기술통계의 기술통계를 구해서 값이 한 쪽으로 치우쳐진 변수를 찾습니다 |
질문🙋🏻♂️ : 모든 수치 변수가 0~1 사이값으로 되어 있습니다. 이것을 무엇을 의미할까요? : 변수들이 min max 스케일이 되어있다. |
질문🙋🏻♂️ : 모든 수치 변수가 0~1 사이값으로 되어있는 것이지 '0과 1로 되어있다'로 해석하면 안되는거죠...? unique(), nunique() 를 확인해 보고 해석하는게 좋겠습니다 nunique() == 2 인 값만 0, 1로 되어 있습니다.(전제는 min == 0, max == 1 일 때) |
팁❗️ 수백, 수천개의 변수가 있을 때 어떤 변수부터 자세히 볼지 의사결정할 때 이런 기술통계의 기술통계를 활용해 볼 수 있습니다 |
● category type
: 문자열처럼 보이고 작동하지만 내부적으로는 정수의 배열로 표현됩니다.
이를 통해 데이터를 사용자 지정 순서로 정렬하고 데이터를 보다 효율적으로 저장할 수 있습니다.
● XGBoost의 장점
- GBM 대비 빠른 수행시간
- 병렬 처리로 학습, 분류 속도가 빠름.
- 과적합 규제(Regularization)
- 표준 GBM 경우 과적합 규제기능이 없으나, XGBoost는 자체에 과적합 규제 기능으로 강한 내구성을 가짐
- Early Stopping(조기 종료) 기능이 있음
- 다양한 옵션을 제공하며 Customizing이 용이하다.
● CatBoost의 장단점
- 속도가 매우 빠르다 .
- Overfitting 방지를 위해 내부적인 프로세스를 구축
- 시계열 데이터를 효율적으로 처리한다.
- 범주형 데이터 처리에 유리.
- 수치형 변수가 매우 많은 데이터일 경우 LightGBM 보다 학습 속도가 오래 걸린다는 단점이 있다.
● 원핫인코딩( one-hot encoding )
범주형 데이터를 수치형 데이터로 바꾸는 feature engineering 방법
- 장점 : 모든 머신러닝 알고리즘에서 사용 가능하다 범주형 변수를 수치형 변수로 변환해 주므로, 모델이 변수 간 상관관계를 파악할 수 있다. 범주형 변수의 카테고리 수가 많아져도 적용할 수 있다. |
- 단점 : 카테고리 수가 많은 경우, 변수의 차원이 늘어남. -> 차원의 저주 문제 / 모델 학습 속도 저하 카테고리 수가 적은 경우 희소 행렬 생성 -> 데이터셋 크기가 커져 메모리, 처리 속도에 부담 |
범주형 데이터와 수치형 데이터를 분리
ohe = OneHotEncoder(handle_unknown="ignore”)
로 ohe 변수에 원핫인코더 객체 생성
train_ohe = ohe.fit_transform(train_remove_col[cat_col])
df_train_ohe = pd.DataFrame(train_ohe.toarray(), columns=ohe.get_feature_names_out())
df_train_ohe.index = train.index
train_remove_col 데이터프레임에서 카테고리 변수만 가져와 ohe.fit_transform을 적용해 train_ohe라는 변수에 할당해줌.
train_ohe를 array형태로 바꿔,(데이터프레임 형태로 만들어주기 위해서 먼저 array형태로 바꿔줌) 데이터프레임으로 만들어주고, columns에 ohe.get_feature_names_out()을 지정해 원핫인코딩 된 결과를 데이터프레임 형태로 바꿔준다!
그리고 index를 원래의 train데이터와 같게 만들어줌!(나중에 concat하기 위함)
df_train_num = train_remove_col.drop(columns="y").select_dtypes(include="number") #train_remove_col에서 y컬럼을 제외하고, 수치형 변수만 가져옴
df_train_enc = pd.concat([df_train_num, df_train_ohe], axis=1) #최종적으로 train_remove_col 데이터의 수치형 변수와, 원핫인코딩 된 카테고리 타입 변수를 concat해줌
'멋쟁이사자처럼 > Python' 카테고리의 다른 글
멋사 AI스쿨 TIL - (25) (0) | 2023.03.23 |
---|---|
멋사 AI스쿨 TIL - (24) (0) | 2023.03.23 |
멋사 AI스쿨 TIL - (22) (1) | 2023.03.16 |
멋사 AI스쿨 TIL - (21) (0) | 2023.03.15 |
멋사 AI스쿨 TIL - (20) (0) | 2023.03.15 |