1주차 미션
처음 보는 용어집
데이터 리터러시(Data Literacy)
- 데이터를 이해하고, 해석하고, 분석하며, 데이터를 기반으로 의사 결정을 내리는 능력을 의미
주요 구성 요소
- 데이터 이해
- 데이터의 기본 개념, 데이터 유형(정형 데이터, 비정형 데이터 등), 데이터 소스 등을 이해하는 것을 포함
- 데이터 분석
- 데이터를 탐색하고, 통계 기법을 사용하여 데이터를 분석하며, 분석 결과를 해석하는 능력
- 데이터에서 유의미한 정보를 추출
- 데이터 시각화
- 분석한 데이터를 그래프나 차트 등 시각적 도구를 사용하여 표현하는 능력
- 복잡한 데이터를 쉽게 이해할 수 있도록 도움
- 데이터 기반 의사 결정
- 데이터 분석 결과를 바탕으로 합리적이고 효율적인 의사 결정을 내리는 능력
- 비즈니스, 연구, 정책 결정 등 다양한 분야에서 중요한 역할
- 데이터 윤리
- 데이터를 사용함에 있어 개인정보 보호, 데이터의 정확성 및 신뢰성, 데이터의 오용 방지 등 윤리적인 측면을 고려하는 것
중요한 이유
- 비즈니스
- 기업이 시장 동향을 분석하고, 고객의 요구를 이해하며, 효율적인 경영 전략을 세우는 데 필수적
- 개인적 성장
- 데이터에 대한 이해와 분석 능력은 개인의 문제 해결 능력과 비판적 사고 능력을 향상
- 사회적 영향
- 데공공 정책 결정, 의료 연구, 환경 보호 등 다양한 사회적 문제 해결에도 기여
데이터 마이닝(Data Mining)
- 대규모 데이터 세트에서 유용한 정보를 추출하고 패턴을 발견하는 과정
- 다양한 알고리즘과 기술을 사용하여 데이터를 분석하고, 데이터 안에 숨겨진 유의미한 관계를 찾아내는 것이 목표
주요 개념
- 데이터 전처리
- 데이터 마이닝의 첫 번째 단계로, 분석할 데이터를 준비하는 과정
- 데이터 정제, 통합, 변환, 축소 등이 포함
- 결측값 처리, 중복 데이터 제거, 데이터 정규화 등이 이루어짐
- 패턴 발견
- 데이터에서 패턴이나 규칙을 찾아내는 과정
- 대표적인 방법으로는 연관 규칙 학습, 군집 분석, 분류, 회귀 분석 등이 있음
- 모델 구축 및 평가
- 데이터를 기반으로 예측 모델을 만들고, 그 성능을 평가하는 단계
- 모델 평가에는 정확도, 정밀도, 재현율, F1 스코어 등의 지표가 사용
- 결과 해석 및 활용
- 발견된 패턴과 모델을 해석하고, 이를 실제 문제 해결에 적용하는 단계
- 비즈니스 인사이트 도출, 의사 결정 지원, 전략 수립 등에 활용 가능
주요기법
- 연관 규칙 학습
- 데이터 항목들 간의 연관성을 찾아내는 방법
- 예를 들어, 장바구니 분석에서 "빵을 사는 고객은 우유도 살 확률이 높다"와 같은 규칙을 발견
- 군집 분 석
- 유사한 특성을 가진 데이터 항목들을 그룹으로 묶는 기법
- 예를 들어, 고객을 구매 패턴에 따라 여러 그룹으로 나눌 수 있습니다.
- 분류
- 데이터를 미리 정의된 클래스(label)로 분류하는 방법
- 예를 들어, 이메일을 '스팸'과 '정상'으로 분류하는 것이 이에 해당
- 회귀 분석
- 연속적인 값을 예측하는 기법
- 예를 들어, 주택 가격을 예측하거나 주식 시장의 움직임을 예측할 때 사용
- 의사 결정 나무
- 의사 결정 규칙을 나무 구조로 표현하여 데이터를 분류하거나 예측하는 방법
- 해석이 용이하여 많이 사용됩니다.
Feature
- 머신러닝 모델이 데이터를 이해하고 학습하기 위해 사용하는 개별 속성 또는 특성
- 각 데이터 포인트가 갖는 속성으로, 모델의 입력값이 됨
- 특징은 수치형, 범주형, 텍스트, 이미지 등 다양한 형태로 존재할 수 있음
중요성
- 데이터 표현
- 특징은 데이터를 표현하는 방법으로, 좋은 특징은 모델의 성능에 큰 영향을 미침
- 특징이 잘 선정되면 모델이 더 잘 학습하고 예측 정확도가 높아짐
- 차원 축소
- 고차원의 데이터를 처리할 때 불필요한 특징을 제거하거나 중요한 특 징을 추출하여 차원을 줄임
- 주성분 분석(PCA), 선형 판별 분석(LDA) 등의 기법이 사용됨
- 특징 공학(Feature Engineering)
- 원본 데이터를 가공하여 새로운 특징을 만들어내는 과정
- 도메인 지식과 창의성이 요구되며, 모델 성능을 크게 향상시킬 수 있음
- 수치형 특징
- 연속적이거나 이산적인 숫자 데이터
- 예: 나이, 소득, 온도 등
- 범주형 특징
- 여러 범주로 구분되는 데이터
- 예: 성별(남/여), 색상(빨강/파랑/초록) 등
- 텍스트 특징
- 텍스트 데이터에서 추출한 특징
- 예: 단어 빈도, TF-IDF 값 등
- 이미지 특징
- 이미지 데이터에서 추출한 특징
- 예: 픽셀 값, SIFT, HOG 등
Engineering 기법
- 특징 선택(Feature Selection)
- 모델 성능 향상 및 과적합 방지를 위해 중요한 특징만 선택하는 과정
- 필터 방법, 래퍼 방법, 임베디드 방법
- 특징 추출(Feature Extraction)
- 원본 특징에서 새로운 특징을 만들어내는 과정
- 주성분 분석(PCA), 독립 성분 분석(ICA), t-SNE 등
- 특징 생성(Feature Generation)
- 기존 특징을 조합하여 새로운 특징을 만들어내는 과정
- 날짜 데이터를 분해하여 '연도', '월', '일'로 구분, 두 수치형 특징의 곱이나 비율 계산 등
- 정규화 및 스케일링(Normalization and Scaling)
- 특징 값의 범위를 일정하게 맞추는 과정
- 최소-최대 스케일링, 표준화(평균 0, 표준편차 1) 등
Jupyter Notebook 설명
- Jupyter Notebook은 대화형 컴퓨팅 환경을 제공하는 웹 애플리케이션으로, 코드, 텍스트, 수식, 시각화 등을 통합하여 하나의 문서로 만들 수 있다.
- 주로 데이터 과학, 머신러닝, 과학적 연구 및 교육 목적으로 사용된다.
Jupyter Notebook의 주요 기능과 특징
- 인터랙티브 코드 실행
- 코드 셀에 파이썬 코드를 작성하고, 셀 단위로 실행하여 결과를 즉시 확인할 수 있다.
- 여러 프로그래밍 언어를 지원하지만, 주로 파이썬이 사용된다.
- 리치 텍스트 편집
- Markdown을 사용하여 텍스트 셀에 서식이 있는 텍스트, 링크, 이미지, 수식 등을 작성할 수 있다.
- 코드 설명, 분석 결과 해설 등을 문서화하는 데 유용하다.
- 데이터 시각화
- Matplotlib, Seaborn, Plotly 등 다양한 시각화 라이브러리를 사용하여 그래프와 차트를 생성할 수 있다.
- 결과를 시각적으로 표현하여 데이터를 더 쉽게 이해할 수 있다.
- 공유 및 협업
- Jupyter Notebook 파일(.ipynb)을 저장하고 공유하여 다른 사람과 협업할 수 있다.
- GitHub, JupyterHub 등을 통해 여러 사람이 동시에 작업할 수 있다.
- 확장성 및 통합
- 다양한 확장 기능을 설치하여 Jupyter Notebook의 기능을 확장할 수 있다.
- IPython 커널을 사용하여 다른 언어와도 통합 가능하며, 다양한 데이터 소스와의 연동이 용이하다.
Jupyter Notebook을 사용하는 작업
- 데이터 분석
- 데이터 로딩, 전처리, 분석, 시각화 등 전체 데이터 분석 과정을 하나의 노트북에서 수행할 수 있다.
- 예: Pandas를 사용한 데이터 처리, Matplotlib를 사용한 시각화
- 머신러닝 및 딥러닝
- Scikit-learn, TensorFlow, Keras 등 머신러닝 및 딥러닝 라이브러리를 사용하여 모델을 구축하고 평가할 수 있다.
- 예: 데이터 전처리, 모델 학습, 성능 평가, 결과 시각화
- 과학적 계산 및 시뮬레이션
- NumPy, SciPy 등을 사용하여 과학적 계산을 수행하고, 결과를 분석하여 문서화할 수 있다.
- 예: 수치 해석, 통계 분석, 시뮬레이션 결과 시각화
- 교육 및 학습
- 코드와 텍스트를 함께 작성할 수 있어 프로그래밍 교육 및 데이터 과학 학습에 유용하다.
- 예: 강의 노트 작성, 과제 제출, 실습 환경 제공
Jupyter Notebook의 장점
- 직관적인 인터페이스
- 웹 기반의 직관적인 인터페이스로 사용이 용이하며, 코드 실행 결과를 즉시 확인할 수 있다.
- 통합된 작업 환경
- 데이터 로딩, 처리, 분석, 시각화, 문서화를 하나의 환경에서 모두 수행할 수 있다.
- 강력한 시각화 도구
- 다양한 시각화 라이브러리와 통합되어 있어 데이터 시각화 작업이 간편하다.
- 확장성과 유연성
- 다양한 프로그래밍 언어와 도구를 지원하며, 필요에 따라 기능을 확장할 수 있다.
Numpy
- Python 프로그래밍 언어의 패키지로, 다차원 배열 객체와 다양한 수학적 함수들을 제공하여 과학적 계산을 보다 효율적으로 수행할 수 있도록 도움
- Numerical Python의 약자로, 대규모 다차원 배열과 행렬 연산을 위한 강력한 도구
Numpy 라이브러리의 주 기능과 특징
다차원 배열 객체(ndarray)
- Numpy는 다차원 배열(ndarray) 객체를 제공하여 복잡한 배열 및 행렬 연산을 효율적으로 수행
- 배열은 동일한 데이터 타입을 가지며, 정수, 실수, 문자열 등의 데이터를 저장할 수 있음
벡터화 연산
- 반복문을 사용하지 않고 배열 간의 연산을 빠르게 수행할 수 있는 벡터화 연산을 지원
- 이는 성능 향상과 코드의 간결성을 동시에 제공
브로드캐스팅(Broadcasting)
- 서로 다른 크기의 배열 간 연산을 가능하게 하는 브로드캐스팅 기능을 지원함
- 이는 작은 배열을 자동으로 확장하여 연산할 수 있게 함
고성능 연산
- C, C++ 및 포트란으로 작성된 내부 라이브러리를 사용하여 빠른 배열 연산을 수행함
- 선형 대수, 랜덤 수 생성, 푸리에 변환 등 다양한 수학적 기능을 제공함
유니버설 함수(ufunc)
- 배열의 원소별 연산을 수행하는 함수들을 제공한다. 예를 들어, 사칙 연산, 삼각 함수, 지수 함수 등이 포함함
Numpy를 사용하는 작업
배열 생성 및 조작
- 배열을 생성하고, 크기와 형태를 변경하며, 슬라이싱 및 인덱싱을 통해 배열의 부분 집합을 다룰 수 있음
- 예:
numpy.array()
, numpy.zeros()
, numpy.ones()
, numpy.reshape()
수학적 연산
- 배열 간의 덧셈, 뺄셈, 곱셈, 나눗셈 등의 기본 연산을 수행할 수 있음
- 예:
numpy.add()
, numpy.subtract()
, numpy.multiply()
, numpy.divide()
통계 분석
- 평균, 표준편차, 최소값, 최대값 등의 통계적 계산을 쉽게 할 수 있음
- 예:
numpy.mean()
, numpy.std()
, numpy.min()
, numpy.max()
선형 대수 연산
- 행렬 곱셈, 행렬식 계산, 역행렬 계산 등 다양한 선형 대수 연산을 지원
- 예:
numpy.dot()
, numpy.linalg.det()
, numpy.linalg.inv()
데이터 샘플링 및 랜덤 수 생성
- 무작위 수 생성 및 데이터 샘플링 작업을 수행
- 예:
numpy.random.rand()
, numpy.random.randint()
, numpy.random.choice()
Numpy의 등장으로 더욱 편리해진 작업들
대규모 데이터 처리
- 대규모 데이터셋을 효율적으로 처리하고 분석할 수 있다. 이는 과학적 계산 및 데이터 과학 분야에서 매우 유용
벡터화된 코드 작성
- 반복문 없이 벡터화된 코드를 작성함으로써 코드의 실행 속도가 크게 향상되고, 코드의 가독성도 높아짐
복잡한 수학 및 통계 연산
- 복잡한 수학적, 통계적 연산을 간단한 함수 호출만으로 수행할 수 있어 생산성이 크게 증가
데이터 분석 및 머신러닝
- 데이터 전처리, 분석, 머신러닝 모델 구축 등의 작업이 용이해지며, 다른 라이브러리(Pandas, Scikit-learn 등)와의 호환성도 높다