빅데이터분석기사 실기 대비 [작업형 3] 개념, 문법 정리

jihyelee·2024년 6월 18일
0

bigdata

목록 보기
4/4

시험 준비

빅데이터 분석기사 실기 준비를 하면서, 시험 직전에 볼 간단한 문법 정리집이 필요했다.
실제 시험 준비는 많은 분들처럼 캐글 놀이터를 활용했다.

작업형 3유형의 경우에는 캐글 놀이터의 예제 풀기만으로는 준비가 조금 부족했다.
다른 자료를 공부하지 않은 나로서는 실제 시험에서 약간 당황했는데, 시험을 꼼꼼히 준비하고 싶다면

  • 캐글 놀이터 예제 이외의 다른 자료로 공부하고
  • 필기 때의 통계지식을 기억하고 있다면 좋을 듯 하다.

다행히 우려와는 다르게 작업형 3유형에서 30점 중에 20점을 맞아 세이프!

통계적 유의성

  • 통계적 유의성
    • 가설이 확률적으로 단순한 우연이라고 생각되지 않을 정도로 의미가 있음
    • 즉, 통계적으로 유의하다 = 의미가 있다
  • 귀무 가설
    • 기존에 사실로 받아들여지는 주장
  • 대립 가설
    • 연구자가 입증해야 하는 주장, 귀무 가설에 대립
  • 유의 수준
    • 가설 검정에 사용되는 기준값
    • 일반적으로 신뢰 수준 95%, 유의 수준 5%를 많이 사용
  • 유의 확률 (p-value)
    • 유의 확률이 유의 수준 이하일 때 통계적으로 유의하다고 말함
    • 이럴 경우 귀무 가설을 기각하고 대립 가설을 채택

t 검정

  • 모집단의 분산이나 표준편차를 알지 못할 때, 표분으로부터 추정된 분산이나 표준편차를 이용해 검정하는 방법
  • 귀무가설
    • 두 모집단 사이 평균의 차이는 없다
  • 대립가설
    • 두 모집단 사이 평균의 차이가 있다

일표본

  • 단일 모집단에서 관심이 있는 연속형 변수의 평균값특정 기준값과 비교
  • 모집단의 구성요소는 정규분포 가정
  • from scipy import stats
  • st, pv = stats.ttest_1samp(sample1, sample2, alternative="greater")
    • alternative는 대체 가설 정의
    • less면 첫번째 샘플 통계분포의 평균이 두번째 샘플 통계분포의 평균보다 작다
    • greater는 반대
    • two-sided는 둘이 같지 않다 (기본값)

대응표본

  • 하나의 모집단으로부터 데이터 반복 추출
  • 두 번의 처리를 가했을 때, 각기 다른 평균의 차이 비교
  • 정규성을 만족해야 함
  • from scipy import stats
  • st, pv = stats.ttest_rel(sample1, sample2, alternative="less")
    • pv가 유의확률(p-value)

독립표본

  • 서로 다른 두 모집단으로부터 데이터 추출
  • 두 모집단은 정규성을 만족해야 함
  • from scipy import stats
  • st, pv = stats.ttest_ind(sample1, sample2)

일원분산분석

  • 분산분석은 3개 이상 그룹 간 평균을 비교할 때 사용
  • 일원분산분석은 독립변수 1개, 독립변수 내 그룹이 여러 개
    • from scipy import stats
    • fv, pv = stats.f_oneway(groupA, groupB, groupC)
  • 정규성 가정 (shapiro test)
    • from scipy import stats
    • stats.shapiro(data)
    • 귀무가설: 변수는 정규 분포를 따를 것이다
      • 귀무가설을 채택 = 정규분포를 따름
  • 등분산성 가정: 각 변수의 분산은 동일한 수준의 분산을 가진다
    • bartlett 검정 또는 levene
    • from scipy import stats
    • stats.bartlett
    • stats.levene

