[플레이데이터 빅데이터 부트캠프]머신러닝 & 딥러닝 Deep Learning Tensorflow

Tensorflow(텐서플로)

  • 구글이 2015년에 공개한 머신러닝 오픈소스 Framework이다.
  • ML 모델을 개발하고 학습시키는 데 도움이 되는 핵심 오픈소스 라이브러리이다.
  • 텐서플로우도 쓰는 방식이 여러가지이다.
  • 2.0버전부터 Keras를 통해 고수준 API 제공해 준다.

텐서(Tensor)

  • Rank: 축의 개수
  • Shape: 형상(각 축에 따른 차원 개수)
  • Type: 데이터 타입
    • 텐서의 기본 dtype
      • 정수형 텐서: int32
      • 실수형 텐서: float32
      • 문자열 텐서: string
      • 이외에도 float16, int8 타입 등이 존재하며 연산시 텐서의 타입 일치 필요
      • 타입변환에는 tf.cast() 사용

텐서 연산에는 브로드캐스팅이 되지 않는다. 같은 차원의 텐서만 연산할 수 있다.

모델(Model)

  • 딥러닝 모델은 레이어로 만들어진 비순환 유향 그래프(Directed Acyclic Graph, DAG) 구조

모델을 만드는 방법 3가지

  • Sequential()
  • 서브클래싱(Subclassing)
  • 함수형 API

Sequential()

  • 모델이 순차적인 구조로 진행할 때 사용
  • 간단한 방법
    • Sequential 객체 생성 후,add()를 이용한 방법
    • Sequential 인자에 한번에 추가 방법
  • 다중 입력 및 출력이 존재하는 등의 복잡한 모델을 구성할 수 없다.

함수형 API

  • 모델을 복잡하고, 유연하게 구성 가능
  • 다중 입출력을 다룰 수 있음
  • 1:1 매칭으로 오류가 적다.

서브클래싱 (Subclassing)

  • Function API로도 구현할 수 없는 모델조차 구현이 가능하다.
  • Model 클래스를 상속받아 Model이 포함되는 기능을 사용할 수 있다.
  • 객체 지향 프로그래밍(Object-oriented programming)에 익숙해야 하므로 코드 사용이 가장 까다롭다.

와인 데이터셋를 사용한 Temsorflow 실습

이항 분류

와인의 당도, 산도, 알코올 도수 등으로 레드와인 혹은 화이트와인으로 분류하기

와인 데이터셋 속성

  • fixed acidity : 고정 산도
  • volatile acidity : 휘발성 산도
  • citric acid : 시트르산
  • residual sugar : 잔류 당분
  • chlorides : 염화물
  • free sulfur dioxide : 자유 이산화황
  • total sulfur dioxide : 총 이산화황
  • density : 밀도
  • pH
  • sulphates : 황산염
  • alcohol
  • quality : 0 ~ 10(높을 수록 좋은 품질)

데이터셋 로드

데이터 전처리

데이터 Scailing은 0~1 사이인 MinMaxscailing을 하였다.

타겟을 원핫 코딩을 하여서, 0 혹은 1 와인의 종류에 따라서, 비중을 두지 않게끔 모델을 구성하였다.

최종 정확도는 99.85%가 나왔다.

학습 결과 시각화

데이터셋 값을 MinmaxScailing하여 Tensorflow Model에 넣으니, 빠른 시간 안에 높은 정확도로 이진분류를 할 수 있었다.