s_y_130
About SY
s_y_130
전체 방문자
오늘
어제
  • 분류 전체보기
    • JAVA
      • 더 자바 8
      • JAVA
      • JAVA (JVM)
    • Computer Science
      • CS Basic
      • OOP
      • Design Pattern
      • Network
      • HTTP
      • WEB
      • OS
    • DataBase
      • DB theory
      • MySQL
      • Redis
    • Collection Framework
      • 구현
    • Data Structure
      • Linear
      • Non-Linear
    • Algorithm
      • Basic
      • 응용
      • 완전 탐색(Brute Force)
      • 다익스트라
      • Algorithm Problem
    • Spring
      • 스프링 핵심 원리 - 기본편
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
      • 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술
      • 스프링 DB 1편 - 데이터 접근 핵심 원리
      • 스프링 DB 2편 - 데이터 접근 활용 기술
      • 스프링 핵심 원리 - 고급편
      • 스프링 부트 - 핵심 원리와 활용
      • 재고시스템으로 알아보는 동시성이슈 해결방법
      • 개념
      • 테스트
      • Annotation
      • Error Log
    • TEST
      • 부하 테스트
      • Practical Testing: 실용적인 테스트..
    • JPA
      • 자바 ORM 표준 JPA 프로그래밍
      • 1편- 실전! 스프링 부트와 JPA 활용
      • 2편- 실전! 스프링 부트와 JPA 활용
      • 실전! 스프링 데이터 JPA
      • 실전! Querydsl
      • 개념
    • Open Source
    • Book Study
      • Morden Java in Action
      • Real MySQL 8.0 Vol.1
      • TDD : By Example
    • AWS
      • EC2
    • git
    • AI
      • Machine Learning
      • Deep Learning
      • TensorFlow
      • PyTorch
      • YOLO
      • Data Analysis
      • Ai code Error
      • Numpy
    • MY
    • WEB
      • Django
      • WEB 개념
      • React
      • Maven
    • Python
    • 기초수학

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
s_y_130

About SY

[Application & Tips] Data preprocessing
AI/Machine Learning

[Application & Tips] Data preprocessing

2021. 5. 6. 17:43
[TensorFlow] Lab-05-2 Logistic Regression 모두의 딥러닝 시즌 2 정리...

 

 

목차

  • Learning rate
    • Gradient
    • Good and Bad Learning rate
    • Learning rate schedule 과 Annealing the learning rate (Decay)
  • Data preprocessing
    • Feature Scaling - Standardization / Normanalization
    • Noisy Data
  • Overfitting
    • Regularization
    • L2 Norm

 

 

이전 글에서 Learning rate를 이용한 학습 응용을 살펴보았다. 이젠 AI에서 제일 중요한 데이터 전처리에 대해 설명하고자 한다. 데이터 전처리는 머신러닝 과정의 70~80%를 차지하는 중요한 과정이며 얼마나 데이터 전처리가 잘된 데이터를 통해 학습하냐에 따라 Hyper parameter를 찾는 과정보다 더 효과적이라는 말을 어디선가 들었던거 같다.

 

 

해당 내용도 너무 중요해서 나중에 따로 정리할 예정이다. 우선은 모두의 딥러닝 강의에 나온 내용만 작성하겠다.

Data preprocessing

 

너무나 많은 데이터 전처리 과정이 존재한다.

 

Feature Scaling 

Feature Scaling이란 Feature들의 크기, 범위를 정규화시켜주는 것을 말한다.

 

  • raw data 를 전처리하는 과정
  • 키와 몸무게를 가지고 100m 달리기에 걸리는 시간을 예측한다고 하면, 키와 몸무게는 단위가 다르기 때문에, 더 큰 값을 가진 키 값이 결과값에 더 큰 영향을 미칠 수도 있다.
  • 이 때문에 raw data 를 전처리하는 과정이 필요하다.
  • 방법론적으로 크게 Min-Max Normalization , Standardization (Z-score Normalization) 두가지가 있다.

 

위의 그래프에서 왼쪽 그래프를 살펴보자. 왼쪽 그래프의 하단(b)에는 0~1000 사이의 데이터들이 중점적으로 분포되어 있고 소수의 데이터들(a)만이 아~주 큰 값에 분포되어 있다. 

그렇다면 이러한 데이터를 바탕으로 머신러닝 모델을 만드는 과정에서 실제 의미가 있는 데이터는 어떤 데이터 일까?

 

데이터 a, b 를 토대로 학습을 진행할 때 영향을 주는 데이터는 아무래도 많이 분포되어 있는 데이터들이다.

