본문 바로가기
데이터 분석/데이터 분석

[데이터분석기사 실기] 시험전 꼭 봐야하는 중요내용 (단답형, 작업형)

by thomasito 2022. 6. 23.
반응형

[단답형 문제]

1.1 빅데이터의 이해

- 개인정보 자기결정권

- 마이 데이터

- 소프트 스킬 : 호기심, 커뮤니케이션 (하드스킬 : 분석/설계방법론)

- 암묵지 : 느낌으로 전달 불가 (형식지 : 말과 글로 전달 가능)

- 집기분 : 집중구조, 기능구조, 분산구조

- 프레이밍 현상 : 합리적인 의사결정 방해. 개인의 선택과 판단에 따라 다르게 받아들이는 것

- 핵심성과 지표 (KPI) : 목표 달성을 위한 정량 지표

 

1.2 데이터 분석 계획

- 상향식 접근 방식 (비지도학습 등)

- 하향식 접근방식 (분석대상 정하고 분석)

- (분석방법 / 분석대상 순) : 최통솔발

- 솔루션 : 몰알

- 최적화 : 알알

- 통찰 : 알몰

- 발견 : 몰몰

- 시스템 고도화 : 분석역량 있음 + 분석방법 신규도입

- 정보전략계획 (ISP) : IT 사업 계획

- 데이터 분석 방법론

- 1) CRISP - DM 크로스 인더스트리 스탠다드 프로세스 데이터 마이닝 : 데이터 마이닝 방법론 

- CRM 커스터머 릴레이션쉽 메니지먼트 (+ SCM, ERP) : 고객관리 정보 분석, 저장하는 시스템

- 2) KDD 널리지 디스커버리 인 데이터베이스 : 통계적인 패턴/규칙/지식을 찾기 위해 체계적으로 정리한 방법

- 3) SEMMA 샘플링 익스플로레이션 모디피케이션 모델링 어세스먼트 : 샘익모모어

 

 

1.3 데이터 수집 및 저장계획

- 비식별화 : 가총범삭마 (가명처리, 총계, 데이터범주화, 데이터삭제, 데이터마스킹)

- 비율척도 : 명서구비 (명목(성별), 서열(등수), 구간(온도), 비율(키) )

- 크롤링 : 웹 문서 및 콘텐츠를 수집하는 기술

- 평활화 (smoothing) : 데이터를 부드럽게 만들어주기 위한 데이터 변환 기술

- 하둡분산파일시스템 HDFS : 대용량 파일 저장 목적 네임 노드와 데이터 노드로 구성된 파일 시스템

- API (application programming interface) : 시스템 간 연동을 통해 실시간 데이터 주고받는 기능을 제공하는 인터페이스

- ETL (extract / transform / load) : 데이터 수집, 변환, 저장/적재하는 기술

- FTP (file transfer protocol) : 서버, 클라이언트간 파일 전송하는 프로토콜

 

2.1 데이터 전처리

- 결측값, 결측치

- 데이터 스케일링 (표준 크기변환, 최소최대 크기변환, 로버스트 크기변환) : 변수들의 범위 동일하게 만들어주는 처리기법

- 언더 샘플링 : 일부만 선택해 데이터 비율을 맞추는 불균형 데이터 처리기법

- 오버 샘플링 : 데이터를 늘려서 데이터 비율을 맞추는 불균형 데이터 처리 기법

- 이상값, 이상치

- 전진 선택법 : 가장 많은 영향을 주는 변수부터 선택

- 후진 제거법 : 가장 적은 영향을 주는 변수부터 제거

- 차원축소 (PCA, SVD) : 비지도학습 과정 중 변수들의 정보를 유지하면서 변수의 개수를 줄이는 방법

- 콜드덱 대체법 :대체자료를 외부에서 가져오는 것

- 핫덱 대처법 : 무응답을 비슷한 성향을 가진 응답자의 자료로 대치

- 파생변수 : 기준 변수를 새롭게 정의하는 것

- 평균 대치법 (완전 대치법, 평균 대치법, 단순확률 대치법)

