마지막 주차 과제


📃 07-1-1. 어떤 인공 신경망의 입력 특성이 100개이고 밀집층에 있는 뉴런 개수가 10개일 때 필요한 모델 파라미터의 개수는 몇 개인가요?

- 1010개

🖍) 100개의 입력 특성과 밀집층의 뉴런 개수 10개를 곱한 1000개의 파라미터에 뉴런개수와 동일한 개수의 절편이 필요하므로 1010개

 

📃 07-1-2. 케라스의 Dense 클래스를 사용해 신경망의 출력층을 만들려고 합니다. 이 신경망이 이진 분류 모델이라면 activation 메개변수에 어떤 활성화 함수를 지정해야 하나요?

- sigmoid

🖍) Dense는 신경망에서 가장 기본 층인 밀집층을 만드는 클래스이다. 그중 activation 매개 변수엔 사용할 활성화 함수를 지정한다.

        그 중 2개의 클래스를 분류하는 이진 분류라면 sigmoid 함수를 사용한다.

 

📃 07-1-3. 케라스 모델에서 손실 함수와 측정 지표 등을 지정하는 메서드는 무엇인가요?

- compile()

🖍) compile 메소드는 모델 객체를 만든 후 훈련하기 전에 사용할 손실 함수와 측정 지표 등을 지정하는 메서드이다.

 

📃 07-1-4. 정수 레이블을 타깃으로 가지는 다중 분류 문제일 때 케라스 모델의 compile() 메서드에 지정할 손실 함수로 적절한 것은 무것인가요?

- sparse_categorical_crossentropy

🖍) compile 메소드의 loss 매개변수에 손실 함수를 지정한다. 이진 분류일 경우 'binary_crossentropy', 다중 분류일 경우 'categorical_crossentropy'로 지정하며 클래스 레이블이 정수일 경우 'sparse_categorical_crossentropy'로 지정한다. 회귀 모델일 경우 'mean_square_error'등으로 지정할 수 있다.

 

벌써 5주차...


 

📃 k-평균 알고리즘

1. 랜덤하게 클러스터 중심을 정하고 클러스터를 만든다.

2. 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경한다.

3. 클러스터 중심에 변화가 없을 때까지 반복한다.

 

출처 : https://rpubs.com/sandipan/205018

 

📃 클러스터 중심

k-평균 알고리즘이 만든 클러스터에 속한 샘플의 특성 평균값

센트로이드(centroid)라고 부르리도 한다. 가장 가까운 클러스터 중심을 샘플의 또 다른 특성으로 사용하거나 새로운 샘플에 대한 예측으로 활용할 수 있다.


 

📃 교차 검증

모델을 만드는 훈련에 사용하는 데이터가 많을 수록 좋은 모델이 만들어진다.

제공되어지는 전체 데이터에서 학습, 검증, 테스트를 위한 데이터 세트를 만들게 되는데, 훈련에 사용하는 데이터를 많이 부여하면 검증 점수가 들쭉날쭉 불안정해진다.

 

훈련 세트에서 모델을 훈련하고 검증 세트에서 모델을 평가한다. 그리고 마지막에 테스트 세트에서 최종 점수를 평가 한다.

 

교차 검증(cross validation)을 이용하면 안정적인 검증 점수를 얻고 훈련에 더 많은 데이터를 사용할 수 있다.

교차 검증은 검증 세트를 따로 떼어 내어 평가하는 과정을 여러 번 반복한다. 그 다음 이 점수를 평균하여 최종 검증 점수를 얻는다.

 

훈련세트를 k 부분으로 나눠서 교차 검증을 수행하는 것을 k-폴드 교차 검증이라고 한다.

 

위의 그림과 같이 훈련세트를 k 개의 세트로 나누어 돌아가며 훈련세트의 모델 훈련과 검증 세트의 모델 평가를 수행한다.

데이터의 각 부분이 번갈아가며 검증세트로 활용되어진다고 이해하면 쉽다.

 

각 행별 모델 훈련과 모델 평가가 수행되고 나면 검증세트로 나온 검증 점수의 평균을 도출한다.

 

이렇게 검증세트를 부분별로 평가하며 검증 점수의 평균을 낸다면 데이터의 80~90% 까지 훈련에 사용할 수 있다.

그림의 예시로는 4개의 부분으로 나누어 교차 검증하는 4-폴드 교차 검증이지만 보통 5-폴드 교차 검증이나 10-폴드 교차 검증을 많이 사용한다.

사이킷런에서는 cross_validatie()라는 교차 검증 함수가 있어서 쉽게 수행할 수 있다.

 

금주는 3주차 Chapter 04...

 

다음에 공부한 내용 등을 정리하기로 하고 미션만 수행

 


📃 미션

Q) 로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수는 무엇인가요?

A) 시그모이드 함수

 

R) 로지스틱 회귀의 예측값을 함수로 표현하기 위해 사용한다.

