반응형

빅데이터분석기사 28

[빅데이터분석기사] 19 랜덤포레스트

랜덤포레스트(Random Forest) 학습 데이터로 여러 의사결정트리를 구성하여 분석하고 이를 종합하는 앙상블(ensemble) 기법이다. 의사결정나무 수십~수백개가 예측한 분류나 회귀값을 평균낸 모델로 이해하면 된다. 랜덤포레스트 과정은 ① 데이터에서 부트스트래핑 과정을 통해 N개의 샘플링 데이터 셋 생성 ② 각 샘플링된 데이터셋에서 임의의 변수 선택 후, M개의 총 변수들 중에서 sqrt(M) 또는 M/3개 ③ 의사결정트리들을 종합하여 앙상블 모델을 만들고 OOB error를 통해 오분류율을 평가 이다. scikt-learn 랜덤포레스트는 사이킷런의 ensemble 안에 있다. 이 중 RandomForestClassifier가 분류 알고리즘, RandomForestRegressor가 회귀 알고리즘이..

자기계발/Python 2022.06.22

[빅데이터분석기사] 18 의사결정나무

의사결정나무 의사결정 규칙을 나무구조로 도표화하여 관심대상이 되는 집단을 몇 개의 소집단으로 분류하거나 특정 값을 예측하는데 활용되는 방법이다. 결과를 직관적으로 도식화하여 볼 수 있고, 어떻게 분류되는지 알 수 있다는 장점이 있다. 하지만 분류되는 단계가 많아지면 이해하기 어려워지고, 데이터에 따라 결과가 안정적이지 못하다는 단점이 있다. 주로 특성치가 많지 않고 최종 알고리즘을 도출하기 전 탐색적으로 주요한 분류 변수가 어떤 것인지 확인하는데 사용된다. scikit-learn 의사결정나무는 사이킷런의 tree 안에 있다. 이 중 DecisionTreeClassifier가 분류 알고리즘, DecisionTreeRegressor를 회귀 알고리즘으로 사용한다. 의사결정나무분석에서 분류의 경우 기준은 'gi..

자기계발/Python 2022.06.22

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

서포트 벡터머신(Support Vector Machine) 일반적으로 성능이 뛰어난 알고리즘이다. 데이터 크기가 중간크기 이하, 여러 변수를 기준으로 분류하는 다소 복잡한 과제에 적합한 머신러닝 기법이다. 레이블 법주를 선형적으로 구분하거나 비선형적으로 분류하는 선 혹은 초평면을 찾는 것이 핵심 과제이다. 두 집단을 가장 멀리 떨어뜨리는 최적선을 찾는다. scikit-learn 서포트 벡터머신은 사이킷런의 svm안에 있다. 분류 알고리즘으로 SVC(Support Vector Classification) 회귀 알고리즘으로 SVR(Support Vector Regression)을 대표적으로 사용한다. SVC에서는 C가 가장 중요한 하이퍼파라미터이며, 'kernel'도 중요하다. kernel은 'kernel=..

자기계발/Python 2022.06.22

[빅데이터분석기사] 16 인공신경망

인공신경망 인간의 뉴런구조와 활성화 작동원리를 근간으로 input(자극)과 ouput(반응)과의 연관을 구현한 알고리즘이다. 중간에 은닉층(hidden layers)과 노드(nodes)들을 깊고(deep) 넓게(wide) 두어 특성치로부터 분류와 회귀를 더 잘할 수 있도록 특징추출 및 분류 단계를 확장하는 역할을 할 수 있도록 한 모델이다. 입력층과 출력층 사이에 은닉층을 몇 개를 둘 건지, 은닉층에 노드를 얼마나 둘 것인지, 학습률 등 많은 파라미터가 있다. 양이 굉장히 방대하기 때문에 모두 다루지 못하고 결과 돌려보면서 간단히 실습하는데 의의를 둔다. scikit-learn 인공신경망은 사이킷런의 neural_ntework 안에 있다. 이 중 분류 알고리즘은 MLPClassifier, 회귀 알고리즘은..

자기계발/Python 2022.06.21

[빅데이터분석기사] 15 나이브 베이즈

나이브베이즈(Naive Bayes) 사건 B가 주어졌을 때 사건 A가 일어날 확률인 P(A|B), 조건부 확률과 베이즈 정리를 이용한 알고리즘 나이브(Naive)는 예측에 사용되는 특성치(X)가 상호 독립적이라는 가정하에 확률 계산을 단순화하기 위해 나이브(단순/순진한 가정)이라고 이름이 붙은 것이다. (모든 특성치들이 동등한 역할) 베이즈(Bayes)는 특성치(X)가 클래스 전체의 확률 분포에 대비하여 특정 클래스에 속할 확률을 베이즈 정리를 기반으로 계산한 것이다. 설명이 어려워서 그냥 그러려니 하고 넘어감 scikit-learn 분류문제에 사용되는 나이브베이즈는 사이킷런의 naive_bayes에 있다. 그 중 분류 문제에서는 가우시안 나이브베이즈(GaussianNB) 알고리즘을 주로 사용한다. Ga..

