데이터마이닝 - 기초통계

조쿨러·2024년 1월 8일

Python

목록 보기
6/12

1. 데이터마이닝

데이터마이닝

  • 대량의 데이터가 축적되어 있는 데이터베이스로부터 데이터간의 정보를 분석하고, 유용한 정보 또는 지식을 추출하는 과정
  • 과정에서 체계쩍이고 자동적으로 통계적 규칙이나 패턴을 찾아 내는 것
  • 데이터를 마이닝 한다는 것은 데이터베이스에서 값어치가 있는 정보/지식 등을 캐낸다는 의미

데이터마이닝 필요성

  • 데이터마이닝을 하는 가장 큰 이유 중 하나는 '예측을 통해 최적의 의사결정을 하기 위해서' 이탈할 가능성이 있는 고객들이 누군지 예측할 수 있다면 이탈을 막기위한 전략을 세울 수 있을 것

데이터마이닝 프로세스
목적설정
데이터수집
데이터 정제
데이터마이닝 방법결정
모델결정
성능평가
적용

데이터마이닝 분석 방법

연관성 분석

  • 데이터간의 얼마나 유사한지 살펴보는것
  • 장바구니 분석 (오징어를 사는 사람이 맥주를 구매할 확률이 높다)
  • 월마트 (고객 데이터 분석으로 기저귀를 사는 남성은 맥주를 구매할 확률이 높다)
  • 월마트 (허리케인이 상륙하기전 딸기 과자와 맥주가 많이 팔렸다)

분류 분석

  • 데이터를 특정기준으로 나누어 분류
  • 신용정보 데이터 (저신용자, 고신용자)
  • 보험데이터 (고위험군 분류)

군집 분석

  • 분류 분석과 비슷하나 군집분석은 특정한 기준을 미리 설정하지 않음

예측분석

  • 기존 데이터를 기반으로, 미래 발생한 것을 예측

2. 기초통계

통계학

  • 수치 데이터의 수집, 분석, 해석, 표현 등을 다루는 수학의 한 분야
  • 기술 통계학과 추론 통계학으로 분류

기술 통계학

  • 연속형 데이터 (키, 나이, 몸무게, 가격) - 평균, 표준편차 등으로 데이터 요약
  • 범주형 데이터 (학년, 성별, 학점) - 빈도, 백분율 등으로 데이터 요약

추론 통계학

  • 표본을 통해 모집합으로 유추
  • 추론은 가설 검정, 수치의 특징 계산, 상관관계 등을 통해 이루어짐

통계학을 통하여 머신러닝을 이해할 수 있음 - 머신러닝 모델들이 통계적인 기반으로 제작

통계기초

  • 모집단 : 분석 대상의 전체 데이터 (인구 총 조사, 반 전체 데이터 등)

  • 표본집단 : 모집단의 한부분, 전체 데이터의 일부분

  • 모수 : 모집단의 특징을 나타내는 수치값

  • 통계량 : 표본의 특징을 나타내는 수치값으로, 모수 추정을 위해 사용 (평균, 중앙값, 최빈값, 분산 등)

  • 정규분포 : 좌우가 대칭 평균, 중앙값, 평균이 같음

통계기초 - 실습

import numpy as np
from scipy import stats

data = np.random.randint(0,100,1000)
data

mean = np.mean(data)
median = np.median(data)
mode = stats.mode(data)

print(mean)
print(median)
print(mode[0][0],mode[1][0])

통계개념

산포

  • 데이터의 변량, 데이터가 얼마나 흩어져 있는지를 설명

분산

  • 평균과의 거리를 제곱한 값의 평균

표준편차

  • 분산의 제곱근

범위

  • 최대값과 최소값의 차이

사분위수

  • 데이터를 4등분한 값
    1사분위수(Q1) : 25%값
    2사분위수(Q2) : 50%값
    3사분위수(Q3) : 75%값

IQR(Interquartile Range) : Q1과 Q3의 차이

통계개념 - 실습

from statistics import variance, stdev #분산, 표준편차
import numpy as np

data = np.random.randint(0,100,30)
data

var = variance(data)
print('분산 : ', var)

std = stdev(data)
print('표준편차',std)
range_ = max(data) - min(data)
print('범위',range_)

-> 범위 96

for index, temp in enumerate(range(0,101,25)) :
	print(index + 1, '사분위 : ',np.percentile(data,temp))
    
->
1 사분위 : 3.0
2 사분위 : 18.25
3 사분위 : 27.5
4 사분위 : 67.75
5 사분위 : 99.0

print('IQR : ',np.percentile(data, 75) - np.percentile(data,25))
-> IQR : 49.5

가설검정

통계적 가설검증 기법

  • p.value를 이용하여 가설이 참인지 확인하는 분석 기법

귀무가설 : 대립가설과는 반대인 가설
대립가설 : 내가 밝히고자 하는 가설