✍🏻 예측값이 임의의 실수 값을 가지므로 아주 큰 음수일 때 0이 되고, 아주 큰 양수일 때 1이 되도록 바꾸는 함수이다.

 

시그모이드 함수를 이용해서 변화하는 z 값에 대해 확률로 변환하여 0 ~ 1.0의 값으로 산출 할 수 있다.


 

k-최근접 이웃 회귀

예측하려는 샘플에 가장 가까운 샘플 k개를 선택하여 샘플의 수치의 평균을 구하여 새로운 예측값을 추정하는 회귀분석법

 

✍🏻회귀 : 두 변수 사이의 상관관계를 분성하는 방법, 임의의 값을 예측하는 분석법

 

데이터 준비

농어의 길이와 무게의 데이터를 준비
1. 사이킷런의 train_test_split() 함수를 사용해서 훈련세트와 테스트 세트로 나누며 샘플링 편향도 쉽게 해결할 수 있다. 2. numpy의 배열의 reshape로 크기를 바꿈

결정계수(R²)

R² = 1 - (타깃 - 예측)² 의 합 / (타깃 - 평균)² 의 합

종속변수의 분산 중에서 독립변수로 설명되는 비율, 모델이 타겟 변수를 얼마나 잘 예측 혹은 설명하는지 평가지표로 사용된다.

예측이 평균값만큼의 예측을 수행한다면 분자와 분모 값이 비슷해져서 결정계수 값이 0에 가까워진다.

예측이 타깃값에 가깝게 예측한다면 분자가 0에 가까워지기 때문에 결정계수 값이 0에 가까워진다.

 

과대적합 vs 과소적합

훈련한 모델의 점수를 산정하였을때 훈련 세트에서 점수가 좋고 테스트 세트에서 점수가 나쁘다면 과대적합

훈련한 모델의 점수를 산정하였을때 테스트 세트에서 점수가 좋고 훈련 세트에서 점수가 나쁘다면 과소적합

  과대적합 과소적합
훈련 세트 훈련 세트 점수 > 테스트 세트 점수 테스트 세트 점수 > 훈련 세트 점수
테스트 세트

✍🏻 과대적합시 새로운 샘플에 대한 예측이 잘 동작하지 않을 가능성이 높음

✍🏻 두 세트의 점수가 모두 너무 낮은 경우에도 과소적합이라고 하며 훈련모델이 단순하여 적절히 훈련되지 않았다고 판단

 

k-최근접 이웃 회귀의 경우 근처 샘플의 갯수 k를 조절하여 훈련하면 모델의 점수를 조절할 수 있다.

✍🏻 과대적합일 경우 n_neighbor 속성값을 늘리고, 과소적합은 반대로 값을 줄여 훈련하면 해결할 수 있다.

✍🏻 데이터의 크기가 크고 정교할수록 더욱 학습에 적합하다.

 

📃미션

Ch. 03(03-1) 2번 문제 출력 그래프 인증샷

 

문제) 과대적합과 과소적합에 대한 이해를 돕기 위해 복잡한 모델과 단순한 모델을 만들겠습니다. 앞서 만든 k-최근접 이웃 회귀 모델의 k 값을 1, 5, 10으로 바꿔가며 훈련해 보세요. 그다음 농어의 길이를 5에서 45까지 바꿔가며 예측을 만들어 그래프로 나타내 보세요. n이 커짐에 따라 모델이 단순해지는 것을 볼 수 있나요?

반복문을 통해 n의 값을 변동하여 모델을 훈련하여 x의 예측값을 구해 그래프를 그린다. (추가로 스코어 점수를 비교하여 단순해지는 것을 명시적으로 확인)
n_neighbor의 값이 증가함에 따라 훈련데이터의 스코어 점수가 점점 내려가고 모델이 단순해짐을 확인

 

선형 회귀

특성이 하나인 경우 해당 특성을 잘 나타낼 수 있는 직선을 학습하는 알고리즘

✍🏻선형 회귀가 찾은 특성과 타깃 사이의 관계는 선형 방정식의 계수 또는 가중치에 저장된다.

 

모델 파라미터

선형 회귀가 찾은 가중치처럼 머신러닝 모델이 특성에서 학습한 파라미터를 말함,

많은 머신러닝 알고리즘의 훈련 과정은 최적의 모델 파라미터를 찾는 것과 같다. (이를 모델 기반 학습이라 한다.)

✍🏻 k-최근접 이웃에서는 모델 파라미터가 없으며 훈련 세트를 저장하는 것이 훈련의 전부였다. (이를 사례 기반 학습이라 한다.)

 

다항 회귀

다항식을 사용하여 특성과 타깃 사이의 관계를 나타낸다. 함수의 그래프가 비선형일 수 있지만 여전히 선형 회귀로 표현 가능

 

규제

