본문으로 건너뛰기

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 등)와의 호환성도 높다