input이 이미지가 될 수는 있으나 output이 이미지가 될 수는 없다(정형 데이터화되어 수치로 들어감).
딥러닝 구현으로 얻게 된 데이터 특성을 가지고 이미지를 찾아부는 검색 엔진까지 들어가야지 이미지가 출력된다.
1. KNN : 이미지를 비교할 때 픽셀 별 단순 차이만 가지고 거리를 계산한다. 어떤 픽셀이 보다 강조되어야 하는지 측정하기가 어려운 것이 단점이다. (이미지 유사도가 높은 = 거리가 짧은)
2. KNN + PCA: 변동성이 가장 많은 픽셀에 초점을 맞춰(PCA), 높은 가중치를 부여한 픽셀을 조합하여 인공변수를 만들어 거리를 계산하는 것이 효과적이어서 이렇게 보완되어 발전하였다.
인근 픽셀 유사도를 찾아야 하는데 머신러닝이므로 flatten 할 수밖에 없다. 위-아래 구성된 픽셀이 flatten 되면서 멀리 떨어지게 되므로 신호가 멀어진다, 이미지 특성을 무시한 flatten 데이터를 학습하면 인근 픽셀의 유사도 측정이 어려운 것이 한계이다.
3. CNN: 인근 픽셀 가중치 보완
mnist 이미지 분석
1. 데이터 로딩
2. 변수 스케일링
minmax scaling 효과를 가짐 + 머신러닝 학습을 위한 2차원 형태 변환
3. 모델링
1) knn
2) knn + pca
3) ANN
0의 신호 따로, 1의 신호 따로, 2의 신호 따로...
0일 확률 1, 1의 확률 이렇게 봐야하므로 softmax를 사용하여야 함
그러므로 Y를 반드시 변환하여야 한다.
step 1) Y 변환
step 2) 모델링
step 3) compile 및 정지 규칙 생성
step 4) 베스트 모델 저장 (개선이 되면 저장)
step 5) 훈련
loss : 9.0802e-04, accuracy : 0.9946, val_loss: 0.0043, val_accuracy: 0.9749
step 6) 평가
step 7) 시각화
신호가 복잡해질수록, 즉 클래스가 많아질수록 relu나 sigmoid를 쓰면 우리가 학습한 데이터셋과 다른 조합이 될 수도 있으므로 안전하게 하기 위해 softmax를 쓰는 것.
어떤 게 성능이 좋은 지는 테스트가 필요하다.
loss function 정의도 중요하지만 activation function 정의하는 것도 중요하다.
10개 클래스를 가지고 있는데 model.add(Dense(1, activation= 'relu')) 하면 안된다.
model.add(Dense(10, activation = 'relu')) 하여야 한다.
딥러닝 하려면 데이터 품질이 아주 중요하다.
결측치 대치 등의 검증들을 한 것은 데이터 품질을 높이기 위한 것이다.
비정형은 정형보다 데이터 품질이 정말 좋지 않다.
데이터를 직접 수집하여 딥러닝 모델을 구현하겠다고 하는 것은 모든 그림을 다 같은 규격 사이즈로 만들어 놓아야 한다. 뒤집어진 그림도 rotation 하여야 한다.
step 8) 예측에 실패한 데이터 확인
cnn은 다음 시간에
'배우기 > 복습노트[Python과 분석]' 카테고리의 다른 글
[복습] Python | 분석 | 감성분석 Intro (0) | 2024.04.13 |
---|---|
[복습] Python | 분석 | 딥러닝(CNN) 이미지 분석(2) + 하루끝(20240402) (0) | 2024.04.12 |
[복습] Python | 분석 | 딥러닝(ANN) - stopping rule 적용 (0) | 2024.04.01 |
[복습] Python | 분석 | 딥러닝(ANN) (0) | 2024.04.01 |
[복습] Python | 분석 | 시계열 분석(2) (0) | 2024.03.10 |