이원분산분석

  • from statsmodels.stats.anova import anova_lm
  • from statsmodels.formula.api import ols
    • ordinary least squares; 잔차제곱합을 최소화하는 가중치 벡터를 행렬 미분을 통해 계산
    • 근사적으로 계산하려는 결과와 실제 결과의 오차 제곱합이 최소가 되는 지점을 구함
  • model = ols('종속변수 ~ C(범주형 독립변수) * (독립변수)', data=df).fit()
    • *를 사용할 경우 각각의 fv, p-value뿐만 아니라 변수의 상호작용(교호작용)이 미치는 영향도 파악할 수 있음
    • 독립변수, 종속변수는 df의 컬럼명을 적어주면 됨
  • anova_lm(model)

카이제곱 검정

적합도 검정

  • 표본 데이터가 전체 모집단을 대표하는지 평가
  • from scipy import stats
  • st, pv = stats.chisquare(f_obs=관측된 빈도, f_exp=기대된 빈도)

독립성 검정

  • 독립성 검정은 두 집단이 서로 독립인지 검정 (연관성이 있는지)
  • st, pv, dof, expected = stats.chi2_contingency(observed=관측값)
    • 검정통계량, 유의확률, 자유도, 기대빈도 (관측된 값과 동일한 shape)
    • 기대 빈도는 귀무 가설 하에서 관찰될 것으로 예상되는 빈도 (두 변수가 독립적)
    • 실제 빈도와 기대 빈도 사이에 큰 차이가 있다면 귀무가설 기각 가능

상관계수

  • correlation = df.corr()
  • correlation.loc['index명', 'column명'] 통해 특정 상관계수 구할 수 있음

로지스틱 회귀모형

  • from statsmodels.formula.api import logit
  • formula = "종속변수 ~ C(범주형 독립변수) + 독립변수 + 독립변수"
  • model = logit(formula, data=df).fit()
  • model.params
    • 독립변수의 계수 값을 알 수 있음
  • np.exp(model.params[컬럼])
    • 오즈비 계산 가능
  • model.llf
    • 로짓 우도 계산 가능
  • model.pvalues[컬럼]
    • 유의확률 계산 가능

지지도, 신뢰도, 향상도

  • 지지도(A, B)
    • A와 B가 함께 팔린 거래 횟수 / 전체 거래 횟수
  • 지지도(B)
    • B가 팔린 겨래 횟수 / 전체 거래 횟수
  • 신뢰도(A->B)
    • A와 B가 함께 팔린 거래 횟수 / A가 팔린 거래 횟수
  • 향상도(A, B)
    • 신뢰도(A->B) / 지지도(B)

포아송 분포

  • from scipy import stats
  • stats.poisson.pmf(N, mu)
    • mu: 평균 발생 횟수
    • N: 정확히 N번 발생할 확률
  • 1 - stats.poisson.cdf(1, mu)
    • P[X>=2] = 1 - P[X<1]
    • 하루에 적어도 2번 이상 발생할 확률

베르누이 분포와 이항분포

  • 베르누이 분포
    • 각 시도의 성공 확률 계산
    • success_probability = number of success / total attempts
  • 이항 분포
    • from scipy import stats
    • prob = stats.binom.pmf(k, n, success_probability)
      • 이항분포의 확률 질량 함수
    • n번의 시도 중 k번 성공할 확률
    • e.g. cdf를 사용할 때 (누적)
      • 성공 확률이 0.4, 3번 시도했을 때, 적어도 하나 이상의 성공이 발생할 확률
      • P[X>=1] = 1 - P[X=0]
      • 1 - stats.binom.cdf(0, n=3, p=0.4)

점 추정, 구간 추정

  • 점 추정
    • 모수를 특정한 수치로 표현
    • e.g. 데이터의 평균 계산
  • 구간 추정
    • 모수를 최솟값과 최댓값의 범위로 추정
    • 자유도 (degree of freedom; df) n-1 (n은 데이터 개수)
    • 신뢰구간 = stats.t.interval(신뢰수준(e.g.0.95), df=n-1, loc=mean, scale=std/(n**0.5))

비모수검정 (Wilcoxon Signed-Rank Test)

  • from scipy import stats
  • stats.wilcoxon(df[컬럼] - 설정값, alternative='greater')
    • 대립가설이 귀무가설보다 크다고 주장할 경우 alternative를 greater로 설정
profile
Graduate student at Seoul National University, majoring in Artificial Intelligence (NLP). Currently AI Researcher and Engineer at LG CNS AI Lab

0개의 댓글