[TIL] Choose Your ML Problems

키키·2021년 11월 1일
0

TIL

목록 보기
16/19
post-thumbnail

오늘 배운 것들

1. 예측 문제 정의

1.1 데이터 과학자 실무 프로세스

1) 비즈니스 문제

  • 실무자들과 대화를 통해 문제를 발견
    2) 데이터 문제
  • 문제와 관련된 데이터를 발견
    3) 데이터 문제 해결
  • 데이터 처리, 시각화
  • 머신러닝/ 통계
    4) 비즈니스 문제 해결
  • 데이터 문제 해결을 통해 실무자들과 함께 해결

타겟을 명확하게 정의해야 함

  • 지도학습에서는 예측할 타겟을 먼저 정한다.
  • 실수형 타겟 타입을 변형시켜 이진 분류 문제로 변경할 수도 있다.
  • 분류로 풀때 활용도 쉽다.

2. 정보의 누수(leakage)

데이터에 대해 완전히 이해하고 있지 못했을 떄, 예측을 100% 가깝게 잘 하는 경우가 종종 있다.
1) 타겟변수 외에 예측 시점에 사용할 수 없는 데이터가 포함되어 학습이 이루어질 경우
2) 훈련데이터와 검증데이터를 완전히 분리하지 못했을 경우

  • 정보의 누수가 일어나 과적합을 일으키고 실제 테스트 데이터에서 성능이 급격하게 떨어짐
  • 정보의 누수는 실제 회사 업무에서 너무나도 중요하다.
  • 100% 정답률이 나왔다면 정보누수일 가능성이 매우높다.
  • 사람이 풀기 어려운 문제라면 모델도 풀기 어렵다.

문제에 적합한 평가지표 선택

  • 분류와 회귀 평가지표 다름
  • 왜 accuracy만 사용하면 모델 성능에 대해 잘못된 판단을 내리는가?
    • 불균형 한 데이터의 경우 하나의 class로 만 예측해도 accuracy가 높게 나올 수 있다.
    • 따라서 훈련 정확도가 1이 나온 경우 데이터 누수(Data Leakage)과대적합(Overfitting)을 의심해봐야 한다.
    • F1-score등을 함께 확인하여 클래스 별로 학습이 잘 이루어지고 있는지 확인해야 한다.
    • 재현율(recall)을 높이고자 한다면, 임계값을 낮춰야 한다.

3. 타겟 분포 변환

  • 타겟 분포가 정규분포일 때 좋은 성능을 보임

3.1 회귀 데이터 변환


: 분포의 대칭화. 산포를 비슷하게 하기 위해 변순 사이의 관계를 단순하게 표현

  • 선형 변환(linear transform): 말 그대로 선형식으로 변환하는 것이다. 선형변환에서는 분포의 형태(shape)가 바뀌지 않는다.
  • 비선형변환(nonlinear transform): 로그변환, 지수변환, 제곱변환 등의 비선형변환에서는 분포의 형태(shape)가 바뀐다.
    • 제곱 변환: 오른쪽 꼬리를 길게 만든다.
    • 제곱근 변환: 왼쪽 꼬리를 길게 만든다.
    • 로그 변환: 왼쪽꼬리를 길게 만든다.
    • 지수 변환: 오른쪽 꼬리를 길게 만든다.

로그변환(Log-Transform)

  • 타겟 left, right skewed 둘다 사용
  • 정규성을 높이고 분석에서 정확한 값을 얻기 위함

  • log의 역할은 큰 수를 같은 비율의 작은 수로 바꿔 주는 것이다.
  • log는 큰 수를 작게 만들고 복잡한 계산을 간편하게 하기위해 사용한다. 로그를 취하는 순간 그 수는 지수가 되어버리니, 값이 작아 진다.
  • 예를 들어, 100=10이다. 1002100^2에 상용로그를 취한다면 100을 10을 밑으로 하는 지수가 있는 값의 그 지수로 나타낸다. 그래서 100에 상용로그를 취하면 2가 된다. -> log210\log_{2}{10}

📎 [야Hong's R을 활용한 탐색적 자료분석]5장 - 자료의 재표현

📎 데이터 분석 시 식에 로그를 취하는 이유

3.2 분류 클래스 불균형

분류에서 타겟 클래스비율이 70% 이상 차이날 경우 정확도만 사용하면 판단을 정확히 할 수 없음

  • 클래스 불균형 해결 방법으로 클래스 가중치 조절, 오버샘플링, 언더샘플링 방법을 사용할 수 있음

문제에 적합한 평가지표 선택

평가지표로 accuracy만 사용한다면?

  • 클래스 불균형 문제에서 오류를 범할 수 있다.
  • (이를 실제로 분석가가 이용할 수 있다. 정확도만 표기)
  • 중요한 문제는 대부분 불균형 문제이다.
  • 학습할 때 class 웨이트를 줌, 샘플링 (다양한 방법 써볼 것)

robust하다의 의미

트리모델이 회귀 모델에 비해 robust하다.

  • robust, 견고하다. 강건하다.
  • 어떤 특징에 robust하다.
  • 트리기반 모델일때 데이터가 특성에 영향을 덜 받는다.
  • 트리기반 모형일때 scailing 중요하지 않는 것과 연관

4. Data Wrangling

  • 데이터 엔지니어 뿐만 아니라 벡엔드개발자 db를 만지는 사람들도 많이 쓴다.
  • sql로 주로 하지만, 파이썬으로도 가능

0개의 댓글