데이터 분석 16

KNN

KNN(k-nearest-neighbors)는 새로운 관측값이 주어지면 기존 데이터 중에서 가장 속성이 비슷한 k개의 이웃을 먼저 찾는다. 그리고 가까운 이웃들이 갖고 있는 목표 값과 같은 값으로 분류하여 예측한다. 따라서 KNN 알고리즘은 지도학습의 한 종류로 거리기반 분류분석 모델이다. k 값에 따라 예측의 정확도가 달라지므로, 적절한 k값을 찾는 과정이 매우 중요하다. KNN은 데이터 간 거리를 참조할 때 '유클리디안 거리' 계산법을 사용한다. 간단하지만 이미지 처리, 영상 인식, 추천 알고리즘, 데이터의 패턴 인식 등으로 사용할 수 있다. 명목 데이터를 처리하고자 할 때, 유클리디안 거리 계산은 명목 데이터를 처리할 수 없으므로, 수치 형식으로 변환해야 한다. 이때 '더미 코딩'을 활용할 수 있다..

분류 분석

분류(classification) 알고리즘은 예측하려는 대상의 속성(독립 변수)를 입력 받고, 종속변수가 갖고 있는 카테고리(범주형) 값 중에서 어느 한 값으로 분류하여 예측한다. 고객 분류, 질병 진단, 스팸 메일 필터링, 음성 인식 등 종속 변수가 카테고리 값을 갖는 경우에 사용하며 KNN, SVM, Decision Tree, Logistic Regression 등 다양한 알고리즘이 존재한다. 분류 분석의 목적 분류 분석은 분석목적에 따라 두 가지의 의미를 갖는데, - 첫째는 사전에 정의된 둘 이상의 집단의 차이를 분류할 수 있는 분류기(classifier)를 찾아내는 훈련의 방법을 말하며, - 둘째는 이렇게 훈련을 거쳐 준비된 분류기를 활용하여 데이터 세트의 개별 관측값들이 어느 집단에 속하게 될지..

신경망 적용 ③

이번에는 보스턴 주택 가격 데이터셋, Boston Housing을 사용해보자. 1970년대 보스턴 지역의 범죄율, 토지 지역의 비율, 방의 개수 등 정답을 포함한 총 14개의 특성으로 이루어져 있다. 연속적인 값을 예측하는 회귀 문제이다. 데이터 불러오기 데이터는 13개의 특징이 있으며, 레이블은 주택 가격의 중간 가격($1,000단위)을 나타낸다. 데이터 전처리 및 검증 데이터셋 생성 ※ 이 전에 다루었던 MINST 데이터셋은 특성의 스케일이 모두 동일했지만, 이번 데이터셋은 그렇지 않다. 예를 들면 범죄율 같은 특성은 0~1의 값을 가지지만, 방의 개수는 3~9의 범위를 가진다. 이러한 스케일의 차이는 신경망의 성능에 큰 영향을 미친다. 때문에 각 데이터 특성이 가지는 범위를 동일하도록 조정해야 한다..

신경망 적용 ②

이번엔 추가로 Fashion-MNIST 데이터셋을 활용하여 모델 성능을 평가해보자. 데이터 셋의 데이터 예시와 각 레이블에 해당하는 의류 품목은 위와 같다. MNIST 데이터셋과 동일하게 60,000개의 학습 데이터와 10,000개의 테스트 데이터로 구성되어 있다. 데이터 그려보기 전처리 및 검증 데이터셋 생성 첫 번째 모델 구성 위의 코드에서는 MNIST 데이터셋의 코드와는 다르게 (28, 28)로 이루어진 의류 이미지 데이터를 (28*28) 형태로 변환하는 전처리 과정을 생략했다. 대신 모델의 첫 번째 층에 Flatten 층을 추가한다. Flatten층은 배치 크기를 제외하고 데이터를 1차원 배열의 형태로 변환한다. 학습 과정 설정 및 학습 첫 번째 모델 구성 작은 개수의 Dense 층만 사용해도 높..

신경망 적용 ①

MNIST √ 데이터 셋은 딥러닝 입문에 가장 많이 사용되는 MNIST 데이터 셋을 사용합니다. √ MINST 데이터 셋은 0~9 숫자를 예측하는 다중 분류 문제입니다. 데이터는 숫자 이미지(28*28)와 각 이미지에 해당하는 레이블(0~9)로 이루어져 있고, 6만개의 학습 데이터와 1만개의 테스트 데이터로 구성되어 있습니다. 문제 위의 손글씨 이미지를 몇 %나 정확히 예측할 수 있을까? 데이터 전처리 ① from keras.datasets import mnist # MNIST 데이터 불러오기 (x_train, y_train), (x_test, y_test) = mnist.load_data() 학습에 사용될 x_train, y_train/ 테스트에 사용될 x_test, y_test로 불러온다. 28*28..

딥러닝 활용_NLP

