# 신경망에서 노드 갯수, 훈련 데이터 크기
1) 적절한 은닉층 갯수는?
답은 없음.! 사용자가 임의로 정해줘야함. 요즘은 최적의 노드수를 정해주는 알고리즘이 존재
2) 훈련 데이터 세트의 크기?
A = H(hidden layer)*(input node 갯수+1)+H+1개의 가중치가 존재

따라서, 여기에 100을 곱한 A*100개의 데이터셋이 필요함.
**너무 적은 숫자로 인공신경망 구조를 학습하는 것은 나쁨 (의사결정나무의 경우 훈련데이터의 크기는 상관이 없음)
# 중요 파라미터
1) 모멘텀: 방향성
2) 학습률: 새로운 정보 학습 비율
# 특성 (Feature)
- 특성의 수(노드 수)가 많을 경우 신경망에 영향을 미친다
1) 과적합의 위험이 커짐 (훈련데이터의 크기도 커져야 함)
2) 시간이 많이 걸리며 weight들이 최적화될 가능성이 낮아짐
- 유의미한 최소한의 변수만을 훈련 데이터로 사용하는 것이 좋음
1) 변수와의 상관관계
2) 의사결정 나무
3) 직관의 사용
- feature engineering
예1> 우편번호 --> 지역의 평균 수입, 평균 집값, 인구 통계학 필드 추가
예2> 날짜 --> 주말 vs. 평일, 공휴일 vs. 평일 등으로 바꾸기 가능
예3> 주소 텍스트 필드 --> 중요한 정보를 추출하여 숫자로 표현. 수도권 vs. 비수도권 등으로 바꾸기 가능
# 입력값 (Input)
1) 최댓값, 최솟값 사이의 연속값
2*[(X-Min)/{(Max-Min)+1}] -1
(여기서 분모에 +1하는 이유: -1~+1사이에 값이 위치할 수 있도록 분모를 키우기 위함)
2) Skewed distribution (한쪽으로 치우친 분포)
- log 치환: 큰값을 줄여 분포를 비슷하게 맞춘다
- 구간화(bining)진행: 희소한 분포를 갖는 구간의 경우 크기 크게 나누구 밀집 정도가 높은 구간은 작게 나눈다
- 정규화
3) 숫자형/범주형 코딩 방법
- 숫자형(Ordinal):
1. -1~+1 or 0~1로 매핑 가능
Ex. 자녀수 0~4 --> 0(Min), 0.25, 0.5, 0.75, 1(Max) / Min, Max를 고정시키고 균등하게 구간화 매핑
2. 온도계 코딩
Ex. 성적 A, B, C, D 일때, 간격은 A,B 보다 C,D가 간격이 큼
이렇게 간격이 일정하지 X 코딩을 Themometer 코딩이라고 함. 즉, 등급간의 간격이 균등하지 않은 정보가 있을 때 유용함.
- 범주형(Nominal):
Ex. 결혼, 미혼, 이혼, 독신, 사별, 미상
이러한 값들은 OX 문제임. 숫자로 표현하는 것은 적합하지 않음
범주들을 플래그(Flag)들로 한 값당 하나씩 나눠줘야함

- 보통 N-1 중 하나 코딩으로 사용함
# 결과값 (Output)의 해석
1) 연속형 값의 추정
- 역변환 진행 (원래값이 무엇이었는지 추정이 가능함)
2) Binary, 범주형 값의 추정
- 결과 값이 숫자형으로 나오기 때문에 cut off value를 정해서 특정값 이하이면 Fasle, 이상이면 True 분류 가능
- 신경망 출력에 대한 범주화 신뢰수준 계산이 가능
- 특히 배타적인 범주가 아닐 경우 더 유용함
Ex. 고객의 상품군 선호도 예측 모델: 음악 좋아하는지 가전제품을 좋아하는지
* 결과값을 보기 전에 validation set을 돌려보고 결과를 확인한 후 잘 분리 되지 않은 가운데 부분을 어떻게 분리하면 좋을지 생각해보고 ANN을 사용하는 것이 좋음
# ANN의 단점
1) 입력 노드의 크기가 커지면 과적합 문제 발생 --> variable selection issue
2) backpropagation으로 구한 weight값ㅇ르 최적의 값이라고 보증할 수 없음
3) 어떤 결과가 도출된 이유를 정확히 설명하기 어려움. 불투명
4) 결정 내리는 과정을 규칙의 형태로 표현하지 X
결과에 대한 입력값들의 상대적인 중요성을 보기 위해 민감도 분석을 시행할 수 있음
* 민감도 분석 수행단계 (weight값을 모두 구한 ANN이 있다고 가정)
1) 각 입력에 대한 평균을 구함
2) 모든 입력들이 평균값일때의 신경망의 출력을 측정
3) 다른 값들은 평균을 유지한 상태에서 특정 입력을 최소, 최대로 넣어본다 그리고 측정 --> 변화를 측정할 수 있음
이를 통해 해당 Input변수가 output에 영향을 미치는지 알 수 있음
# 시계열 데이터에서 ANN
- 보통 ANN은 시계열에 적합하지 X
- 하지만 같은 feature값을 T1, T2, T3로 시간별로 나눠서 노드(feature)를 만들어서 넣어보는 방법이 존재함
# Logistic 회귀분석 :ANN은 아님..!
- 목표변수가 수치형일때 보통 선형회귀분석이 가능 하지만 범주형일때는 불가능함 (결과값이 0,1로 나오지는 않기 때문)
- logistic 회귀분석은 통계적으로 유의한지 알 수 있음 (ANN과 의사결정나무는 통계적으로 유의한지 알 수 없음)
odds ratio= p/(1-p) (일어날 확률이 일어나지 않을 확률에 비해 몇배가 되는지)
logit(p)= log(p/(1-p))
logistic 함수는 logit을 회귀식에 적용한 것

- 도출되는 내용을 이해하지 못함...좀더 공부가 필요...나중에 추가하기
# 대표적인 딥러닝 알고리즘
- CNN: 보통 이미지 1) convolutional layer 2) pooling layer 3) fully connected layer 4) loss layer (공간적 정보 활용가능)
- RNN: 순차적, 언어, 텍스트 형성에서 주로 쓰임. LSTM 대표적
- 강화학습: 알파고 생각하기. 시행착오로 스스로 학습. 보상/체벌
- GAN: 1) 생성자 2) 식별자 - 진짜같은 가짜 만들기
-dropout: random하게 20, 30% 삭제하고 학습. 특정 노드에 의존하지 않음 강건한 ANN을 만들기 위해 활용됨
'머신러닝 스터디 > 딥러닝' 카테고리의 다른 글
꼭 알아야할 수학(3)_미분심화 (0) | 2023.02.04 |
---|---|
꼭 알아야할 수학(2)_미분 (0) | 2023.01.31 |
꼭 알아야할 수학(1)_로그/행렬/벡터 (0) | 2023.01.31 |
인공신경망 (Artificial Neural Network, ANN)_(3) (0) | 2023.01.22 |
인공신경망 (Artificial Neural Network, ANN)_(1) (1) | 2022.09.29 |