인공 신경망(ANN)을 사용한 분류 모델

게시 됨: 2020-12-01

기계 학습 용어에서 분류는 입력 데이터가 미리 정의된 레이블이 지정된 클래스 중 하나로 분류되는 예측 모델링 문제를 나타냅니다. 예를 들어 예 또는 아니오, 참 또는 거짓을 예측하는 것은 출력 수가 두 개의 레이블로 제한되기 때문에 이진 분류 범주에 속합니다.

유사하게, 다른 연령 그룹을 분류하는 것과 같이 여러 클래스를 갖는 출력을 다중 클래스 분류 문제라고 합니다. 분류 문제는 다양한 사용 사례에서 사용할 수 있는 가장 일반적으로 사용되거나 정의된 유형의 ML 문제 중 하나입니다. 분류 문제에 사용할 수 있는 다양한 기계 학습 모델이 있습니다.

배깅(Bagging)에서 부스팅(Boosting) 기술에 이르기까지 ML은 분류 사용 사례를 처리할 수 있는 것 이상이지만 신경망은 모델 성능을 지원하기 위해 많은 양의 출력 클래스와 많은 데이터가 있을 때 그림으로 나타납니다. 앞으로 Keras(Python)에서 신경망을 사용하여 분류 모델을 구현하는 방법을 살펴보겠습니다.

세계 최고의 대학에서 인공 지능 과정배우십시오 . 석사, 이그 제 큐 티브 PGP 또는 고급 인증 프로그램을 획득하여 경력을 빠르게 추적하십시오.

목차

신경망

신경망은 느슨하게 인간 두뇌 학습을 나타냅니다. 인공 신경망은 레이어 생성을 담당하는 뉴런으로 구성됩니다. 이러한 뉴런은 조정된 매개변수라고도 합니다.

각 레이어의 출력은 다음 레이어로 전달됩니다. 각 계층마다 다른 비선형 활성화 함수가 있어 학습 과정과 각 계층의 출력에 도움이 됩니다. 출력층은 말단 뉴런이라고도 합니다.

출처: 위키피디아

뉴런과 연관되고 전체 예측을 담당하는 가중치는 각 에포크에서 업데이트됩니다. 학습률은 다양한 옵티마이저를 사용하여 최적화됩니다. 각 신경망에는 학습이 계속됨에 따라 최소화되는 비용 함수가 제공됩니다. 그런 다음 비용 함수가 최상의 결과를 제공하는 최상의 가중치가 사용됩니다.

읽기: 초보자를 위한 TensorFlow 객체 감지 튜토리얼

분류 문제

이 기사에서는 Keras를 사용하여 신경망을 구축합니다. Keras는 다음 명령을 사용하여 Python에서 직접 가져올 수 있습니다.

텐서플로를 tf로 가져오기

tensorflow import keras에서

keras.models에서 가져오기 순차

keras.layers에서 Dense 가져오기

데이터세트 및 대상 변수

다음과 같은 기능이 있는 당뇨병 데이터 세트를 사용할 것입니다.