즉 이러한 단위가 다른 데이터들이 정확한 분석을 하기 위해서는 Feature를 서로 정규화시켜 주는 작업이 필요하고 이런한 작업을 Feature Scaling이라고 한다. 

 

오른쪽 그래프 같은 경우가 Feature Scaling을 진행했을 때 분포되는 데이터다.

 

 

1) Min-Max Normalization

  • 서로 다른 Feature의 크기를 통일하기 위해 크기를 변환해주는 작업
  • 데이터를 일반적으로 0~1 사이의 값으로 변환시켜준다.
  • 데이터의 최소값, 최대값을 알 경우 사용한다.

 

Min-Max Normalization

 

 

Python Code(Numpy)

 

2) Standardization (Mean Distance)

  • 기존 변수에 범위를 정규 분포로 변환한다.
  • 데이터의 최소값, 최대값을 모를 경우 사용한다.
  • 평균과의 거리는 구하는 것 (Mean Distance)
  • (X - X의 평균값) / (X의 표준편차)

Standardization

 

 

Python Code(Numpy)

표준 편차 공식 및 설명

 

 

 

위의 코드는 Numpy를 이용해 식을 작성하였지만 sklearn에는 제공되는 라이브러리가 있다.sklearn으로 Feature Scaling하기

 

 

 

 

Noisy Data

 

머신러닝을 하는 것에 있어서 데이터는 너무너무~~중요하다.

그만큼 우리는 noisy data. 즉 쓸모 없는 데이터를 잘 없애주는 것이 중요하다고 할 수 있다.

여기서는 몇가지 예시를 통해 간단하게 설명만 하겠다.

 

Numeric

 

수치형 데이터의 경우 데이터의 분포가 이쁘게~잘~수집되면 좋겠지만 그럴 경우는 거의 없다고 본다.

수집되는 Feature의 종류, 단위만큼 데이터 분포가 제각각이다. 

위의 데이터에서도 a 같은 경우는 머신러닝 학습에 있어서 중요하지 않고 noisy한 데이터로 취급된다. 그래서 전처리 과정을 통해 오른쪽 그래프처럼 분포하는 것이 중요하다고 볼 수 있다.

 

 

NLP

최근에 많이 쓰고 있는 챗봇에서는 자연어 처리를 많이 사용한다.

 

 

 

위와 같은 예시에서 실제 우리가 필요로 하는 글자는 파란색으로 표시된 글자이며 Will, a, ..?? 와 같은 조사나 특수문자는 머신러닝을 학습하는데 있어서 Noisy한 데이터이다.

이 또한 데이터 전처리를 통해 학습에 필요한 데이터만 추출하는 것이 중요하다.

 

 

 

Image

 

 

다른 예시로 얼굴 이미지를 이용해 분류 모델을 만든다고 했을 때 위의 사진에서 중요한 부분은 어느 곳일까?

해당 사진에서 사람을 분류하는데 가장 중요한 부분은 얼굴 부분이며 머리 스타일, 귀(귀걸이 할 수도 있잖아?), 배경과 같은 부분은 분류하는데 있어서 쓸모없는 정보이다. (물론 성형?을 할수도 있지만 일반적으로....)

 

그래서 이 또한 얼굴만 따로 추출하는 데이터 전처리 과정이 필요하다.

 

 

 

위의 예시들처럼 데이터에 따라 전처리하는 과정도 제각각이고 많은 방법이 존재한다. 

정리는 와중에 조사하는 부분에 있어서도 너무 많은 방법론이 존재하고 이것들을 다 정리하는 것에는 한계가 있다는 생각을 했다.

 

그래서 관심있는 분야는 컴퓨터 비전 쪽이므로 해당 부분 이미지 전처리 부분만 나중에 따로 정리할 생각이다.

 


해당 코드는 Normalization을 적용하지 않는 데이터를 갖고 학습을 진행한 Tensorflow 코드이다.

살펴보면 학습이 제대로 진행되지 않는 모습을 확인할 수 있다.

 

github.com/seyoung5744/Machine-learning-and-deep-learning-for-everyone/blob/main/07-2-linear_regression_without_min_max.ipynb

 

 


 

참고

www.geeksforgeeks.org/data-preprocessing-in-data-mining/

slidesplayer.org/slide/16828352/

    'AI/Machine Learning' 카테고리의 다른 글
    • [Application & Tips] Data sets & Learning
    • [Application & Tips] Overfitting
    • [Application & Tips] Learning rate
    • [Softmax Regression] Softmax classifier 의 cost함수
    s_y_130
    s_y_130

    티스토리툴바