빅데이터분석기사 55

[빅데이터분석기사] 인공신경망(Artificial Neural Network)

핵심요약 인공신경망(ANN)은 기계학습과 인지과학 분야에서 고안한 학습 알고리즘이다. 신경세포의 신호 전달체계를 모방한 인공뉴런(노드)이 학습을 통해 결합 세기를 변화시켜 문제를 해결하는 모델 전반을 가리킨다. 인공신경망의 시작, 퍼셉트론 퍼셉트론은 신경세포 뉴런들이 신호, 자극 등을 받아 어떠한 임계값(threshold)을 넘어서면 그 결고를 전달하는 신경세포의 신호 전달 과정을 착안하여 만들어졌다. 이를 수학적인 기호로 모델링 한 것이 퍼셉트론인데, 퍼셉트론은 각각의 가중치의 크기를 적절히 조절하여 입력 신호이 크기를 정한다. 입력 신호들의 합에 활성화 함수를 거쳐 나온 결괏값을 전달함으로써 원하는 결괏값을 얻는 방식으로 동작한다. 아래 그림은 단층 퍼셉트론으로 AND, OR, NAND와 같은 비교적..

[빅데이터분석기사] 군집분석(Clustering Analysis)

군집분석 분류 기준이 없는 상태에서 데이터 속성을 고려해 스스로 전체 데이터를 N개의 소그룹으로 묶어내는(Clustering) 분석법이다. 유사성이 높은 대상 데이터를 묶고, 서로 다른 그룹에 속한 데이터 개체 간의 이질성을 계산하는 과정을 거친다. 계층적 군집화(Hierarchical Clustering) 가장 유사한 개체를 묶어 나가는 과정을 반복하여 원하는 개수의 군집을 형성하는 방법이다. 계층적 군집을 형성하는 방법에는 작은 군집으로부터 출발하여 군집을 변합해 나가는 병합적 방법과 큰 군집으로부터 출발하여 군집을 분리해 나가는 분할적 방법이 있다. 왼쪽 그림은 병합적 방법으로 군집을 형성해 나가는 과정을 보여주고 있다. 계층적 군집의 결과는 오른쪽 그림과 같이 덴드로그램(dendrogram)의 형..

[빅데이터분석기사] 데이터탐색과 데이터정제 실습 (2)