NLP 자연어 처리는 인간의 언어 현상을 컴퓨터와 같은 기계를 이용해서 묘사할 수 있도록 연구하고 이를 구현하는 인공지능의 주요 분야 중 하나다. 자연어 처리는 연구 대상이 언어이기 때문에 당연하게도 언어 자체를 연구하는 언어학과 언어 현상의 내적 기재를 탐구하는 언어 인지 과학과 연관이 깊다. 구현을 위해 수학적 통계적 도구를 많이 활용하며 특히 기계학습 도구를 많이 사용하는 대표적인 분야이다. 정보검색, QA 시스템, 문서 자동 분류, 신문기사 클러스터링, 대화형 Agent 등 다양한 응용이 이루어지고 있다. 따라서 텍스트를 정제하는 전처리 과정이 반드시 필요하다.​ ​원리 이해하기 텍스트 데이터를 신경망에 입력하기 위해서 일반적으로 토큰화 작업을 수행하고 정의된 토큰에 고유 인덱스를 부여한 뒤, 인..

역전파

역전파, 오차 역전파법(Backpropagation) 또는 오류 역전파 알고리즘은 다층 퍼셉트론 학습에 사용되는 통계적 기법을 의미한다. 경사 하강법의 확장 개념이며, 다층 퍼셉트론에서의 최적화 과정이다. 일반적인 다층 퍼셉트론의 형태는 [입력층 - 은닉층 - 은닉층 - ... - 출력층]으로 구성되며, 각 층은 서로 교차되는 가중치 값으로 연결되어 있다. 신경망 내부의 가중치는 오차 역전파 방법을 사용해 수정한다. 주어진 문제를 해결하기 위해 구성한 모델에서 수많은 가중치를 무작위로 설정한 뒤 결과값을 도출하고, 이를 정답과 비교하여 동일 입력층에 대해 원하는 값이 출력되도록 개개의 가중치를 조정하는 방법으로 사용되며, 속도는 느리지만 안정적인 결과를 얻을 수 있는 장점이 있어 기계 학습에 널리 사용되..

경사하강법

Gradient descent 신경망은 가중치를 업데이트하면서 주어진 문제를 최적화한다. 이때, 가중치를 업데이트하는 방법에는 대표적으로 경사하강법을 사용한다. 경사하강법은 특정 함수에서의 미분을 통해 얻은 기울기를 이용하여 최적의 값을 찾아가는(손실을 줄이는) 방법이다. 즉, 기울기가 0인 부분을 찾아 가는 것이다. 위의 그래프는 y=x^2 함수이기 때문에, 어느 지점에서 출발해도 경사를 따라 내려가다 보면 최적값을 만날 수 있다. 하지만 보통의 문제는 다음과 같은 경우가 많다. 우리가 원하는 모델의 성능은 전역 최솟값(global minimum)에 도달하는 것이다. 하지만 왼쪽 점에서 시작하면 지역 최솟값(local minima)에 빠질 위험이 높다. 이러한 이유로 경사하강법은 항상 최적값을 반환한다..

다중회귀분석

다중회귀분석은 여러 개의 독립변수가 종속변수에 영향을 주고 선형 관계를 갖는 경우에 사용한다. 모형의 예측값인 종속 변수에 대한 실제 데이터를 알고 있는 상태에서 학습하기 때문에 지도학습으로 분류된다. 선형회귀분석 모형 객체(lr)을 생성한다. 그리고 훈련 데이터로 모형을 학습시킨다. 모형 학습이 완료되면 훈련 데이터를 제외한 나머지 검증 데이터를 사용하여 모형의 평가 지표인 결정계수를 구한다. 반환된 결정계수 값은 0.7 정도로 비교적 양호한 수준이다. 그리고 회귀방정식을 구성하는 독립 변수의 계수(a1,a2,a3,...)인 lr.coef_와 상수항(b)을 나타내는 lr.intercept_ 를 찾는다. 독립 변수 3개에 대한 계수가 [[-0.56850996 -0.0422319 -0.00507452]] ..

신경망

퍼셉트론(perceptron)은 x와 w를 곱한 값을 모두 더한 다음 거기에 바이어스 값을 더한 하나의 값(y, 가중합)으로 만들어 낸다. 이를 임계값과 비교하여 크면 1, 그렇지 않으면 0을 출력한다. 이렇게 신경망에서 만들어진 값을 활성화 함수(activation function)로 적절한 출력값으로 변환시켜준다. 여러 층의 퍼셉트론을 서로 연결시키고 조합하여 주어진 입력 값에 대한 판단을 하게 하는 것. 그것이 바로 신경망의 기본 구조이다. 최종 결과값은 정해놓은 정답과 비교하게 되는데, 특정 알고리즘을 사용하여 최적값을 찾을 때까지 가중치를 업데이트하면서 학습을 반복하게 된다. ※ 퍼셉트론의 과제 단 하나의 퍼셉트론으로는 많은 것을 기대할 수가 없다. 예를 들어 결과값이 0이면 흰점으로, 1이면 ..