위클리페이퍼(1) 선형대수학, EDA, 전처리 방법이란?

윤승호·2025년 3월 19일

◆ Q & A 요약

Q1. 선형대수학이란 어떤 학문이며, 왜 머신러닝에 필요한지 설명해보세요.
A1. 선형대수학은 방정식을 다루는 학문이다. 많은 데이터를 쉽게 처리할 수 있어 머신러닝에 필수적이다.

Q2. EDA(Exploratory Data Analysis)란 무엇인가요?
A2. EDA는 탐색적 데이터 분석이다. 데이터를 전처리하기 전에 패턴과 특징을 파악하는 과정이다.

Q3. 대표적인 데이터 전처리 방법인 결측값, 중복값, 이상치 처리에 대해 각각 설명해 주세요.
A3. 결측값은 누락 데이터, 중복값은 동일 데이터, 이상치는 비정상 범위 데이터를 처리하는 것이다.

1. 선형대수학이란 어떤 학문이며, 왜 머신러닝에 필요한지 설명해보세요.

(1) 선형대수학(Linear Algebra)?

선형대수학은 벡터와 행렬을 다루는 학문이다. 머신러닝/딥러닝에 사용하는 이유는 벡터와 행렬이 데이터를 처리하고 모델을 학습시키는데 가장 효율적이기 때문이다.

(2) 벡터(Vector)?

벡터는 크기와 방향을 가진 수학적 객체다. 좌표 평면에서 점(x, y)가 있다고 가정할 때, 벡터는 원점(0, 0)에서 해당 점까지의 화살표로 볼 수 있다.

''' 벡터 예시 '''
# x축으로 3만큼, y축으로 4만큼 이동한 벡터
v1 = np.array([3, 4]) 
# x축으로 1만큼, y축으로 2만큼 이동한 벡터
v2 = np.array([1, 2]) 

''' 벡터 덧셈 '''
# 같은 차원의 벡터끼리 각 요소끼리 더함
vector_sum = v1 + v2 

''' 스칼라 곱 '''
# 벡터에 숫자를 곱하면 크기 변경 가능
scalar_mult = v1 * 2 

(3) 행렬(Matrix)?

행렬은 숫자를 직사각형 형태로 배열한 것이다. 벡터가 1차원이라면, 행렬은 2차원 배열이라고 보면 된다.

''' 행렬 예시 '''
A = np.array([[1, 2], 
			  [3, 4]])
B = np.array([[5, 6], 
			  [7, 8]])

''' 행렬 덧셈 '''
# 같은 크기의 행렬끼리 더하거나 뺌
matrix_sum = A + B 

''' 행렬 곱셈 '''
# 행렬끼리 곱함
matrix_product = np.dot(A, B)

''' 역행렬 (A⁻¹) '''
# 행렬을 반대로 뒤집음
inverse_A = np.linalg.inv(A)

(4) 머신러닝에서 선형대수학이 중요한 이유?

머신러닝/딥러닝에서는 선형대수학(벡터&행렬)을 사용해야 데이터를 빠르고 쉽게 처리할 수 있기 때문이다.

  • 이미지는 행렬로 픽셀 값 처리
  • 자연어는 벡터로 단어 표현
  • 딥러닝의 신경망 가중치는 행렬로 표현
  • 다차원 데이터 연산 속도를 높일 수 있음
  • 모든 머신러닝 알고리즘의 기반임

2. EDA(Exploratory Data Analysis)란 무엇인가요?

(1) EDA(Exploratory Data Analysis)?

직역하면 탐색적 데이터 분석이다. EDA는 데이터를 본격적으로 사용하기 전에 특징과 패턴을 찾는 과정이다. 데이터의 구조, 분포, 결측값, 중복값, 이상치, 결측치 등을 시각적으로 탐색한다. 탐색이 끝나면 전처리를 시작한다. EDA의 주 목적은 모델에 적용할 때 데이터의 효율을 높이고자 하는 것이다.

(2) EDA의 주요 단계

A. 데이터 확인

  • 데이터프레임의 크기, 컬럼명, 데이터 타입 확인
  • 평균, 중앙값, 최솟값, 최댓값 등 확인

B. 결측값 확인

  • 결측치가 있는 행과 열 파악 후 삭제 또는 대체

C. 이상치 확인

  • Box Plot 등을 활용하여 이상치 확인
  • 필요하면 로그 변환 등으로 정규화

D. 상관관계 확인

  • 변수 간 상관관계를 확인 후 주로 사용할 데이터 선택
''' A. 데이터 확인 '''
df = pd.read_csv("data.csv")
df.info()  # 타입 및 결측치
df.describe()  # 기본 통계량

''' B. 결측값 확인 '''
df.isnull().sum()

''' C. 이상치 확인 '''
sns.boxplot(data=df)

''' D. 상관관계 확인 '''
sns.heatmap(df.corr(), annot=True, cmap="coolwarm")

(3) EDA가 중요한 이유?

  • 데이터를 이해해야 적절한 전처리를 할 수 있음
  • 데이터를 전처리 하지 않으면 모델 성능이 저하될 수 있음
  • 변수 간 관계를 파악해야 중요한 피처를 선택할 수 있음

3. 대표적인 데이터 전처리 방법인 결측값, 중복값, 이상치 처리에 대해 각각 설명해 주세요.

(1) 결측값, 중복값, 이상치?

A. 결측값(Missing Values)

  • 누락된 값
  • 결측값이 많으면 왜곡 발생

B. 중복값(Duplicates)

  • 동일한 값
  • 중복값이 많으면 신뢰도가 떨어짐

C. 이상치(Outliers)

  • 정상 범위를 벗어난 값
  • 모델 성능을 저하시킬 수 있음

