[BigData] 데이터 이해

2023. 4. 17. 12:38Computer Sciences/BigData

변수

질적 변수

  • 선택이 필요한 변수 혹은 종류를 구별하기 위한 변수를 의미한다.
    • 선택이 필요한 변수
      • 1. 매우 좋음 2. 좋음 3. 보통 4. 나쁨 5. 매우 나쁨
  • 종류를 구별하기 위한 변수
    • A형 B형 O형 AB형

양적 변수

  • 양을 표현하는 변수를 의미한다.
  • 시험 점수, 온도 등
💡 매우 좋음을 1, 매우 나쁨을 5로 표현한 수치형 변수는 질적 변수이다. 헷갈리지 말자.

척도 수준

  • 온도
    • 60도가 30도보다 높다고 할 수 있다.
    • 60도와 30도 간에는 30도 차이가 존재하며, 200도와 170도 간에도 30도 차이가 존재한다.
    • 하지만 60도는 30도보다 2배 더 높다고 할 수 없다.
    • 180cm가 90cm보다 2배 더 크다고 할 수 있다.

→ 온도나 키에 대한 수치가 0인 경우 없음을 의미하는가 아닌가가 간격 척도와 비례 척도를 구분하는 기준이다.

척도 대소 관계 차이
명의 척도 학생번호 x x x
순서 척도 성적 순위 o x x
간격 척도 온도 o o x
비례 척도 o o o

이산형 변수

  • 하나 하나의 값을 취하는 변수를 의미한다.
  • 서로 인접한 숫자 사이에 값이 존재하지 않는다.
  • 주사위의 눈, 결석 횟수, 결석 학생 수 등

연속형 변수

  • 연속적인 값을 취할 수 있는 변수를 의미한다.
  • 어떤 두 숫자 사이에도 반드시 숫자가 존재한다.
  • 길이, 무게, 시간 등
💡 컴퓨터는 binary이기 때문에 엄밀히 말하면 연속형 변수는 존재하기 어렵다. 하지만 연속형 변수로 취급한다.

대푯값

  • 데이터를 하나의 값으로 요약한 지표
  • 데이터의 특징을 한 번에 파악하기 쉽다는 장점이 있으나, 데이터 해석에 있어 오류에 빠지기 쉽다.
    • 다양한 지표를 함께 보고 데이터를 시각화해보는 것이 좋다.

평균값

$$
\bar{x}= \frac{1}{n} \sum_{i=1}^n x_i=\frac{1}{n}(x_1+x_2+\cdots+x_n)
$$

in python

sum(scores) / len(scores)

in Numpy

scores_np.mean()
np.mean(scores)

in Pandas

scores_df.mean()
# pd.mean(scores_df) 에러 발생!!
💡 Numpy는 자료구조와 Numpy 자체에서 평균 함수인 mean()을 지원하지만 Pandas는 자료구조에서 호출하는 식으로만 지원한다.

다양한 평균값

  • 일반적으로 평균이라고 하면 산술 평균을 의미한다.
    • 산술 평균은 이상치에 민감하기에 다양한 대안들이 제시되었다.
💡 절사 평균이나 기하 평균, 조화 평균은 산술 평균의 대안이 아니라 각각의 쓰임새가 다른 것이므로 오해하지 말자.

절사 평균

  • 양 극단치의 일부를 제외하고 구한 산술 평균을 의미한다.
  • 과제 평가 시 많이 사용된다.
    • 5명의 평가자가 있으면 최고 평가자와 최소 평가자의 점수를 제외한 3명의 평가 점수로 평균을 구하는 방법이다.

기하 평균

  • 산술 평균이 합의 평균이라면, 기하 평균은 곱의 평균이다.

$$
\sqrt[n]{x_1\times x_2\times x_3 \times \cdots \times x_n}
$$

  • 성장률의 평균 계산에 많이 사용된다.
    • 10% 상승 후, 10% 하락한 것에 대한 기하 평균을 구하면 다음과 같다

$$
\sqrt[2]{1.1 \times 0.9}=0.995
$$

조화 평균

  • 역수의 산술 평균의 역수이다. 역수의 차원에서 평균을 구하고, 다시 역수를 취해 원래 차원의 값으로 돌아오는 것이다.

$$
\frac{n}{\sum_{i=1}^n \frac{1}{x_i}}
$$

  • 평균적인 변화율을 구할 때 주로 사용된다.
  • F-1 Score 계산 시 사용된다.

세 평균의 관계

$$
\frac{n}{\sum_{i=1}^n \frac{1}{x_i}} \leq \sqrt[n]{x_1\times x_2\times x_3 \times \cdots \times x_n} \leq \frac{1}{n}\sum_{i=1}^n x_i
$$

중앙값

  • 데이터를 크기 순서대로 나열할 때 정확히 중앙에 위치한 값이다.
  • 이상값에 영향을 덜 받는다.
  • 데이터의 개수 n이 홀수라면 \(\frac{(n+1)}{2}\)번째 데이터가 중앙값
  • 데이터의 개수 n이 짝수라면 \(\frac{n}{2}\)번째 데이터와 \(\frac{(n+1)}{2}\)번째 데이터의 평균이 중앙값