귀무가설과 대립가설의 예
비가 오는 날에 매출차이가 나는가?

  • 귀무가설 : 비오는 날에도 매출액의 차이가 없을 것이다.
  • 대립가설 : 비오는 날에는 매출액에 차이가 있을 것이다.

유의 수준 : 가설검정의 판단 기준이 되는 값 (0.05, 5%)
- p.value > 0.05 : 귀무가설 성립
- p.value < 0.05 : 대립가설 성립

T-검정
모집단의 분산이나 표준편차를 알지 못할 때, 표본으로부터 추정된 분산이나 표준편차를 이용하여 두 모집단의 평균의 차이를 알아보는 검정방법
집단의 수는 최대 2개까지 비교 가능하며 3개 이상인 경우 분산분석(ANOVA)를 사용

T-검정 종류

  • 일표본 T 검정 (One sample t-test) : 표본의 평균특정 기준값의 차이 분석
  • 독립표본 T 검정 : 독립된 두 표본(=집단)의 평균 차이 분석
  • 대응표본 T 검정 : 짝을 이룬 데이터의 평균 변화 분석

T-검정 예제

#성별간 성적 차이가 있는지에 대한 분석

import pandas as pd
import scipy.stats as stats #t-test를 위한 라이브러리

df = pd.read_csv('student-mat.csv')

df.head()
#성별 분포 확인
df_sex = df.values_counts('sex')
df_sex.plot(kind='bar')

#성별, 시험성적 데이터만 가져옴
exam = df[['sex','G1','G2','G3']]

#t-test를 남성과 여성을 구분
mdata = exam[exam['sex'] == 'M']
fdata = exam[exam['sex'] == 'F']
#남성 기술통계량
mdata.describe()

#여성 기술통계량
fdata.describe()

print('G1 t-test:',stats.ttest_ind(mdata['G1'],fdata['G1'],equal_var=True))
print('G2 t-test:',stats.ttest_ind(mdata['G2'],fdata['G2'],equal_var=True))
print('G3 t-test:',stats.ttest_ind(mdata['G3'],fdata['G3'],equal_var=True))

#3 과목에 대해서만 p-value가 0.5 이하임으로 유의미한 차이가 있는 것으로 보이고 나머지 과목은 유의미한 차이가 없다.

가설검정

p-value

  • 귀무가설이 참이라는 전제 하에 표본에서 관측된 통계값과 같거나 더 극단적인 통계값이 관측될 확률

귤나무에서 수확한 귤한개의 무개가 최소 100g이 된다고 주장할때, 표본 15개를 추출하고 평균 무게를 확인했더니 95g이고, 표준편차는 3.5g이었다면, 유의수준 5%(0.05)로 위의 주장은 기각될까?

-> 귀무가설 : 귤의 무게는 100g 이상일 것이다.

-> 평균 : 95, 표준편차 3.5, 표본 15개

가설검정 - 실습

import numpy as np
from scipy import stats

mu = 100
mean = 95
sigma = 3.5
n = 15

#단일 표본 t 검증
#t통계량 구하기
t_s = (mean - mu) / (sigma/np.sqrt(float(n)))
t_s

t_point = stats.t.ppf(0.05, n-1)
print(t_point)

p_value = stats.t.sf(np.abs(t_s),n-1)
p_value #0.05보다 작은 값임으로 귀무가설 기각

통계 개념

정규분포

  • 연속 확률 분포 중 하나로, 대표적인 분포 중 하나

  • 정규분포는 평균과 표준편차 두 개의 파라미터로 모양이 결정되며, 종 모양의 대칭성을 가지고 있음

  • 평균을 중심으로 대칭성

  • 표준편차가 작을수록 분포가 좁아지고, 클수록 분포가 더 넓어짐

  • 정규분포의 전체 면적은 1이며, 평균값을 중심으로 좌우 대칭으로 분포

  • 중심극한정리에 따라, 독립적인 여러 확률 변수의 합이 정규분포를 따름

정규분포 실습

수학 시험이 정규분포를 따를 때 평균점수 63점 표준편차 12점인 경우 80점이상인 학생의 비율은?

import numpy as np
from scipy import stats

s = 80
mean = 63
sigma = 12

result = (s-mean) / sigma
result

p_val = 1-stats.norm.cdf(result)
p_val = p_val * 100
p_val #80점 이상은 7.8%

-> 7.829020354481742

카이제곱 독립성 검증

두 개의 범주형 변수가 서로 독립인지 아니면 관련성이 있는지를 검증하는 통계분석
ex) 흡연 여부와 폐암 발생 여부라는 두 개의 범주형 변수가 있다면, 이 두 변수 사이에 독립성이 있는지를 검증

colab
https://colab.research.google.com/drive/14qDEC3_XdMl9aWspW4oXPxL-8-bhBeAZ?usp=sharing

profile
지지 않기

0개의 댓글