(2) 결측값(Missing Values) 처리 방법

''' 결측값 확인 '''
df.isnull().sum()

''' 미사용 행&열 삭제 '''
df.dropna(inplace=True)

''' 사용 행&열 값 입력 '''
df.fillna(df.mean(), inplace=True)  # 평균값
df.fillna(df.median(), inplace=True)  # 중앙값
df.fillna(df.mode().iloc[0], inplace=True)  # 최빈값

(3) 중복값(Duplicates) 처리 방법

''' 중복값 확인 '''
df.duplicated().sum()

''' 중복 행 일부 제거 '''
df.drop_duplicates(subset=['column_name'], keep='first', inplace=True)

''' 중복 행 전체 제거 '''
df.drop_duplicates(inplace=True)

(4) 이상치(Outliers) 처리 방법

''' 이상치 확인 '''
sns.boxplot(x=df['column_name'])

''' 이상치 제거 '''
df = df[(df['column_name'] >= lower_bound) & (df['column_name'] <= upper_bound)]

''' 이상치 값 대체 '''
df.loc[df['column_name'] > upper_bound, 'column_name'] = df['column_name'].median()

''' 데이터 정규화(로그 변환) '''
df['column_name'] = np.log1p(df['column_name'])

◆ 해설

1. 선형대수학이란 어떤 학문이며, 왜 머신러닝에 필요한지 설명해보세요.

선형대수학은 벡터, 행렬, 그리고 선형 변환을 다루는 수학 분야입니다. 데이터를 표현하고, 변환하며, 계산하는 데 사용되는 도구를 제공합니다. 이 학문은 특히 다차원 공간에서 데이터를 이해하고 다루는 데 적합합니다.

왜 머신러닝/딥러닝에 필요한가요?

  1. 데이터 표현과 구조화
  • 머신러닝과 딥러닝에서 데이터는 보통 벡터(1차원 배열)나 행렬(2차원 배열)로 표현됩니다.
  • 예를 들어, 이미지 데이터는 픽셀 값을 가진 행렬로, 텍스트 데이터는 단어 벡터로 변환됩니다.
  1. 모델 연산의 기초
  • 행렬 곱셈은 딥러닝 모델의 가중치와 입력 데이터를 결합하는 핵심 연산입니다.
  • 딥러닝의 기본인 신경망은 여러 층의 행렬 연산과 활성화 함수로 구성됩니다.
  1. 특성 추출과 차원 축소
  • 고차원 데이터를 효율적으로 다루기 위해 주성분 분석(PCA) 같은 차원 축소 기법을 사용합니다. 이 과정은 선형대수학의 기초 원리를 따릅니다.
  1. 최적화와 학습 알고리즘
  • 머신러닝 모델은 손실 함수를 최소화하는 방향으로 학습합니다. 이 과정에서 기울기 계산과 같은 작업이 선형대수학 기반으로 이루어집니다.
  • 딥러닝에서 역전파(backpropagation)는 선형대수학과 미적분의 결합된 활용입니다.

2. EDA(Exploratory Data Analysis)란 무엇인가요?

EDA, 즉 탐색적 데이터 분석(Exploratory Data Analysis)은 데이터를 이해하고 분석하기 위해 데이터를 탐구하는 과정입니다. 이 과정은 데이터 분석의 첫 단계로, 데이터를 시각화하거나 요약 통계를 계산하면서 데이터의 구조와 특성을 파악하는 데 중점을 둡니다.

주된 목표는 데이터를 통해 숨겨진 패턴을 발견하고, 이상치나 결측값처럼 해결해야 할 문제를 찾아내며, 변수 간의 관계를 탐구하는 것입니다. 예를 들어, 고객 데이터를 분석할 때 연령별 구매 금액의 분포를 확인하거나 구매 빈도와 금액 간의 관계를 탐색하는 것이 EDA에 해당합니다.

EDA에서는 주로 평균, 분산과 같은 요약 통계 계산, 히스토그램이나 산점도와 같은 그래프를 활용한 시각화 기법이 사용됩니다. 이를 통해 데이터의 특성과 문제를 명확히 이해하고, 이후 모델링이나 분석의 방향성을 정하는 데 중요한 역할을 합니다.

3. 대표적인 데이터 전처리 방법인 결측값, 중복값, 이상치 처리에 대해 각각 설명해 주세요.

  1. 결측값 처리
  • 결측값(missing values)은 데이터셋에 값이 존재하지 않는 경우입니다.
  • 결측값 처리 방법에는 다음과 같은 방법들이 있습니다.
    • 제거: 결측값이 포함된 행이나 열을 완전히 삭제하거나 특정 기준에 따라 일부 결측값이 포함된 행이나 열만 삭제합니다.
    • 예시: data.dropna(), data.dropna(thresh=3) (결측값이 3개 미만인 행만 남김)
    • 대체: 평균/중앙값 대체, 최빈값 대체, 예측 대체 등의 방법을 활용할 수 있습니다.
    • 특수 값 할당: 결측값을 특수 값(예: -1, 'Unknown')으로 대체하여 결측 여부를 표시합니다.
  1. 중복값 처리
  • 중복값(duplicate values)은 데이터셋에 동일한 데이터가 여러 번 나타나는 경우입니다. 중복값을 처리하지 않으면 분석 결과가 왜곡될 수 있습니다.
  • 중복값을 탐지하고 제거를 진행할 수 있습니다.
  1. 이상점 처리
  • 이상점(outliers)은 데이터에서 다른 값들과 현저하게 차이가 나는 데이터 포인트입니다.
  • 이상점을 탐지 (시각화 또는 통계적 방법 적용 등) 후 제거/대체/변환 등의 과정을 거칩니다.
profile
AI Engineer

0개의 댓글