자기계발/Python 2022.06.21

[빅데이터분석기사] 14 K-최근접이웃법(KNN)

K-최근접 이웃법(K-Nearest Neighbor) 데이터들 간의 거리를 측정하여 가까운 k개의 다른 데이터의 레이블을 참조하여 분류하는 방법 주로 유클리디안 거리 계산법 또는 민코브스키 방법을 사용한다. (민코브스키 방법이 디폴트) 최적의 K수는 일반적으로 3에서 10 범위 내에서 찾으며, K값이 작을수록 정교한 분류와 예측이 가능하다. K값이 너무 작으면 과대적합 문제가 발생할 수 있으며, 너무 커도 과소적합 문제가 발생할 수 있기 때문에 적절한 K값을 찾는 것이 중요하다. (K값을 찾기 위해 그리드탐색 혹은 랜덤탐색을 적용한다) KNN은 모델기반 알고리즘이 아닌 케이스기반 알고리즘이다. 입력되는 데이터에 따라 결과와 성능이 크게 달라지며, 새로운 데이터를 학습하는 시간이 오래 걸려 실시간 머신러닝..

자기계발/Python 2022.06.21

[빅데이터분석기사] 13 로지스틱 회귀모델

로지스틱 회귀분석 종속변수가 범주형 자료일 때 적용하는 회귀모델 주택소유여부같은 범주형 레이블은 예측함수를 만들기 어렵기 때문에 평균 소유 비율로 변환한다. 본래의 자료를 확률-> 오즈(odds) -> 로그(log)로 변환하여 선형회귀모델을 적용한 모델이라고 할 수 있다. 1) scikit-learn LogisticRegression은 sklearn.linear_model 안에서 불러온다. LogisticRegression의 하이퍼파라미터는 'C', 디폴트 값은 'C=1'이다. 하위 옵션 중 solver라는 옵션은 연산 속도와 관련된 주요 하이퍼파라미터이다. 데이터양이 수백~수십만 건인 경우 solver='sag'로 설정하면 평균경사하강법을 적용하여 속도를 향상시킬 수 있다. 2) 데이터 준비 impor..

자기계발/Python 2022.06.20

[빅데이터분석기사] 12 다중분류

다중분류는 분류되는 범주가 3개 이상인 것을 말한다. import warnings warnings.filterwarnings("ignore") import pandas as pd data=pd.read_csv('Fvote.csv', encoding='utf-8') X=data[data.columns[1:13]] y=data[['parties']] 이번 장에서는 4개의 범주로 구분되는 지지정당(paries)으로 코드 작성을 해보겠다. 이전 장에서 타이핑했던 코드들 다시 활용하는거라 복습하는 느낌으로 작성 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, str..

자기계발/Python 2022.06.20

[빅데이터분석기사] 11 모델평가

Final_model = LogisticRegression(C=10) Final_model.fit(X_train, y_train) pred_train = Final_model.predict(X_train) Final_model.score(X_train, y_train) pred_test = Final_model.predict(X_test) Final_model.score(X_test, y_test) 이번 장에서는 LogisticRegression(C=10)을 최종 모델로 하여 모델 평가를 진행할 것이다. 데이터불러오기 등 이전 단계와 동일하여 이전 섹션에 코드 이어서 작성했다. 1) 혼동행렬 얼마나 정분류 되었는지, 무엇이 오분류되었는지 확인하기 #혼동행렬로 정분류, 오분류 비율 확인 from sklea..

자기계발/Python 2022.06.20

[빅데이터분석기사] 10 하이퍼파라미터(Grid Search, Random Search)

LogisticRegression의 핵심 하이퍼파라미터는 'C'이며, 디폴트는 'C=1'이다. 하이퍼파라미터를 찾는 두 가지 방법(그리드탐색, 랜덤탐색)을 실습해 볼 것이다. 그리드탐색과 랜덤탐색은 실제로 머신러닝에서 많이 사용된다. 그리트탐색은 분석자가 모델, 하이퍼파라미터에 대한 경험과 직관이 있어야 좋은 결과를 보이며, 랜덤탐색은 무작위로 많이 찾아 돌려보는 탐욕적(greedy) 방법이고, 일반적으로 매우 효과적이다. (물리적 연산장치가 뒷받침되어야 한다는 조건도 있음) 1) 데이터 불러오기 #분석결과 외에 불필요한 내용이 나오지 않도록 하는 옵션 import warnings warnings.filterwarnings("ignore") import pandas as pd data=pd.read_cs..

자기계발/Python 2022.06.19
반응형