- ESD extreme studentized deviate test : 표준편차 3배만큼 떨어진 값을 이상치로 판단

- IQR : 사분위수 범위 (Q3 - Q1)

 

2.2 데이터 탐색

- 공분산 : 2개 변수 상관 정도 (방향성은 알 수 있으나 강도는 확인 X)

- 왜도 : 왼쪽쏠림 (+), 오른쪽 쏠림 (-)

- 왼쪽쏠림 (+) : 최중평 (최빈중앙평균)

- 오른쪽쏠림 (-) : 평중최 (평균중앙최빈)

- 탐색적 데이터 분석 EDA

 

2.3 통계기법 이해

- 귀무가설 (영가설)

- 대립가설 : 입증하고자 하는 가설

- 분산 : 평균으로부터 흩어진 정도 (평균의 제곱합)

- 분산 분석 (ANOVA) = MSR/MSE = SSR/n / SSE/(n-2) -> 두 집단간 분산 비교

- 중위값, 중앙값 median

- 중앙값 계산법

- 중심극한정리

- 층화추출법 : 각 계층을 고루 대표할 수 있는 표본 임의추출

- 집락추출법 (군집추출법) : 모집단을 군집으로 나눈 후 각 군집에서 표본 추출

- 평균

- 표준편차

- p-value : 귀무가설을 얼마나 지지하는지를 나타내는 확률 (적을 수록 좋음)

 

3.1 분석모형설계

- 데이터 마이닝 : 통계적 규칙, 패턴 분석하여 가치있는 정보 추출

- 비지도학습 : 레이블(정답) X

- 지도학습 : 레이블(정답) O

- 하이퍼파라미터 : 사용자가 직접 설정해주는 값

 

3.2 분석기법 적용

- 가지치기 (pruning)

- 군집간 거리측정 방법 - 계층적 군집 -> 단장평중와 (최단/최장/평균/중심/와드 연결법)

- 기울기 소실 : 시그모이드 함수에서 편미분을 진행할 수록 0으로 근접하는 현상

- 다중공선성 : 독립변수들 간의 상관관계 갖는 것

- 다차원 척도법 : 개체들의 집단화를 시각적으로 표현

- 랜덤 포레스트 : 약한 학습기 -> 선형결합하여 최종학습기 만듦

- 로지스틱 회귀분석 : 범주에 속할 추정확률을 기준치에 따라 분류

- 배깅 : 여러 개의 부트스트랩 생성

- 부스팅 : 잘못 분류된 개체들에 가중치를 적용 -> 새로운 분류규칙 -> 이를 반복해 최종모형 완성

- 부트스트랩 : 단순복원 임의추출 방법. 동일크기 표본 여러개 생성하는 샘플링 방법

- 서포트 벡터 머신 SVM : 최적의 분리 초평면을 찾아서 분류 및 회귀 수행

- 손실 함수 : 평균제곱오차 또는 교차엔트로피오차를 사용

- 스테밍 : 단어의 원형, 어간 분리

- 실루엣 : 군집 분석에서 사용하며 1에 가까울 수록 군집결과가 좋고, -1에 가까울 수록 군집결과가 좋지 않음

- 앙상블 기법 : 여러 개의 동일한/다른 예측/분류 결과를 종합하여 최종적인 의사결정에 활용하는 기법

- 역전파 알고리즘 : 신경망 학습에서 오차를 출력층에서 입력층으로 전달하여 가중치와 편향을 갱신하는 알고리즘

- 오피니언 마이닝 : 의견과 감정을 나타내는 패턴을 분석하는 기법

