홈으로 돌아가기

ML 없이 통계: Python의 주요 방법

이 기사는 통계 방법을 ML 대안으로 설명합니다: 가중 평균, 상관관계, 푸아송 및 이항 분포. 비즈니스 작업을 위한 numpy 및 pandas를 사용한 Python 코드 예제. 복잡한 모델 없이 빠른 분석에 적합.

ML 대신 통계: 데이터용 Python 도구
Advertisement 728x90

# 머신러닝 없이 데이터 분석을 위한 통계 방법들

통계 도구들은 복잡한 머신러닝 모델 없이 데이터를 빠르게 평가할 수 있게 해줍니다. 가중 평균은 관측값의 중요도를 반영하고, 표준편차와 분산은 데이터의 이질성을 드러내며, 푸아송 분포와 이항 분포는 희귀 사건을 예측합니다. numpy와 pandas를 활용한 Python 방법들은 비즈니스 지표를 분석하는 중급/시니어 개발자에게 이상적입니다.

가중 평균: 이상치 왜곡 보정

일반 평균은 이상치에 취약합니다. $10 (이사급)과 $0.10 (청소부, 가중치 10)의 급여 예시에서 평균이 $5.05가 되는데, 이는 현실을 반영하지 않습니다. 가중 평균이 이를 해결합니다:

import numpy as np

salary = np.array([10.0, 0.10])
weight = np.array([1, 10])

result = np.sum(salary * weight) / np.sum(weight)
print(f"Weighted average: ${result:.2f}")

출력: $1.00. 응용 사례:

Google AdInline article slot
  • 트래픽을 반영한 판매 채널별 매출 분석.
  • 이벤트 발생 빈도가 다른 지표 평가.
  • 가중치를 적용한 고객 세그먼트 그룹화.

표준편차와 분산: 안정성 평가

표준편차는 평균 주위의 퍼짐 정도를 측정합니다. 급여 [500, 400, 450, 550, 5000] 예시:

import pandas as pd
import numpy as np

data = {
    "Employee": ["Ivan", "Maria", "Oleg", "Anna", "CEO"],
    "Salary": [500, 400, 450, 550, 5000]
}

df = pd.DataFrame(data)
n = len(df['Salary'])
mean_ = df['Salary'].mean()
s = np.sqrt(np.sum((df['Salary'] - mean_) ** 2) / (n - 1))

print(f"Standard deviation: {s:.2f}")

결과: 2024.41 — 강한 이상치 지표입니다. 분산(편차의 제곱)은 데이터셋 비교에 유용합니다:

import numpy as np

sales = np.array([90, 95, 92, 93, 91, 200, 210])
mean_sales = np.mean(sales)
dispersion = np.sum((sales - mean_sales) ** 2) / (len(sales) - 1)

print("Variance:", dispersion)

요일별(평일 vs 주말) 퍼짐 분석에는 데이터 세분화가 필요합니다.

Google AdInline article slot

피어슨 상관계수: 인과가 아닌 선형 관계

피어슨 상관계수는 선형 종속성을 평가합니다. 공식:

import numpy as np

X = np.array([1, 2, 3, 4, 5])  # study hours
Y = np.array([50, 55, 60, 65, 70])  # test scores

x_mean = np.mean(X)
y_mean = np.mean(Y)

corXY = np.sum((X - x_mean) * (Y - y_mean))
corr_sqrt = np.sqrt(np.sum((X - x_mean)**2) * np.sum((Y - y_mean)**2))

res = corXY / corr_sqrt
print(f"Pearson correlation: {res:.2f}")

r=1.00 — 완벽한 상관입니다. 제곱(r²)은 설명된 변동 비율(회귀에서 결정계수)을 나타냅니다. 기억하세요: 상관 ≠ 인과 (예: 노인의 골프와 사망률).

카이제곱 검정: 기대치 vs 현실 비교

카이제곱은 관측값(O)과 기대값(E)을 비교합니다:

Google AdInline article slot
import numpy as np

O = np.array([1, 2, 3, 4, 7, 9, 11, 13, 14])  # observed
E = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])    # expected

xi = np.sum((O - E) ** 2 / E)
print(f"Chi-square statistic: {xi:.2f}")

조건: 동일 길이, E > 0. 값이 클수록 불일치가 큽니다. 예측 검증에 사용됩니다.

푸아송 분포: 희귀 사건 모델링

간격당 평균 λ의 일정 강도 사건에 적합합니다. k 사건 확률:

import math

λ = 3   # srednesutochnoe count requests
k = 5   

prob = (λ ** k) * math.exp(-λ) / math.factorial(k)
print(f"Probability 5 requests: {prob:.4f}")

결과: 0.1008. 가정: 독립성, 일정 확률, 한 번에 하나의 사건. 응용:

  • 지원 호출 예측.
  • 웹사이트 주문 추정.
  • 보안 사고 분석.
  • 금융 리스크.

이항 분포: 시행에서의 성공

n 시행, 성공 확률 p에서 k 성공 확률:

import math

n = 100
k = 70
p = 0.7

b_coef = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
prob = b_coef * (p ** k) * ((1 - p) ** (n - k))
print(f"Probability 70 otkrytiy: {prob:.6f}")

예시: 이메일 개봉, A/B 테스트, 품질 관리.

지수 분포: 사건까지의 간격

λ에서 시간 x 후 사건 확률:

import math

lambd = 4    # vyzovov/hour
x = 1 / 3    # 20 min

prob = lambd * math.exp(-lambd * x)
print(f"Probability vyzova cherez 20 min: {prob:.4f}")

대기열, 장비 다운타임에 사용.

주요 요약

  • 가중 평균과 편차는 머신러닝 없이 왜곡을 탐지합니다.
  • 상관은 관계를 평가하고, r²는 설명된 변동을 나타냅니다.
  • 푸아송과 이항은 비즈니스 사건 예측에 적합합니다.
  • 카이제곱은 최소 데이터로 가설을 검증합니다.
  • 모든 방법은 numpy/pandas로 구현 가능하며 GPU가 필요 없습니다.

— Editorial Team

Advertisement 728x90

다음 읽기