촉촉한초코칩
Tensorflow 강의 정리 본문
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 - 각 학습이 얼마나 정답에 가까워지는지 평가
- 모델 생성
- 독립변수를 모델에 넣어주면 모델은 예측값을 만든다.
- 모델이 좋은지 평가하기 위해 실제 정답(종속변수)과 예측 결과를 비교한다.
- 모든 예측 결과와 정답을 비교해서 그 차이에 제곱을 해준다.
- 결과들의 평균을 구하면 그 값이 loss가 된다.
- 예측이 정답을 모두 맞춘다면? loss는 0이 된다.
- 0에 가까워질 수록 학습이 잘 된 모델이라는 뜻.
- 학습 시킬 때 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 |