- 연관규칙(지신향) : 지지도(A,B동시구매건수/전체), 신뢰도(A,B동시구매건수/A구매건수), 향상도(신뢰도/B구매비율

- 지지도 : 전체 거래 중에서 A,B 동시에 포함된 거 비율

- 신뢰도 : 조건부 확률 (A구매자 중 B구매 확률)

- 향상도 : 두 아이템의 연관규칙이 우연인지 아닌지를 나타내는 척도

- 유전자 알고리즘 : 자연선택, 돌연변이 메커니즘 통해 점진적으로 진화시켜 나가는 방법

- 은닉층 : 입력층/출력층 사이 내부적으로 동작하는 계층

- 의사결정나무 : 분할기준 속성에 따라 트리형태로 모델링

- 이동평균모형 (MA) : 현재 값과 과거 값을 선형 가중합

- 정상성 : 시계열의 특성이 일정하다고 가정하는 특징 (평균일정/분산시점에의존X)

- 주성분 분석 : 상관성 높은 변수들을 요약하고자 변수를 축소 (차원 축소에 해당)

- 지니계수 계산 : 1 - ( m/n 제곱 합계)

- 차분 : 정상 시계열 바꾸기 위해 현재시점값 - 이전시점값

- 텍스트 마이닝 : 텍스트 형태로 이루어진 비정형 데이터에서 자연어 처리방식을 활용한 정보 추출 기법

- 퍼셉트론 : 입력층/출력층으로만 구성된 최초 인공신경망

- 퍼셉트론 출력값 계산 : 합계(입력값n * 가중치n) + 편향값 = 출력값

- 피어슨 상관계수 : 두 변수간의 선형관계가 얼마나 강한지를 보여주는 척도

- 활성화 함수 : 인공신경망 모델 입력신호 -> 출력신호 변환

- 회귀 분석 : 변수들의 인과관계를 밝히고 추론하는 분석 방법

- Apriori 알고리즘 : 발생항목 집합에서 연관관계를 찾아내는 것으로, 장바구니 분석이라고도 함

- CNN 합성곱 신경망 : 영상처리의 필터기능 + 신경망 결합 -> 시각적 이미지 분석에 사용됨

- K 평균 군집화 K-means clustering : 소집단의 중심좌표를 업데이트 하는 군집화 방식

- K 최근접 이웃 알고리즘 KNN : 가장 많은 속성을 포함한 군집에 할당시키는 지도학습 알고리즘

- RNN 순환신경망  : 가중치 업데이트하여 은닉층에서 재귀적인 신경망을 갖는 알고리즘

 

4.1 분석 모형 평가 및 개선

- 과적합 또는 과대적합 : 지나친 차수 증가로 실제 데이터에서 성능 저하를 보임

- 드롭 아웃 : 과대적합 방지목적 신경망 일부 사용하지 않는 방법

- 재정정특

- 재현율(recall) : TP / (TP+FN)  실제는 True 맞는데(질병 맞는데) 예측이 맞았을 확률 TP

- 정밀도(precision) : TP / (TP + FP) 맞은 걸로 True 예측은 했는데 예측이 T로 맞았을 확률 TP 

- 정확도(accuracy) : TP + TN / TP + TN + FP + FN 

- 특이도(Specificity) : TN / (FP + TN) 실제는 아닌데(질병 아닌데) 예측이 맞았을 확률 

- 혼동 행렬  

- F1 스코어 : 2 * (precision * recall / (precision + recall) )

- K fold 교차검증: 무작위 동일크기 갖는 k개의 부분집합으로 나누고, 1개 테스트 데이터 / (k-1)개 집합을 학습데이터로 선정하여 분석모형을 평가하는 기법

- LOOCV Leave One Out cross validation 1개 샘플은 테스트 데이터로 나머지 (k-1)개 샘플은 학습 데이터로 사용

- SSE : 예측값 - 실제값 오차의 제곱합 / SSR : 예측값과 평균값 오차 제곱합 / SST : 실제값 - 평균값 오차 제곱합 

- R2 결정계수 : 회귀모형이 실제값을 얼마나 잘 반영하는지 나타내는 지표로 1에 가까울 수록 실제값을 잘 반영

- ROC 커브 : 수치가 올라갈 수록 성능이 좋음. AUC 커브아래 면적 area under curve

 

4.2 분석 결과 해석 및 활용

- 마인드 맵 : 생각을 확장하며 줄거리를 정리하는 방식

- 인포그래픽스 : 중요 정보를 그래픽으로 표현하는 시각화 기법

- 히트맵 : 색상 구분하여 데이터 값 표현 비교 시각화 기법

- TCO Total cost ownership : 자산 보유시 보유에 따른 비용을 계산하는 해당 지표

 

[데이터 분석 준비]

머신러닝 프로세스 정리

1. 범주변수의 변환 (2개)

- pd.get_dummies(data[컬럼])

- data[컬럼].replace("A","B")

 

2. 데이터분할과 모델검증

- from sklearn.model_selection import train_test_split

- from sklearn.model_selection import cross_val_score # 랜덤없는 교차검증

- from sklearn.model_selection import KFold # 랜덤있는 교차검증

 

3. 데이터 정규화

- from sklearn.preprocessing import MinMaxScaler # 현업 선호

- from sklearn preprocessing import StandardScaler

 

4. 모델훈련과 세부튜닝 (하이퍼파라미터 찾는 모델 세부튜닝)

- from sklearn.model_selection import GridSearchCV

- param_grid = {'C' : [0.01, 0.1, 1, 10, 100]}

- GridSearchCV(알고리즘모델, 설정한 그리드서치, cv(옵션), return_train_score(옵션))

- from sklearn.model_selection import RandomizedSearchCV

- param_distribs = {'C' : randint(low=0.001, high = 100)} # 이 구간에서 알아서 C를 찾음

- RandomizedSearchCV(알고리즘모델, 파라미터구간변수, cv, n_iter)

 

5. 모델평가

- from sklearn.metrics import confusion_matrix

- confusion_matrix(x_train, pred_train)

- from sklearn.metrics import classification_report

- classification_report(x_train, pred_train)

 

 

1. 단변량 데이터 탐색

 

data[ ].value_counts() 

data.skew() : 첨도

data.kurtosis() : 왜도

 

기본 함수의 종류 (data.함수() )

count, describe, min, max

argmin, argmax -> 최소값, 최대값이 있는 색인 위치 반환

idxmin, idxmax -> 최소, 최대값 갖고 있는 색인 값 반환

quantile : 0부터 1까지 분위수

sum, mean, median, mad, var, std, skew, kurt

cumsum, cummin, cummax, cumprod 누적곱, diff 차분, pct_change 퍼센트 변화율

corr 상관관계, cov 공분산

 

2. 이변량 데이터 검색

 

data.corr() # 디폴트는 pearson

data.corr(method = "pearson", "spearman", "kendall")

 

plt.scatter(x값, y값, alpha = 0.5)

plt.show()

 

3. 이상치 처리

 

1) 박스 플롯 그리기

