[멋쟁이 사자처럼 AIS7][0701:0702]

HI,HYEN·2022년 11월 14일

멋쟁이 사자처럼 AIS7

목록 보기
17/33

0701

✔️ .describe()를 하는 이유?

  • 결측치가 있는지
  • 이상치가 있는지
  • 표준편차는 어떤지
  • 전체 피처에 대해 특이점이 없는지 확인
  • 0~3 범위처럼 수치범위 갯수가 적다면 범주형데이터에 더 가까움
    -> nunique 값으로

✔️ histogram을 확인하는 이유?

  • 수치데이터의 분포 확인, 왜도, 첨도를 통해 너무 뾰족하지 않은지
    -> 한쪽에 데이터가 몰려있는지 확인
  • 왜도를 통해서는 너무 한쪽에 치우쳐져 있지 않은지 확인
  • 정규분포 형태인지 확인
  • 막대가 떨어져 있다면 수치데이터가 아니라 범주형데이터가 아닌지 확인
  • 전처리를 한다면 학습과 예측에 도움이 될만한 피처엔지니어링 기법이 무엇이 있을지 고민

✔️ 결측치를 확인하는 이유?
-> 변수가 너무 많기 때문에 결측치가 있는 데이터만 가져와서 봄

✔️ 이상치가 있을 때 어떻게 처리할까?

  • 이상치를 평균이나 중앙값 등으로 대체하면 데이터에 왜곡이 될 수 있으니 주의

✔️ 희소값 탐색을 하는 이유?

  • : 범주형 데이터 중에서 빈도가 적게 등장하는 값
  • 범주형 변수의 개수가 많은 것 중에서 빈도가 균일한지 아닌지를 보기 위해 nunique()를 통해 범주가 많은게 어떤 변수인지 확인
    ✓ 범주가 적은 값을 피처로 만들어 주면 어떤 문제가?
  • one-hot-encoding을 했을 때 범주가 적은 값을 피처로 만들어 주면 연산에 시간이 더 오래 걸릴 수 있음.
  • 오버피팅(과대적합)
    ✓ 너무 희소한 값이라면 one-hot-encoding 할 때 어떤 전처리를?
  • 기타로 묶는 방법도 있고 아예 결측치로 처리
  • pd.get_dummies 혹은 OneHotEncoder를 사용했을 때 인코딩 하지 않음

✔️ 표준정규분포 형태를 만들기 위해서는?
1️⃣ 스케일링이 먼저다 2️⃣ 로그변환이 먼저다

✔️ 왜 데이터를 정규분포 형태로 만들어주면 머신러닝이나 딥러닝에서 더 나은 성능을 낼까?
-> 너무 한쪽에 몰려있거나 치우쳐져 있을 때보다 고르게 분포되어 있다면 데이터의 특성을 더 고르게 학습할 수 있음.

✔️ 너무 큰 음수값이 있을때! 음수인 값이 너무 뾰족하거나 치우쳐져 있어서 로그를 취하기 위해서는 어떻게 전처리 해야 할까? 예를 들어 -1000 이라면?
-> 최소값 +1, -1000이라면 1001을 더함
✓ 원래 값으로 되돌리려면?
-> np.exp(x) -1001

✔️ 이산화를 하는 이유?

  • 연속된 수치 데이터를 구간화함.
    -> 머신러닝 알고리즘에 힌트를 줄 수도 있음.

✔️ LabelEncoder, OrdinalEncoder 의 입력값의 차이?

  • Ordinal Encoding은 Label Encoding과 달리 변수에 순서를 고려한다는 점에서 큰 차이
  • Label Encoding
    - 알파벳 순서 혹은 데이터셋에 등장하는 순서대로 매핑
    • 입력이 1차원 y 값
  • Oridnal Encoding
    - Label 변수의 순서 정보를 사용자가 지정
    • 입력이 2차원 X값
X, y 정의

X => 독립변수, 2차원 array 형태, 학습할 피처 (ex. 시험의 문제)
y => label, target, 정답, 1차원 벡터 (ex. 시험의 답안)

✔️ 인코더 3가지의 공통점?
-> 범주형 데이터를 수치형 데이터로 바꿔줌

특성 선택

  • 분산 기반 필터링
    : 범주형 변수 주에 어느 하나의 값에 치중되어 분포되어있지 않은지 확인

  • 상관관계 기반 필터링


✔️ SQL로 관리하는 데이터와 파일로 관리하는 데이터는 어떻게 구분해서 관리할까?
-> SQL에 저장하는 데이터는 실시간으로 사용해야 하는 데이터,
-> 파일로 관리하는 데이터는 로그성 데이터


0702

✔️ train과 test를 concat했을 때 장/단점?

  • 장점 : 전처리를 한번만 해도 됨.
  • 단점 :
    1. test에만 등장하는 데이터를 피처에 사용하면 안되는 대회 정책이 있을 때 정책 위반
    1. 대회 데이터이기 때문에 test를 미리 알 수 있지만 현실세계에서는 불가능한 방법

상관 계수는 두 변수의 상관관계를 나타내는 지표입니다.

상관관계는 두 변수 간의 직선 관계를 나타냅니다.

상관관계가 있다는 것이 두 변수가 서로 "인과관계"가 있다는것은 아닙니다.
상관관계가 높다고해서 두 변수에서 하나의 변수가 다른 변수의 원인을 설명할수는 없습니다.

원인이나 이유는 알 수 없지만 서로 상관관계가 높을 뿐입니다.

상관관계를 분석하는데 있어서 가장 직관적인 방법은 지금처럼 산점도를 살펴보는 것입니다.
산점도에서 분포가 직선에 가까울수록 상관관계가 높다고 할 수 있습니다!

  • 최빈값
    -> DF.mode().loc[0]
    => DF.describe().loc['top']

  • .select_dtypes(include=None, exclude=None)
    -> 열에 포함된 데이터들을 type 기준으로 인덱싱
    -> include에 넣은값을 포함하고, exclude에 넣은 값을 제외한 columns(열)을 DaraFrame 형태로 반환

  • 왜도
    -> DF.skew()

  • 척도
    -> DF.kurt()

profile
Today I Learn

0개의 댓글