촉촉한초코칩

Tensorflow 강의 정리 본문

Study/PBL

Tensorflow 강의 정리

햄친구베이컨 2024. 5. 15. 17:09

https://www.youtube.com/watch?v=auCw6qikSYs&list=PLl1irxoYh2wyLwJutUZx5Q_QEEDZoXBnz&index=1

 

  • 회귀 : 숫자로 된 결과 예측
  • 분류 : 카테고리 형태의 결과 예측
  • 회귀와 분류를 사용한 머신러닝 알고리즘 : Decision Tree, RandomForest, KNN, SVM, NeuralNet

 

Neural Network (= 인공 신경망, 딥러닝)

  • 사람의 두뇌가 동작하는 방법을 모방해서 기계가 학습할 수 있도록 고안된 알고리즘
  • 딥러닝 라이브러리 : TensorFlow, pytorch, Caffe, Theano 등 
  • 원인과 결과를 기계에게 보여주고, 기계가 그 사이의 관계를 스스로 학습할 수 있도록 하며 딥러닝으로 구현한다. 

 

지도학습

 

1. 과거 데이터 필요 

  • 예측 : 어떤 값에 따라 결과가 달라지는지 분석 (값의 관계) 
    > 과거의 데이터에서 원인과 결과 분석 
  • 원인 : 독립 변수
  • 결과 : 종속 변수 

2. 모델 구조 만들기 

  • 원인/결과 개수에 따라 입출력 개수가 달라짐 

3. 데이터로 모델 학습(FIT) 하기 

  • 원인에 어떤 값을 연산해야 결과가 나오는지 예

4. 모델 이용하기 

https://opentutorials.org/module/4966

 

회귀

 

판다스 실습

지도학습 : 두가지 변수 구분하기

https://github.com/blackdew/tensorflow1/tree/master/csv

 

loss - 각 학습이 얼마나 정답에 가까워지는지 평가 

  1. 모델 생성
  2. 독립변수를 모델에 넣어주면 모델은 예측값을 만든다.
  3. 모델이 좋은지 평가하기 위해 실제 정답(종속변수)과 예측 결과를 비교한다. 
  4. 모든 예측 결과와 정답을 비교해서 그 차이에 제곱을 해준다.
  5. 결과들의 평균을 구하면 그 값이 loss가 된다.
  6. 예측이 정답을 모두 맞춘다면? loss는 0이 된다. 
  7. 0에 가까워질 수록 학습이 잘 된 모델이라는 뜻. 
  8. 학습 시킬 때 loss 값을 보면서 매 fork마다 loss에 가까워지고 있는지 확인해야 한다. 

 

실습) 레모네이드 판매 예측

 

https://colab.research.google.com/drive/1hjTGwrMZ6gQZCOMwUgpIGDdPdEMJogM3#scrollTo=lJsCZyHYYcXL

 

13개의 입력으로 1개의 출력을 만든다. 

 

 

 

예시1)

예시2) 종속변수가 2개라면 

 

실습) 보스턴 집값 예측

 

https://colab.research.google.com/drive/1F6qVWqlmEtgDMxZHK9yR8RSVteJJ4vtN

 

  • 이상치 : 전체 수치와 비교하여 상이하게 높거나 낮아서 평균의 대표성을 무너뜨리는 값
  • 중앙값 : 이상치 대신 사용하는 값 
  • 1~13번째 열 : 독립변수 
  • 14번째 열 : 오름차순으로 정렬한 값 중 중앙값, 종속 변수

 

딥러닝 워크북

 

https://docs.google.com/spreadsheets/d/1kHYBNNCmBT3EJH10WqaPHas7EJRARyYA_4VeY1c93rs/edit#gid=0

https://youtu.be/ItKi514Ly-4?si=qv0KIoy_oPILzg-0https://www.youtube.com/watch?v=ItKi514Ly-4&list=PLl1irxoYh2wyLwJutUZx5Q_QEEDZoXBnz&index=13

 

분류

 

실습) 아이리스 품종 분류 

 

https://colab.research.google.com/drive/1hZXdde9k2slrzIsLdsFj8H_fS_kallAp#scrollTo=PuWLSbvWV9VA

https://github.com/blackdew/tensorflow1/blob/master/csv/iris.csv

회귀/분류 나누는 기준 : 종속변수의 데이터 타입

  • 양적 데이터 : 회귀 Regression
  • 범주형 데이터 : 분류 Classification

수식에 범주형 데이터를 어떻게 저장할까?

해당 범주에 있는 칼럼의 데이터를 0 → 1로 바꾸기 : 원핫인코딩 onehot-encoding

 딥러닝에서 사용하는 데이터는 모두 수치형으로 바꿔줘야 한다. 

 

분류 예측 표현 도구 : Sigmoid, Softmax

 

  • 정답을 확률(%) 표현으로 보여지게 하기 
  • 수식 결과 : 마이너스도 존재
  • 결과를 0 또는 1로만 표현하고 싶다면 softmax 사용하여 0과 1사이의 결과를 내도록 한다. 

 

hidden layer

 

  • Input : 13개의 입력, 5개의 출력
  • Output : 5개의 입력, 1개의 출력
  • 각각의 모델을 연속적으로 연결하여 하나의 거대한 신경망을 만든다. = 인공신경망

https://colab.research.google.com/drive/13ab3yJRI3mx12j2UyPTWrLHLee-JbnRh#scrollTo=clFhEK2uYzM5

 

데이터 타입 조정 (원핫인코딩 시)

 

변수(칼럼) 타입 확인

데이터.dtypes

 

변수를 범주형으로 변경

데이터['칼럼명'].astype('category')

 

변수를 수치형으로 변경

데이터['칼럼명'].astype('int')
데이터['칼럼명'].astype('float')

 

NA 값의 처리 

#NA 개수 체크
데이터.isna().sum()

#NA 값 채우기
데이터['칼럼명'].fillna(특정숫자)

https://colab.research.google.com/drive/1hZXdde9k2slrzIsLdsFj8H_fS_kallAp#scrollTo=XiX4Spg_ck6t

 

모델을 위한 팁 

 

학습이 잘 되는 모델

사용할 레이어

  • tf.keras.layers.BatchNormalization()
  • tf.keras.layers.Activation('swish')

데이터

  • 보스턴 집값 예측
  • 아이리스 품종 분류
#모델 준비 - 다른 방법으로 
x = tf.keras.layers.Input(shape=[4])

h = tf.keras.layers.Dense(8)(x)
h = tf.keras.layers.BatchNormalization()(h)
h = tf.keras.layers.Activation('swish')(h)

h = tf.keras.layers.Dense(8)(x)
h = tf.keras.layers.BatchNormalization()(h)
h = tf.keras.layers.Activation('swish')(h)

h = tf.keras.layers.Dense(8)(x)
h = tf.keras.layers.BatchNormalization()(h)
h = tf.keras.layers.Activation('swish')(h)

y = tf.keras.layers.Dense(3, activation='softmax')(h)
model = tf.keras.models.Model(x,y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')

 

https://colab.research.google.com/drive/13ab3yJRI3mx12j2UyPTWrLHLee-JbnRh

 

'Study > PBL' 카테고리의 다른 글

Machine Learning 3  (0) 2024.05.28
Machine Learning 2  (0) 2024.05.27
Machine Learning 1 (~학습 및 테스트 세트)  (0) 2024.05.21
MFCC, STFT  (0) 2024.05.20
[Crypto Zombies] Beginner  (0) 2024.04.01