data.boxplot(column = 컬럼명, return_type='both')

 

2) 1사분위, 3사분위 수

data[컬럼명].quantile(q = 0.25)

data[컬럼명].quantile(q = 0.75)

 

4. 변수 변환 

 

1) 로그 변환 : np.log(컬럼명)

2) 제곱근 변환 : np.sqrt(컬럼명)

 

5. 결측치 처리

 

1) 결측값 찾기

- data.isnull()

- data.notnull()

- data.isnull().sum()

 

2) 결측값 제거 -> dropna

- data.dropna(axis=0) # 결측값 있는 행 제거

- data.dropna(axis=1) # 결측값 있는 열 제거

- data[[컬럼명]].dropna() # 결측값 있는 행/열 제거

 

3) 결측값 대체 -> fillna()

- data.fillna(대체값) # 결측값을 0으로 대체

- data.fillna(method='ffill') # 앞의 값으로 대체

- data.fillna(method='bfill') # 뒤의 값으로 대체

- data.fillna(data.mean(), data.median(), data.max()) # 특정 계산값으로 대체

 

6. 데이터 나열하기

- data[컬럼].sort_values(ascending=False) # 내림차순

- data[컬럼].sort_values(ascending=True) # 오름차순

 

7. 그룹화 하기

- df.groupby([그룹화할 컬럼들]).[기준컬럼].추가작업()

# 추가작업 : sum(), count() 등등

 

8. 데이터 합치기