4. 변수 변환 4-1. log 변환 import numpy as np data['log_salary'] = np.log(data['salary']) data['log_sales'] = np.log(data['sales']) data['log_roe'] = np.log(data['roe']) data.head() data.hist(bins=50, figsize=(20, 15)) data.corr() 4-2. 제곱근 변환 data['sqrt_salary'] = np.sqrt(data['salary']) data['sqrt_sales'] = np.sqrt(data['sales']) data['sqrt_roe'] = np.sqrt(data['roe']) data.head() data.hist(bins=50, ..

[빅데이터분석기사] 데이터탐색과 데이터정제 실습 (1)

1. 데이터탐색: 단변량 import pandas as pd data=pd.read_csv('Ex_CEOSalary.csv', encoding='utf-8') data.info() data.head() 1-1. 범주형 자료의 탐색 data['industry'].value_counts() data['industry'] = data['industry'].replace([1, 2, 3, 4], ['Service', 'IT', 'Finance', 'Others']) data['industry'].value_counts() %matplotlib inline data['industry'].value_counts().plot(kind="pie") data['industry'].value_counts().plot(ki..

[빅데이터분석기사] 서포트벡터머신(SVM)

서포트벡터머신(SVM) 분류를 위한 기준선을 정의하는 모델이다. 분류되지 않은 새로운 점이 나타나면 어느 쪽에 속하는지 확인을 위해서 결정 경계를 정한다. 데이터에 2개 속성(feature)만 있다면 결정 경계는 간단한 선 형태가 된다. 속성이 3개가 되면 3차원으로 그려야 한다. 이때의 결정 경계는 '선'이 아닌 '평면'이 된다. 우리가 이렇게 시각적으로 인지할 수 있는 범위는 딱 3차원까지다. 차원, 즉 속성의 개수가 늘어날수록 당연히 복잡해질 것이다. 결정 경계도 단순한 평면이 아닌 고차원이 되는데 이를 '초평면(hyperplane)'이라고 부른다. 결정 경계는 여러 형태로 정할 수 있다. 그래프C를 보면 경계선이 파란색 클래스(분류)와 너무 가까워 보인다. 결정 경계가 가장 적절한 것은 그래프 F..

[빅데이터분석기사] 앙상블(Ensemble)

앙상블 학습(Ensemble Learning) 그동안 우리는 여러 기계학습 모델들을 살펴보았다. 이렇게 개별적으로 동작하는 모델들을 모아 종합적으로 의사결정을 한다면 어떨까? 앙상블은 프랑스어로 전체적인 어울림이나 통일을 의미하며 음악에서 2인 이상의 가창이나 합주를 의미하기도 한다. 예측력을 높이기 위해 여러 가지 학습알고리즘이 어울려 성능을 높이는 방식을 기계학습 분야에서 앙상블(Ensemble) 학습이라 한다. 앙상블 종류 앙상블 학습 방식에는 크게 Voting, Bagging, Boosting의 3가지로 나눌 수 있다. Voting(투표) 방식은 여러 모델로부터 나온 후보 결과들 중 다수가 나온 결과를 채택하는 방식이다. Bagging은 같은 모델을 사용하지만 훈련세트에서 중복을 허용한 여러 부분..

[빅데이터분석기사] 파이썬 데이터 정제 실습

1. 데이터 불러오기 및 탐색 import pandas as pd data = pd.read_csv('house_raw.csv') data.head() data.describe() data.hist(bins=50, figsize=(20, 15)) array([, ], [ ], [, ]], dtype=object) 2. 선형회귀 적용(정제 전 데이터) # 특성데이터셋, 레이블 데이터셋 나누기 X = data[data.column[0:5]] y = data[["house_value"]] # 학습용 데이터(tarin)와 테스트용 데이터(test) 구분을 위한 라이브러리 불러오기 from sklearn.model_selection import train_test_split X_train, X_test, y_tr..

[빅데이터분석기사] 랜덤포레스트(Random Forest)

랜덤포레스트(RF) 의사결정나무를 여러개 모아서 데이터 분류 및 예측을 수행하는 AI알고리즘이다. 어떤 데이터 집단에 대한 분류나 예측을 실시한다고 할 때, 하나의 결정트리를 사용하는 것보다 여러 트리를 결합해서 사용하면 보다 높은 성능의 알고리즘 모형을 만들 수 있다. 여러 나무와 하나의 포레스트, 배깅(Bagging, Bootstrap Aggregationg) 결정트리를 독립병렬 결합하는 방식을 배깅이라고 한다. 원 자료에서 하위 데이터 세트를 만드는 부트스트랩 과정을 포함한다. 데이터 건수는 동일하게 그리고 데이터 무작위 추출 시 중복은 허용(복원추출)하여 각 트리 모형들이 학습할 데이터 세트를 그 수에 맞게 준비해야 한다. 가령 결정트리 서른 개를 사용한다면, 전체 자료에서 데이터를 추출하여 30..

[빅데이터분석기사] 넘파이(numpy) 판다스(pandas)

1. numpy 배열 생성 # numpy 배열 기본 import numpy as np v1 = np.array([1, 2, 3, 4]) print(v1) [1 2 3 4] # 연속되거나 일정한 규칙을 가진 숫자 v1 = np.arange(5) print(v1) # 연속되거나 일정한 규칙을 가진 숫자, 데이터 형태 지정 v2 = np.arange(1, 10, 2, dtype=int) v3 = np.arange(3.5, 10.5, 2, dtype=float) print(v2) print(v3) # 제곱값 생성 v4 = np.arange(1, 10, 2)**2 print(v4) # 세제곱값 생성 v5 = np.arange(1, 10, 2)**3 print(v5) [0 1 2 3 4] [1 3 5 7 9] [3..

[빅데이터분석기사] 파이썬(Python) 기초 - 자료형 if문 반복문

1. 숫자형(number) # 정수형, 실수형 a = 123 b = -123.4 a+b -0.4000000000000057 # 8진수 c = 0o34 d = 0o24 c+d 48 # 16진수 e = 0x2A f = 0xFF e+f 297 2. 문자형(String) # 문자열 s = 'WiseInCompany' s1 = 'WiseInCompany' s2 = '''WiseInCompany' s3 = "123" print(s) print(s1) print(s2) print(s3) print(type(s3)) WiseInCompany WiseInCompany WiseInCompany 123 # 문자열 연산하기 a = "Wise" b = "InCompany" print(a+b) a = "WiseInCompany"..