Q1. 선형대수학이란 어떤 학문이며, 왜 머신러닝에 필요한지 설명해보세요.
A1. 선형대수학은 방정식을 다루는 학문이다. 많은 데이터를 쉽게 처리할 수 있어 머신러닝에 필수적이다.
Q2. EDA(Exploratory Data Analysis)란 무엇인가요?
A2. EDA는 탐색적 데이터 분석이다. 데이터를 전처리하기 전에 패턴과 특징을 파악하는 과정이다.
Q3. 대표적인 데이터 전처리 방법인 결측값, 중복값, 이상치 처리에 대해 각각 설명해 주세요.
A3. 결측값은 누락 데이터, 중복값은 동일 데이터, 이상치는 비정상 범위 데이터를 처리하는 것이다.
선형대수학은 벡터와 행렬을 다루는 학문이다. 머신러닝/딥러닝에 사용하는 이유는 벡터와 행렬이 데이터를 처리하고 모델을 학습시키는데 가장 효율적이기 때문이다.
벡터는 크기와 방향을 가진 수학적 객체다. 좌표 평면에서 점(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
행렬은 숫자를 직사각형 형태로 배열한 것이다. 벡터가 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)
머신러닝/딥러닝에서는 선형대수학(벡터&행렬)을 사용해야 데이터를 빠르고 쉽게 처리할 수 있기 때문이다.
직역하면 탐색적 데이터 분석이다. EDA는 데이터를 본격적으로 사용하기 전에 특징과 패턴을 찾는 과정이다. 데이터의 구조, 분포, 결측값, 중복값, 이상치, 결측치 등을 시각적으로 탐색한다. 탐색이 끝나면 전처리를 시작한다. EDA의 주 목적은 모델에 적용할 때 데이터의 효율을 높이고자 하는 것이다.
A. 데이터 확인
B. 결측값 확인
C. 이상치 확인
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")
A. 결측값(Missing Values)
B. 중복값(Duplicates)
C. 이상치(Outliers)
''' 결측값 확인 '''
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) # 최빈값
''' 중복값 확인 '''
df.duplicated().sum()
''' 중복 행 일부 제거 '''
df.drop_duplicates(subset=['column_name'], keep='first', inplace=True)
''' 중복 행 전체 제거 '''
df.drop_duplicates(inplace=True)
''' 이상치 확인 '''
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'])
선형대수학은 벡터, 행렬, 그리고 선형 변환을 다루는 수학 분야입니다. 데이터를 표현하고, 변환하며, 계산하는 데 사용되는 도구를 제공합니다. 이 학문은 특히 다차원 공간에서 데이터를 이해하고 다루는 데 적합합니다.
왜 머신러닝/딥러닝에 필요한가요?
EDA, 즉 탐색적 데이터 분석(Exploratory Data Analysis)은 데이터를 이해하고 분석하기 위해 데이터를 탐구하는 과정입니다. 이 과정은 데이터 분석의 첫 단계로, 데이터를 시각화하거나 요약 통계를 계산하면서 데이터의 구조와 특성을 파악하는 데 중점을 둡니다.
주된 목표는 데이터를 통해 숨겨진 패턴을 발견하고, 이상치나 결측값처럼 해결해야 할 문제를 찾아내며, 변수 간의 관계를 탐구하는 것입니다. 예를 들어, 고객 데이터를 분석할 때 연령별 구매 금액의 분포를 확인하거나 구매 빈도와 금액 간의 관계를 탐색하는 것이 EDA에 해당합니다.
EDA에서는 주로 평균, 분산과 같은 요약 통계 계산, 히스토그램이나 산점도와 같은 그래프를 활용한 시각화 기법이 사용됩니다. 이를 통해 데이터의 특성과 문제를 명확히 이해하고, 이후 모델링이나 분석의 방향성을 정하는 데 중요한 역할을 합니다.