- pd.concat([데이터프레임1, 데이터프레임2], axis=합칠기준) -> 0 행기준 / 1 열기준

 

* 데이터 둘러보기

 

data.shape 데이터모양 확인하기

type(data) 데이터 타입

data.columns 컬럼 확인

data.describe 기초통계량

data[컬럼].unique() 중복 제거 유일값

data.info() 데이터 요약정보 확인

data.corr() 상관관계 구하기

 

* 전처리 (Preprocessing)

data = data.iloc[행번호, 열번호]

data = data.iloc[:, 열번호] # 특정 열 추출

data = data.iloc[행번호, :] # 특정 행 추출

data.isnull()

data.isnull().sum()

data[컬럼].fillna(평균치, 중앙값) # null 값 대치

 

* 데이터 스케일링 (Data Scaling) : 독립변수들의 범위를 동일하게 만들어 줌

from sklearn.preprocessing import StandardScaler / MinMaxScaler / RobustScaler

scaler = StandardScaler() / MinMaxScaler / RobustScaler

scaler.fit_transform(data)

 

* 데이터 타입 변경하기

data[컬럼] =  data[컬럼].astype('int64')

 

* 원핫 인코딩 (범주형 -> 수치형으로 변경하기)

컬럼이 범주형이어야 함 (ex. auto / manual)

pd.get_dummies(data[컬럼]) # 열 2개 생성

pd.get_dummies(data[컬럼], drop_first = True) # 열 1개 생성

 

* 라벨 인코딩 (범주형 변수에 일련번호를 부여하는 방식으로 연속형 변수로 변환)

from sklearn.preprocessing imporot LabelEncoder

encoder = LabelEncoder()

encoder.fit_transform(data) # 변수가 3개 이상이라도 인코딩 가능

 

* 수동 인코딩 : Replace 함수

data[컬럼] = data[컬럼].replace('manual',0).replace('auto',1)

data = data.drop(columns=[컬럼명]) # 불필요한 데이터 삭제

 

* 파생변수 만들기

condition = data[컬럼명] < 3.3 # 변수에 조건을 저장

data.loc[condition, 'wt_class'] = 0 # 조건을 만족하면 wt_class 열에 0으로 저장

data.loc[~condition, 'wt_class'] = 1 # 조건을 만족하지 않으면 wt_class 열에 1으로 저장

 

* 모델 생성과 모델 검증

# 다만 시험에서는 train, test 데이터가 주어짐

from sklearn.model_selection import train_test_split

x_train, x_text, y_train, y_test = train_test_split(X, Y, test_size = 0.3)

 

* 모델 학습

1. from  sklearn.모듈 import 모델함수

2. model = 모델함수()

3. model.fit(x_train, y_train)

4. y_train_predict = model.predict(x_train)

    y_test_predict = model.predict(x_test)

 

* 모델 평가 (예측값과 실제값을 비교하는 것임)

from sklearn.metrics import 평가함수

평가함수(y_train, y_train_predict)

평가함수(y_test, y_test_predict)

model.score -> 결정계수 구하기

 

[회귀 평가 지표] MAE, MSE, RMSE, 결정계수(R2)

from sklearn.metrics import r2_score

from sklearn.metrics import mean_absolute_error 

from sklearn.metrics import mean_squared_error 

import numpy as np (제곱근 계산 목적으로 가져와야 함)

 

# 훈련데이터/훈련데이터 예측치, 테스트데이터/테스트데이터 예측치의 결정계수를 구함

r2_score(y_train, y_train_predicted)

r2_score(y_test, y_test_predicted) <- 결정계수 R2

mean_squared_error(y_test, y_test_predicted) <- 오차의 제곱의 합

np.sqrt(mean_squared_error(y_test, y_test_predicted)) <- 오차의 제곱의 합의 루트

mean_absolute_error(y_test, y_test_predicted) <- 오차의 절대값 의 합

 

[분류 평가 지표] roc_auc_score, accuracy_score, precision_score

from sklearn.metrics import roc_auc_score

from sklearn.metrics import accuracy_score, precision_score, recall_score

 

