TIL/머신러닝

11.09 머신러닝 회귀 스케일링 피처 엔지니어링

monawa 2022. 11. 10.
728x90
  • 상대경로는 현재 경로를 기준으로 하는 경로
    EX) / 루트 (가장 최상의 디렉토리로 이동 / Web root)
    ./ 현재경로를 의미합니다.
    ../ 상위 경로를 의미합니다.
  • 절대경로는 전체 경로를 다 지정하는 경로
    ex) 윈도우 C: 부터 시작하는 경로입니다.

절대경로를 사용하면 다른 사람의 컴퓨터에서 동작하지 않기 때문에 되도록이면 상대경로를 사용하는 것을 권장합니다.

상대경로에서 기본적으로 같은 위치를 뜻하는 키워드는 . 입니다.

dt 접근자 관련 참고링크

https://pandas.pydata.org/docs/reference/series.html#datetimelike-properties

 

 

<정리>

로그(Logarithm)

  • log를 count값에 적용하게 되면 한쪽에 너무 뾰족하게 있던 분포가 좀 더 완만한 분포가 됩니다.
  • 데이터에 따라 치우치고(skewed) 뾰족한 분포가 정규분포에 가까워지기도 합니다.
  • log를 취한 값을 사용하게 되면 이상치에도 덜 민감하게 됩니다.
  • 스케일값이 감소한다

np.log1p(x)

  • np.log(x + 1)과 같은 표현이다
  • 1을 더해주는 이유는 1보다 작은 값에서 음수를 갖기 때문
  • 가장 작은 값인 1을 더해서 음수가 나오지 않게 하기 위함

np.expm1

  • X == np.expm1(np.log1p())
  • log변환을 통해 모델을 예측했다면, 제출할 때 꼭 expm1로 지수변환해주기
    (다시 복원안해주면 제출 시 점수 엉망이된다!)

정규분포

  • 값을 볼 때 한쪽에 너무 치우쳐져 있고(왜도) 뾰족하다면(첨도) 특성을 제대로 학습하기가 어렵다.
  • 분포가 정규분포의 형태를 가진다면 특성을 고르게 학습할 수 있다.

로그함수와 지수함수

  • np.exp 는 지수함수
  • np.log로 로그를 취했던 값을 다시 원래의 값으로 복원할 수 있다.
  • log 값으로 예측한 값을 원래대로 돌려놓는 것
  • log를 취할 때는 1을 더하고 로그를 취하지만, 지수함수를 적용할 때는 반대의 순서로 복원한다.
  • np.exp로 지수함수를 적용하고 -1 을 해주어야 로그를 취했던 순서를 복원해 주게 됩니다.
  • np.expm1은 지수함수를 적용하고 -1을 해주는 순서로 되어있습니다.
count == np.expm1(np.log1p())
#둘은 같은 값이다
train["count_expm1"] = np.exp(train["count_log1p"]) - 1
train[["count", "count_log1p", "count_expm1"]]

 

정규분포가 머신러닝에 왜 좋은 것인가❓ 

  • 머신러닝, 딥러닝에서 대체로 더 좋은 성능을 냄
  • 값을 볼 때 한쪽에 치우치고 뾰족하다면 특성을 제대로 학습하기가 어려움
  • 정규분포로 되어 있다면 특성을 고르게 학습할 수 있음

Feature Engineering

정의

데이터에 대한 지식을 바탕으로 피처를 생성, 변경, 삭제 등 조작하여 사용하기 더 유용한 형태로 바꾸는 것

 

분류

  1. 특성 선택(Feature Selection)
    해당 분야의 전문가의 의견으로 특성의 중요도에 따라 일부를 버리거나 선택 가능
  2. 특성 추출(Feature Extraction)
    특성을 버리거나 선택이 아닌 특성의 조합으로 새로운 특성을 생성
  3. 범위 변환(Scaling)
    변수의 분포 편향(한쪽으로 쏠려있는..), 이상치 많이 존재하는 경우 등 변수의 특성이 잘 드러나지 않고 활용하기 어려운 경우 범위 바꿔주는 작업 >> 로그 변환 사용 가능
  4. 변형(Transform)
    기존에 존재하는 변수의 성질을 이용해 새로운 변수 생성하는것
  5. 범주화(Binning)
    수치형(연속형) 변수를 범주형으로 변환
  6. 숫자화(Dummy)
    범주형을 수치형(연속형)으로 변환

 

일반적인 데이터 분석 순서

  • 데이터 수집, 데이터 전처리, 탐색적 데이터 분석(EDA), 특성 공학(Feature Engineering), 그 외 필요한 경우 머신러닝 등
  • 이와 같은 작업들이 꼭 순서를 지켜서 이뤄지지 않고, 아주 엄밀하게 구분된 영역이라 하기도 어려움

Feature

Feature Engineering을 위해서는Feature에 대해서 알 필요가 있습니다.

타입 서브타입 정의 예시
Categorical Nominal 순서없는 범주형 변수  성별, 음료수 종류
Ordinal 순서있는 범주형 변수 성적, 등급
Numerical Discrete 유한, 개수 헤아릴 수 있는 수치형 변수 물건의 개수, 행동의횟수
Continuous 무한, 개수 헤아릴 수 있는 수치형 변수 물건의 가격, 시간

 

해당 과정 전에 전처러, EDA를 먼저 해보는 것 중요
(데이터에 대해 알지 못하면 피처 엔지니어링 방향 집기 어렵기 때문)

  •  

이상치 발견 방법

  • 일정 범위에서 동떨어져 있는 경우
  • 시각화
  • 기술통계
  • 박스플롯에서 범위 벗어나는 경우

이상치 학습 방해

  • 이상치로 인해 과대적합/과소적합 될 수 있음
  • 결과값의 정확도가 낮아짐

희소값

  • Numerical Feature에서 대부분 값이 갖는 범위에서 벗어난 값을 이상치라고 함
  • Categorical Feature에서 빈도가 낮은 값을 회소값이라고 함

희소값이 생기는 이유

1. 데이터 수집 과정에서 자연스럽게 비율 높은 것과 낮은 것이 생긴다)
2. 비율이 낮은 것이 희소값이 됨

 

희소값을 찾아야 하는 이유

1. 데이터 해석을 어렵게 하고 머신러닝 성능 낮출 수 있음
2. 데이터 경향 파악 어려움

 

 

참고자료 :

멋쟁이 사자처럼 AI School 7기 수업내용

728x90

'TIL > 머신러닝' 카테고리의 다른 글

11.14일 주택가격 피처엔지니어링 0702  (0) 2022.11.16
11/10 머신러닝 주택가격 피처엔지니어링  (0) 2022.11.10
11.08 머신러닝 bike log 회귀  (0) 2022.11.09
공부한거 정리해보기  (0) 2022.11.03
22.10.31  (0) 2022.10.31

댓글