Week3 02
강의 3
데이터
=> 범주형 데이터와 수치형 데이터로 구분됨범주형 데이터
=> 명확한 그룹으로 구분됨,수치형 데이터
=> 수로 나타남범주형 데이터
=>명목형 데이터
(순서 상관x) /순서형 데이터
(순서 존재)순서형/ 수치형
고민되면 산술연산에 의미 두기범주형 데이터
=> 집단 간 분석에 용이대푯값
=> 데이터 집단의 비교를 위해 추출하는 대표 값 ex.평균, 기댓값(가중평균), 최빈값, 중앙값 등- 명목형 데이터
명목형 데이터
=> 일반적으론 값이 텍스트로 구분됨 ex. 국가, 혈액형, MBTI, 과일, 성별 등- ML/AI 모델에 넣기 위해서 수 또는 수 배열로 치환 필요
- 명목형 데이터 전처리 =>
Label Encoding
- 가장 쉬운 전처리 =>
1대 1 매핑
EX. 국가: [한국,일본,중국,미국] => [0,1,2,3] 주의점1
없는 레이블에 대해서 미리 전처리 필요주의점2
2개 이상에서 [0,1,2] 등으로 레이블링 한다면 순서 존재 => 선형연산 들어가는 모델에서 좋지않은 영향- 순서가 존재하면 모델에 바이어스가 생기면서 결론적으로 모델에 안좋은 영향
- 순서 정보 모델에 주입하지 않기 위한 방법 => One-Hot Encoding
- [한국, 여자, 20] => [[1,0,0,0], [1,0,0], 20] 으로 치환 가능
One-Hot Encoding
=> 다수 범주가 동시에 포함될 수 있는 경우에도 효과적 => 변수따라 데이터 커질수도 있음-
이에 학습속도, 퀄리티 악영향 끼침 => 빈도 기반으로 범주를 일부 줄이는 것 추천(데이터 증강도 하나의 방법)
- 범주가 너무 많다면 =>
Binary Encoding
=> 순서 정보 없앰, but 범주의 의미가 거의 사라짐 Embedding, Hashing, 특정 값에 따른 인코딩
(해당 범주가 가진 통계값 사용, ex 빈도수)- 특정 값에 따른 인코딩 => 범주에 대한 정보, 수치적 정보를 담아 효과적인 머신러닝 가능한 technique
-
표본집단의 데이터가 모집단의 데이터와 통계가 일부 다를 때 결과에 나쁜 영향, 범용적인 모델 만들 때는 주의해야함
One-Hot Encoding
과Label Encoding
을 많이 사용하지만 성능을 높이기 위해 다양한 방법 사용가능!- 순서형 데이터
- 순환형 데이터 => 순서는 있지만 해당 값이 순환되는 경우 ex. 월, 요일, 각도
- 삼각함수 등 값의 크기에 따라 순화되는 값 사용할 수도 있음 => Technique
- 수치형 데이터
- 이산형 데이터 (인구수, 제품수, 횟수 등) / 연속형 데이터(키, 몸무게, 온도 등)
- 구간형 데이터(온도, 시간)/ 비율형 데이터(인구수, 횟수, 밀도)
- 대푯값 => 잘못된 정보 제공 가능
- 단순히 대푯값만 보는것이 아니라 데이터의 분포, 밀도 차 이런것을 비교, 구성을 잘 봐야함 => 시각화!
- 데이터의 형태 => 인사이트 도출
왜도, 첨도, 형태
등 분석 - 데이터의 범위 => 알고리즘 정확도, 수렴속도에 영향
- 정규화와 표준화
- 정규화 => 범위 [0,1] 또는 [-1,1]과 같은 특정 범위로 변환
- 표준화 => 데이터 평균 0, 표준편차 1로 만들어 데이터를 표준 정규본포 형태로 변환
- 정규화 방법 =>
최솟값 0 최댓값 1
로 치환해야함, 모든 값에최솟값
빼주고 각 값에최댓값
으로 나눠준다 - 표준화 방법 => 각 값에 평균을 빼주어 전체 평균 0으로 만들고 이 결과를 표준편차로 나눔 => 표준편차 1로 만듬
- 대칭성을 위해 => ex. 왼쪽에 치우쳐 있을 때, 작은 값 구간을 큰값보다 더 크게 만들거나 반대로 만들기
- Negative Skewness
- 큰 값 더 차이나게 =>
제곱 변환 or 거듭 제곱
,지수 함수
=> 표준화 등을 통한 전처리 후 연산 필요(부호 영향 받을 수 있음) - Positive Skewness
- 로그, 제곱근 => 각각 (1) 0이상 실수 (2) 양수 라는 조건이 있으므로 전처리 필요
Box-Cox Transformation
범용적 로그 변환 방법 => 값에 따라 변환 형태 다름- 수치형 같은 경우 도메인지식 바탕으로 함, skewness 체크하고 바꿔서 모델에 주입하기 좋은 형태로 만드는 것
- 중요한 것 => 어떻게 시각화가 됐고 바꼈을 때 어떻게 검증할지!
강의 4
-
결측치
-
결측치
=> 데이터셋에 누락된 값 - 대다수 모델에는 공백으로 넣을 수 없음(0으로 치환 시 값의 범주가 -10에서 10과 같이 0을 포함하는 범주면 큰 문제)
데이터 행 제외
=> 데이터 편향 더욱 강화,열 제외
=> 결측치 포함 열이 매우 중요할 수 있음- 결측치가 얼마나 있나 양이 중요
Missingno
=> 결측치 체크하는 시각화 라이브러리pip install missingno
- 결측치간의 관계도 중요하기 때문에 시각화를 통해 확인
-
결측치가 과반수 => 유무만 사용, 결측치 데이터포함 열 제외 등
- 결측치가 유의미하게 많은 경우(5퍼 - 10퍼 정도) => 결측치 정보가 유의미한 정보인지 우선 파악, 대푯값 전략
- 결측치 매우 적은 경우 => 결측치 포함 행 미포함 or 대푯값 전략
-
결측치 채우기 위한 방법론
- 규칙 기반 => 도메인 지식이나 논리적 추론, 지나치게 복잡하거나 단순한 경우 편향 반영 가능
- 집단 대푯값 => 집단 설계가 중요하고 이상치에 민감
- 모델 기반 => 결측치에 대해 예측, 복잡한 패턴 예측 가능 (대회에서 자주 사용), 표본집단에 따라 과적합 이슈 발생가능
- 이상치
- 관측된 데이터 범위에서 과하게 벗어난 값
- 대표적으로 사분위수/ 표준편차, 방법론을 통해 정함
- 분포의 형태에 따라 선택 =>
IQR
(3분위수와 1분위수의 차이),표준편차
EX. 1분위수 - 1.5 * IQR 이상 IQR
앞에 곱하는 수를 작게할수록 이상치를 더 많이 보는 것seaborn.boxplot
을 통해 이상치 시각화 가능- DBSCAN => 밀도 기반 클러스터링 방법 => 포인트의 개수/ 경계/ 노이즈 등 설정해서 집단 자동 설정, 자동 이상치
-
Isolated Forest => 루트 노드와 거리를 통해 이상치 탐지
-
클러스터링과 차원축소
- 피처 엔지니어링 => 보다 나은 특성을 통해 좋은 모델 만들고, 해석 용이하게 만드는 과정
- 특성 추출 => 특성 간 결합을 통해 새롭게 특성 만들어냄
- 특성 선택 => 중요 특성 선택
- 위 두가지 모두 도메인 지식이 더 중요할 수 있음
- 특성 추출 및 생성 => 다양한 결합 방법 사용 가능
- 사칙 연산 통해 값 연산, 범주와 범주, 범주와 수치 간의 연결 통해 새로운 범주 만들고 Label Encoding
- 클러스터링
유사한 성격을 가진 데이터를 그룹으로 분류하는 것
- K-Mean, Hierarchical Clustering, DBSCAN, GMM
- 거리 정의 방식, 클러스터 결과 기록과 해석 => 클러스터 별로 예외치에 대한 해석, 그룹에 대한 해석이 달라질 수 있음
-
시각화를 통해서 집단 잘 나뉘어졌는지, 대략적으로 어떤의미를 가지는지 파악하고 사용하기!
- 차원축소
- 데이터 특성 N개를 M개로 줄이는 방법
- 데이터의 복잡성 감소, 시각화 => 패턴 발견에 용이, 모델 성능 향상
- 가까운 데이터는 최대한 가깝게, 먼 데이터는 최대한 멀게 => 정보 최대한 보유, 왜곡 최소화
- PCA, t-SNE, UMAP, LDA, Isomap, Autoencoder
- 차원 축소와 산점도를 통해 다양한 인사이트 추출가능 => 왜곡 되어있다는 것을 염두에 두고 정답이 될수없다는 사실 인지하기
실습 4-1
- 시간 효율적 EDA =>
seaborn, pygwalker
등 사용하는 것이 적합 sns
=> 순서같은 경우 order를 통해 전달hue
=> 색을 의미,palette
=> 색상,hue_order
를 통해 색상 order 지정-
Box Plot
=>IQR
에 대해 알아야함 Violin plot
=> 시각적으로 오해 줄 수 있음 =>bw_method, cut, inner
활용histplot , kdeplot
=> 중요 ,ecdfplot
=> 0.5지점에서 50%를 알수있는 장점,rugplot
histplot
=>stack layer fill
등 이용해서 다양하게 표현 가능kdeplot
=>fill =True
를 하고 보는것이 일반적, 여러개 차트를 동시에 띄워도 각 분포에 대해서 인지하기 좋음rugplot
=> 밀도 확인- 2차원
histplot
으로 표현가능 scatterplot => hue
정도로 비교하면 좋음regplot
=> 회귀선 표현-
상관관계 방법론 =>
pearson
: 연속형 변수 % 연속형에 사용,Spearman, kendall
=> 순서형에도 사용가능 - 상관관계 =>
sns.heatmap
통해 비교 => 색 범위 맞추기 위해 vmin, vmax 조정 mask
통해서 대칭값 제거도 가능
실습 4-2
- jointplot
jointplot
=> 한번에 다양한 정보를 빠르게 볼 수 있는 장점hue
를 통해 구분 => 인사이트 얻기 조금 더 좋음- 다양한 종류로 분포 확인 가능 ex.
kind = 'reg' 'scatter'
등등 - pairplot
-
pair-wise
관계 시각화 =>sns.pairplot()
hue
를 통해 구분했을 때 좀더 보기좋음- 일일이 그릴 필요없이 한번에 확인하는 장점
kind
를 통해 시각화 방법 조정 가능ex. hist, kde
등corner = True
대칭 부분 제거해서 보여줌- Facet Grid
feature와 feature
뿐만 아니라feature's category-feature's category
의 관계도 살펴볼 수 있음catplot ,displot, relplot, implot
등 다양한 함수 있음catplot
=>kind
조정해서 다양하게 표현 가능col, row
설정해서 복잡한 정보도 보기좋게 표현가능한 장점!- 클래스 내에서 구분된 상관관계에 대해서도 분석할 수 있음 =>
x, y
지정해놓고col,row
도 지정하는 방식 displot
=> 그룹 간 비교할 때 용이 =>kind ='kde'
로 변경해 분포 확인 조금 더 용이하게relplot
=>scatterplot
이default
값implot
=> 회귀jointplot
=> 2개 차원의 관계에서 각각의 분포를 자세히 보는것pairplot
=> 여러개의 pair를 한번에 보는것cat, rel, displot
=> 여러개의 클래스들간의 관계를 분석하기 용이함
실습 4-3
- 빠르게 데이터 전처리
format
맞추고baseline
에 적용하는 것도 연습하면 좋음 - 차원축소에 앞서서 kmeans의 결과를 같이보는 것도 도움이 됨
- 다양한 차원축소 방법론
- PCA => 선형변환 기반, 데이터 비선형 구조 적절히 포착 못할 수 있음, 현실데이터에 큰정보 제공X, 이상치에 민감
- TSNE => 각각의 그룹들이 잘모임, PCA보다 시간은 오래걸리지만 N차원에 대한 정보를 많이 보존하고 있음
- UMPA => TSNE보다 빠름
댓글남기기