roc_auc_score(y_test, y_test_predicted)

accuracy_score(y_test, y_test_predicted)

precision_score(y_test, y_test_predicted)

recall_score(y_test, y_test_predicted)

 

★ 시험 문제는 회귀모델(연속형 변수 예측), 분류모델(범주형 변수 예측) 두 가지 중 하나. 대표 모델들만 학습

☆ 우선 수험 목적상은 하이퍼 파라미터까지는 안 넣는 것으로 시험을 준비하면 될 듯

 

회귀 모델 (LGRX)

1) LinearRegression 선형회귀모델

from sklearn.linear_model import LinearRegression

model = LinearRegression()

model.fit(x_train, y_train)

y_train_predicted = model.predict(x_train)
y_test_predicted = model.predict(x_test)

 

print(model.intercept_) # y 절편 값 구하기

print(model.coef_) # 회귀계수 값 구하기

 

2)  GradientBoostingRegressor 그레디언트 부스팅 회귀

: 여러 개의 의사결정나무를 묶어서 강력한 모델을 만드는 앙상블 기법. 이전 결정나무에서 발생한 오차를 보완하여 새로운 트리를 만들기 때문에 보다 높은 정확도를 기대할 수 있음

from sklearn.ensemble import GradientBoostingRegressor

model = GradientBoostingRegressor()

model.fit(x_train, y_train)

y_train_predicted = model.predict(x_train)

y_test_predicted = model.predict(x_test)

 

3) RandomForestRegressor 랜덤 포레스트 회귀 

: 무작위의 다수 트리를 만들어 투표에 의해서 값을 결정하는 방식

from sklearn.ensemble import RandomForestRegressor 

model = RandomForestRegressor(random_state = 10)

model.fit(x_train, y_train)

y_train_predicted = model.predict(x_train)

y_test_predicted = model.predict(x_test)

 

# 트리 생성은 1,000개로 트리의 분할 기준은 MAE 지표로 분석할 모델 만들기 (하이퍼 파라미터 넣기)

model = RandomForestRegressor(n_estimators=1000, criterion='mae', random_state = 10)

 

4) XGBRegressor 익스트림 그레디언트 부스팅 회귀

: 다수의 약한 분류기를 묶어서 정확도를 향상하는 기법으로 병렬처리 기능을 지원하여 빠른속도로 결과를 도출하는 특징을 가지고 있음

from xgboost import XGBRegressor

 

분류 모델 (LDRX)

1) Logistic Regression 로지스틱 회귀분석

: 0인지 1인지 판단하는 회귀 알고리즘 모델 (이진 분류 모델)

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()

model.fit(x_train, y_train)

model.predict(x_test)

 

2) DecisionTreeClassifier 의사결정나무 분류

: 트리를 분할하고 가지치기 과정을 번복하면서 모델을 생성

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier()

model.fit(x_train, y_train)

model.predict(x_train)

 

3) RandomForestClassifier 랜덤 포레스트 분류

: 무작위의 다수 트리를 만들어 투표에 의해서 값을 결정하는 분류 모형

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()

model.fit(x_train, y_train)

model.predict(x_test)

 

4) XGBClassifieir 익스트림 그레디언트 부스팅 분류

: 다수의 약하나 분류기를 묶어서 정확도를 향상하는 기법으로 병렬처리 기능으로 빠른 속도로 결과를 도출

from xgboost import XGBClassifier

model = XGBClassifier()

model.fit(x_train, y_train)

model.predict(x_test)

 

model.predict_proba(x_test)

: 종속변수 0,1에 대한 확률값을 계산해주는 함수 (1열은 0값으로 분류, 2열은 1값으로 분류될 확률)

 

기타 분류모델

1. SVC 

from sklearn.svm import SVC

 

2. 배깅 분류

from sklearn.ensemble import BagginggClassifier

 

3. KNN K최근접 이웃

from sklearn.neighbors import KNeighborsClassifier

 

4. 다층 퍼셉트론 분류

from sklearn.neural_network import MLPClassifier

 

반응형

댓글