입력 변수(X):

  • 임신: 임신 횟수
  • 포도당: 경구 포도당 내성 검사에서 2시간 동안의 혈장 포도당 농도
  • 혈압: 이완기 혈압(mmHg)
  • SkinThickness: 삼두근 피부 주름 두께(mm)
  • 인슐린: 2시간 혈청 인슐린(mu U/ml)
  • BMI: 체질량 지수(체중(kg)/(높이(m)^2)
  • DiabetesPedigreeFunction: 당뇨병 가계도 기능
  • 나이: 나이(년)

출력 변수(y):

결과: 클래스 변수(0 또는 1) [환자가 당뇨병을 앓고 있는지 여부]

# 데이터세트 로드

df= loadtxt('pima-indians-diabetes.csv', 구분 기호=',')

# 데이터를 X(입력)와 Y(출력)로 분할

X = 데이터세트[:,0:8]

y = 데이터 세트[:,8]

케라스 모델 정의

순차 모델을 사용하여 신경망 구축을 시작할 수 있습니다. 이 하향식 접근 방식은 신경망 아키텍처를 구축하고 모양과 레이어를 사용하는 데 도움이 됩니다. 첫 번째 레이어에는 input_dim을 사용하여 수정할 수 있는 많은 기능이 있습니다. 이 조건에서 8로 설정하겠습니다.

신경망을 만드는 것은 그리 쉬운 과정이 아닙니다. 좋은 모델이 만들어지기까지 많은 시행착오가 있습니다. keras의 Dense 클래스를 사용하여 완전히 연결된 네트워크 구조를 구축합니다. 뉴런은 조밀한 계층에 제공되는 첫 번째 인수로 간주됩니다.

활성화 함수는 활성화 인수를 사용하여 설정할 수 있습니다. 이 경우 활성화 함수로 Rectified Linear Unit을 사용합니다. Sigmoid 또는 TanH와 같은 다른 옵션이 있지만 RELU가 매우 일반화되고 더 나은 옵션입니다.

# 케라스 모델 정의

모델 = 순차()

model.add(Dense(12, input_dim=8, 활성화='relu'))

model.add(Dense(8, 활성화='relu'))

model.add(Dense(1, 활성화='sigmoid'))

Keras 모델 컴파일

모델 컴파일은 모델 정의 다음 단계입니다. Tensorflow는 모델 컴파일에 사용됩니다. 컴파일은 모델 훈련 및 예측을 위해 매개변수를 설정하는 프로세스입니다. CPU/GPU 또는 분산 메모리를 백그라운드에서 사용할 수 있습니다.

다른 레이어에 대한 가중치를 평가하는 데 사용되는 손실 함수를 지정해야 합니다. 옵티마이저는 학습률을 조정하고 다양한 가중치 세트를 거칩니다. 이 경우 손실 함수로 Binary Cross Entropy를 사용합니다. 옵티마이저의 경우 효율적인 확률적 기울기 하강 알고리즘인 ADAM을 사용합니다.

튜닝에 많이 사용됩니다. 마지막으로 분류 문제이기 때문에 메트릭 인수를 통해 정의된 분류 정확도를 수집하고 보고합니다. 이 경우 정확도를 사용합니다.

# 케라스 모델 컴파일

model.compile(loss='binary_crossentropy', 옵티마이저='adam', 메트릭스=['accuracy'])

모델 적합 및 평가

모델을 맞추는 것은 기본적으로 모델 훈련으로 알려져 있습니다. 모델을 컴파일한 후 모델은 데이터를 효율적으로 살펴보고 스스로 학습할 준비가 되었습니다. Keras의 fit() 함수는 모델 학습 과정에 사용할 수 있습니다. 모델 훈련 전에 사용되는 두 가지 주요 매개변수는 다음과 같습니다.

  1. Epoch: 전체 데이터 세트를 한 번 통과합니다.
  2. 배치 크기: 각 배치 크기에서 가중치가 업데이트됩니다. Epoch는 균등하게 분산된 데이터 배치로 구성됩니다.

# 데이터셋에 keras 모델을 맞춥니다.

model.fit(X, y, epochs=150, batch_size=10)

이 과정에서 GPU 또는 CPU가 사용됩니다. 훈련은 에포크, 배치 크기 및 가장 중요한 데이터 크기에 따라 매우 긴 프로세스가 될 수 있습니다.

또한 평가() 함수를 사용하여 훈련 데이터 세트에서 모델을 평가할 수 있습니다. 데이터는 훈련 및 테스트 세트로 나눌 수 있으며 테스트 X 및 Y는 모델 평가에 사용할 수 있습니다.

각 입력 및 출력 쌍에 대해 예측을 생성하고 평균 손실 및 정밀도와 같이 설치한 모든 측정값을 포함하여 점수를 수집합니다.

두 값의 목록은 평가() 함수에 의해 반환됩니다. 첫 번째는 데이터 세트의 모델 손실이고 두 번째는 데이터 세트의 모델 정확도입니다. 보고의 정확성에만 관심이 있으므로 손실의 중요성은 무시합니다.

# 케라스 모델 평가

_, 정확도 = model.evaluate(Xtest, ytest)

print('정확도: %.2f' % (정확도*100))

더 읽어보기: 신경망 모델 소개

결론

분류 기반 신경망을 만들고 평가했습니다. 이 경우 사용된 데이터는 작았지만 신경망은 대부분 큰 수치 데이터 세트에 적합합니다.

기계 학습 및 NLP에서 upGrad의 고급 인증 프로그램을 확인하십시오. 이 과정은 기계 학습에 관심이 있는 다양한 유형의 학생들을 염두에 두고 제작되었으며 1-1 멘토링 등을 제공합니다.

분류에 신경망을 어떻게 사용할 수 있습니까?

분류는 개체를 그룹으로 분류하는 것입니다. 분류 유형은 여러 클래스가 예측되는 곳입니다. 신경망에서 신경 단위는 레이어로 구성됩니다. 첫 번째 계층에서 입력이 처리되고 출력이 생성됩니다. 이 출력은 나머지 레이어를 통해 전송되어 최종 출력을 생성합니다. 동일한 입력이 레이어를 통해 처리되어 다른 출력을 생성합니다. 이것은 다층 퍼셉트론으로 나타낼 수 있습니다. 분류에 사용되는 신경망의 유형은 데이터 세트에 따라 다르지만 분류 문제에는 신경망이 사용되었습니다.

인공 신경망이 분류에 좋은 이유는 무엇입니까?

이 질문에 답하기 위해서는 신경망의 기본 원리와 신경망이 해결하도록 설계된 문제를 이해해야 합니다. 이름에서 알 수 있듯이 신경망은 생물학적으로 영감을 받은 인간 두뇌 모델입니다. 기본 아이디어는 뉴런을 수학적 함수로 모델링하려는 것입니다. 모든 뉴런은 다른 뉴런의 입력을 받아 출력을 계산합니다. 그런 다음 우리는 뇌의 신경망을 모방하는 방식으로 이 뉴런을 연결합니다. 목표는 일부 데이터를 가져와 적절한 출력을 생성할 수 있는 네트워크를 학습하는 것입니다.

인공 신경망은 언제 사용해야 하나요?

인공 신경망은 살아있는 유기체의 성능을 복제하거나 데이터에서 패턴을 감지하려는 상황에서 사용됩니다. 의료 진단, 음성 인식, 데이터 시각화, 손글씨 숫자 예측은 모두 ANN의 좋은 사용 사례입니다. 인공 신경망은 입력과 출력 간의 복잡한 관계를 이해해야 할 때 사용됩니다. 예를 들어, 변수에 노이즈가 많을 수 있으며 이러한 변수 간의 관계를 이해하기 어려울 수 있습니다. 따라서 인공 신경망을 사용하는 것은 지식과 데이터를 유지하는 일반적인 관행입니다.