최빈값

  • 데이터에서 가장 많이 나타나는 값을 의미한다.
  • Dataframe, Series의 mode 함수를 이용해 구할 수 있다.
  • Numpy에는 mode 함수가 없다.

편차

  • 각 데이터가 평균으로부터 떨어져 있는 정도를 의미한다.
scores = df["mathmatics"]
mean = np.mean(scores)
deviation = scores - mean
deviation
# 0    -13.88
# 1      1.12
# 2    -15.88
# 3    -15.88
# 4     -2.88
# 5    -18.88
  • 편차에도 대푯값이 필요하다.
    • 값이 많아지면 한 눈에 편차가 얼마나 되는지 확인하기 어렵다.
    • 두 데이터 사이에 어느 데이터가 편차가 큰지 비교하기 어렵다.
  • 편차의 평균은 항상 0이다.

$$
\frac{1}{n} \sum_{i=1}^n (x_i-\bar{x})=\frac{1}{n} \sum_{i=1}^n x_i-\frac{1}{n} \sum_{i=1}^n \bar{x}\ =\bar{x}-\bar{x} =0
$$

  • 그러므로 다른 방식으로 대푯값을 구해야 한다.
    • 편차 절댓값의 평균 - 평균 절대 편차, 평균 편차
      • 편차를 구할 때, 평균을 빼는 것이 아닌 중앙값을 빼는 방법도 있다(중앙값 절대 편차).
    • 편차 제곱의 평균 (분산)
    • 편차 제곱의 평균에 제곱근 (표준 편차)

평균 절대 편차, 평균 편차

$$
\frac{1}{n} \sum_{i=1}^n \lvert{x_i}-\bar{x}\rvert
$$

  • 잘 안 쓰인다.
  • 평균 편차의 최솟값은 중앙값이다.
  • 평균 편차는 미분이 불가능하다.
  • 절댓값 계산이 사칙연산에 비해 복잡하다.

분산

  • 편차의 제곱의 평균이다.

모분산

  • 모집단에 대한 분산이다.

$$
\frac{1}{n} \sum_{i=1}^n (x_i-\bar{x})^2
$$

표본 분산

  • 표본에 대한 분산이다.

$$
\frac{1}{n-1} \sum_{i=1}^n (x_i-\bar{x})^2
$$

💡 모집단은 조사하고자 하는 집단 전체를 말하며 표본은 모집단 중 일부만 추출해낸 집단을 의미한다. 따라서 ‘모’가 접두어인 건 집단 전체에 대한 것이고 ‘표본’이 접두어이면 표본에 대한 것이다.

Numpy와 Pandas

  • 두 라이브러리 모두 var() 라는 함수로 분산을 제공한다.
  • 둘 다 ddof(delta degrees of freedom. 자유도)이라는 파라미터를 제공한다.
  • 이 값은 편차 제곱합에 대해서 N - ddof 나눠준다.
  • Numpy의 기본 ddof는 0이다 → 모분산
  • Pandas의 기본 ddof는 1이다 → 표본분산

표준 편차

  • 분산에 제곱근한 값이다.
  • 분산의 경우 제곱할 때 데이터가 크게 증가하기 때문에 값 자체의 의미를 파악하기 어렵다.
  • 그래서 분산에 루트를 씌워 원래 단위로 맞추는 과정을 해준 것이 표준 편차다.

$$
\sqrt{\frac{1}{n} \sum_{i=1}^n (x_i-\bar{x})^2}
$$

  • 제곱에 제곱근을 씌웠기 때문에 단위가 원래 데이터와 같아진다는 장점이 있다.

Numpy와 Pandas

  • 모두 std() 라는 함수로 제공한다.
  • 둘다 ddof 파라미터를 제공한다.
  • Numpy의 기본 ddof는 0이다 → 모 표준 편차
  • Pandas의 기본 ddof는 1이다. → 표본 표준 편차

범위와 사분위 범위

범위

  • 최댓값에서 최솟값을 뺀 값이다.
  • 산포도를 최댓값과 최솟값만으로 표현한다.

사분위 범위

  • 범위는 이상값에 민감하다.
  • 따라서 범위를 나누어 계산해야 한다.

사분위수

  • 데이터를 정렬한 후, 하위 25%, 50%, 75%에 해당하는 값을 1/4, 2/4, 3/4 분위수라고 한다.
    • 2/4 분위수는 중앙값이다.
eng_s = df['english']

# Numpy
q2 = np.percentile(eng_s, 50)
q2 == np.median(eng_s)
# True
  • 사분위 범위(Interquantile range, IQR)
    • 3/4 분위수(Q3) - 1/4 분위수(Q1)
    • Numpy에선 25, 50, 75를 사용하고 Pandas에선 0.25, 0.5, 0.75를 사용한다.
# Numpy
q1 = np.percentile(eng_s, 25)
q3 = np.percentile(eng_s, 75)
q3 - q1
# 11.000

# Pandas
q1 = eng_s.quantile(.25)
q3 = eng_s.quantile(.75)
q3 - q1
# 11.000

'Computer Sciences > BigData' 카테고리의 다른 글

[BigData] 데이터 시각화  (0) 2023.04.17
[BigData] 데이터 정규화  (0) 2023.04.17
[BigData] Pandas 기본  (4) 2023.03.14
[BigData] Numpy 기본  (0) 2023.03.13