머신러닝 모델이 훈련 세트를 너무 과도하게 학습하지 못하도록 훼방하는 것을 말함, 즉 훈련 세트에 과대적합되지 않도록 하는 것

 

릿지 회귀

규제가 있는 선형 회귀 모델, 선형 모델의 계수를 작게 만들어 과대적합을 완화시킨다.

 

라쏘 회귀

릿지와 같이 규제가 있는 선형 회귀 모델, 릿지와 다르게 계수 값을 아예 0으로 만들 수도 있다.

 

📃 선택미션

모델 파라미터에 대해 설명하기

머신러닝 모델이 특성에서 학습한 파라미터를 의미하며 학습된 모델의 능력을 결정하며 학습된 모델의 일부로 저장이 된다.

1️⃣장

 

인공지능

인공지능(Artificial intelligence)은 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술

 

✍🏻 컴퓨터의 서능 한계로 AI 겨울을 거치기도 함

 

머신러닝

머신러닝(Machine learning)은 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야,

인공지능의 하위 분야 중에서 지능을 구현하기 위한 소프트웨어를 담당하는 핵심 분야

머신러닝은 통계학에서 유래된 알고리즘이 많으며 상호 작용하며 발전 중

 

딥러닝

머신러닝 알고리즘 중에 인공 신경망(Artificial neural network)을 기반으로 한 방법들을 통칭하여 딥러닝(Deep learning)이라 함

딥러닝 기술은 복잡한 알고리즘을 훈련할 수 있는 풍부한 데이터, 컴퓨터 성능의 향상, 알고리즘의 발전을 통해 뛰어난 성능을 보이게 됨

 

구글 코랩

웹에서 파이썬 프로그램을 테스트하고 저장할 수 있는 서비스, 클라우드 기반의 주피터 노트북 개발 환경

https://colab.research.google.com/

 

Google Colaboratory

 

colab.research.google.com

 

✍🏻 여기서 노트북은 코랩의 프로그램 작성 단위이며 일반 프로그램 파일과 달리 대화식으로 프로그램을 만들 수 있기 때문에 데이터 분석이나 교육에 매우 적합

 

 

생선의 길이와 무게 데이터를 특성(feature)라 하며 특성을 이용하여 산점도를 그릴 수 있다.

✍🏻 머신러닝에서 여러 개의 종류 혹은 클래스(class)라고 부르는 것 중 하나를 구별해 내는 문제를 분류(classification)이라고 함

✍🏻 특정 데이터를 도미와 빙어라는 2개의 클래스 중 하나로 분류하는 문제는 이진 분류(binary classification)이라고 함

 

 

🐟머신러닝을 사용해 도미와 빙어를 구분 짓고자 한다.

각 생선의 특성을 그래프로 표현하면 데이터를 잘 이해할 수 있고 작업에 대한 힌트를 얻을 수도 있다.

✍🏻 산점도 : x축과 y축의 그래프에 데이터를 점으로 표시하는 그래프

파이썬에서 과학계산용 그래프를 그리는 대표적인 패키지 맷플롭립(matplotlib)을 이용하여 산점도를 구한다.

 

도미의 특성을 이용해 그린 산점도
빙어의 특성을 이용해 그린 산점도
2개의 산점도를 한 그래프로 표현하는 법

 

k-최근접 이웃 (k-Nearest Neighbors) 알고리즘을 사용한 이진 분류

✍🏻 k-최근접 이웃 알고리즘 : 어떤 데이터에 대한 답을 구할 때 주위의 다른 데이터를 보고 다수를 차지하는 것을 정답으로 사용(주변 값)

 

도미와 빙어 데이터를 2차원 배열로 준비하여 사이킷런(scikit-learn) 패키지를 이용하여 이진 분류를 수행한다.

도미와 빙어의 특징이 담긴 2차원 배열 준비
2차원 배열의 각각 특성을 도미인지 빙어인지 구분하는 target 배열

 

fish_data 와 fish_target을 사용하여 훈련을 수행하여 모델 kn을 평가한다.

모델 kn의 score 메서드 값은 1.0, 즉 모든 데이터를 맞추었다.
길이 30센치, 600그램의 생선은 도미로 판단하였다.

 

kn 모델은 훈련시에 전달한 모든 데이터를 가지고 있다가 새로운 데이터가 등장하면 가장 가까운 데이터를 참고하여 도미인지 빙어인지 구분한다.

 

가까운 데이터의 참고갯수는 n_neighbors 매개변수로 변경 가능 (기본값은 5이다.)

가장 가까운 데이터 49개를 사용하는 모델에선 도미만 올바르게 맞추어 정확도가 매우 떨어진다.

 

 

 

2️⃣장

 

샘플링 편향으로 정확도가 0을 도출

넘파이 라이브러리를 활용하여 랜덤하게 샘플을 선택해 훈련 세트와 테스트 세트를 만든다.

 

+ Recent posts