본문 바로가기

AI가 뭐길래 왜 어려운 거죠?

인공지능과 데이터

I. 데이터 사이언스란?

통계적 분석기법, 과학적 방법론, 분석 프로세스, 알고리즘, 시스템 등을 활용하여 다양한 데이터로부터 새로운 지식과 인사이트를 추출하는 융합분야

DS 벤 다이어그램
DS 관련 직무

 

II. 데이터 분석 프로세스

1. 기획 : 해결할 문제 정의, 분석 방법론 및 설계도 작성

2. 수집 : 데이터 수집, 오류(이상치, 결측치 등) 정리

3. 분석

  • 전처리 (데이터 탐색 및 정제)
  • 기술 통계 분석 (집단 간 비교, 시계열 비교)
  • 가설 검정
  • 예측 모형 개발 및 고도화

4. 보고 (시각화-BI, 대시보드)

III. 머신러닝(기계 학습)이란? 

1. 정의

  •  말 그대로 컴퓨터를 학습시키는 방법이다. 데이터를 활용하여 인간의 사고 과정을 경험할 수 있도록 컴퓨터를 훈련시킨다. 

2. 과정 

  •  기존의 데이터로 모델을 학습시켜 도출된 내용으로 새로운 데이터에 대한 예측을 수행한다. 

 3. 모델

  •  알고리즘을 통해 만들어진 수학적 연산 그 자체(예측을 위한 수학 공식, 함수, 1차 방정식, 확률 분포, condition rule 등)

4. 알고리즘

  •  문제를 풀기 위한 과정 또는 모델을 생성하기 위한 훈련 과정을 의미한다.

 

IV. 머신러닝 모델의 구조

y = ax + b
y : 타겟값, 종속변수 a : 가중치, 알고리즘을 통해 최적값을 찾음 x : 특성, 컬럼, 독립변수 b : 상수항, 기울기, 알고리즘을 통해 최적값 찾음
Data Table Data Sample
Feature Attribute Field Column
Instance Tuple Row

- 하나의 data instance(데이터 포인트)는 feature vector로 표현된다.

- 대부분의 독립 변수(feature)는 한 개가 아닌 여러 개이므로 Feature Vector로 표현된다.  

- 머신 러닝 모델 생성을 위한 수학식

β₀ • 1 => 상수항
w₀x₀ => 상수항

 

V. 파이썬으로 계산하기-NumPy

1. NumPy의 필요성

  • 파이썬은 기본적으로 인터프리터(interpreter) 언어이므로 처리속도가 C언어보다 굉장히 느리다.
  • 이러한 처리 속도를 개선하기 위해 다양한 패키지를 활용하고 있다. 

2. 정의

  • 패키지 중 하나인 NumPy(Numerical Python)은 고성능 과학 계산용 패키지이다. 행렬이나 벡터와 같은 배열 연산의 표준이 된다.
  • 넘파이의 인터페이스는 파이썬으로 되어 있지만, 내부적 구조가 C언어로 구성되어 처리속도가 파이썬보다 빠르며 메모리 방면에서 효율적이다.

3. python list와 numpy ndarray의 가장 큰 차이점 - Dynamic Typing Not Supported

  • 다이나믹 타이핑: 실행시점에서 데이터 타입을 결정하여 하나의 리스트에 다양한 데이타 타입이 존재할 수 있는 특징
  • 기본적으로 파이썬은 다이나믹 타이핑이라는 특징을 가지지만, 넘파이의 ndarray(n-dimensional array)는 다이나믹 타이핑의 특징을 가지지 않으므로 하나의 배열/리스트에 하나의 데이터 타입만 존재할 수 있다.  

 

VI. 모르는 용어 찾아보자

<NumPy Array(배열)>

Numpy(넘파이)* 배열은 동일한 데이터 타입을 가진 요소들의 다차원 그리드로 구성된다. 메모리 상의 연속된 블록에 데이터를 저장하고 인덱스를 사용하여 데이터에 액세스할 수 있다. 배열은 각 요소의 데이터 타입이 동일해야 하며, 배열 차원을 지정하여 다차원 데이터를 표현할 수 있다.

넘파이 배열은 과학적 계산, 데이터 분석, 이미지 처리, 기계 학습 등의 분야에서 사용되며, 많은 과학 컴퓨팅 라이브러리와 호환성이 있어 널리 사용된다. 파이썬 데이터의 처리와 분석에 있어 효율적이고 강력한 도구로 활용된다.  

*NumPy(넘파이)는 다차원 배열 객체인 ndarray(n-dimensional array)를 제공하여 벡터화 연산과 다양한 수학 및 과학 연산을 효율적으로 수행할 수 있도록 지원한다. 

 

<Transpose(전치행렬)>

전치행렬은 원래 행렬의 행과 열을 바꾼 결과로 얻어지는 행렬을 의미한다. 행렬의 요소들을 주대선으을 기준으로 대칭하여 배치하는 특징을 가지고 있다. 보통 원래 행렬 위에 T라는 첨자를 붙여 표기한다(A^T: A행렬의 전치행렬).

전치행렬로 행렬의 차원이 변환되며, 다양한 연산에서 활용될 수 있다. 전치행렬은 행렬의 특정한 성질을 활용하거나 행렬 연산을 효율적으로 수행하기 위해 사용된다. 특히, 선형 대수, 통계, 기계 학습 등의 분야에서 중요한 개념으로 활용된다. 

 

<Vector(백터)>

컴퓨터 공학 상의 벡터는 순서가 있는 값들의 모음이다. 즉, 여러 개의 숫자나 다른 요소로 구성된 데이터 구조를 의미한다. 벡터는 한 줄로 나열된 값들로 이루어진 1차원 배열이라고 생각할 수 있다. 

벡터는 다차원 공간에서의 위치나 방향을 표현하는 데에 사용된다. 벡터의 각 요소는 숫자 또는 다른 데이터 타입일 수 있다. 2D 벡터는 x와 y 좌표를 각각 나타내는 두 개의 숫자로 구성될 수 있다.

벡터는 다양한 연산을 수행할 수 있으며, 이는 벡터의 개별 요소들 간에 적용되어 벡터 간의 관계를 계산하고 분석하는 데에 사용된다.  

 

<Scalar(스칼라)>

스칼라는 하나의 값을 나타내는 데이터 타입이나 개념을 뜻한다. 스칼라는 크기(값)만 가지고 있으며, 방향이나 다른 특성이 없는 단일한 데이터이다. 일반적으로 숫자로 표현되지만, 다른 데이터 타입도 스칼라로 취급될 수 있다. 주로 컴퓨터 프로그래밍에서 변수로 사용되는 단일 값이다. 즉, 정수 변수, 실수 변수, 논리 변수 등은 스칼라 변수로 사용될 수 있다. 프로그램의 데이터 모델링과 알고리즘 설계에 중요한 역할을 한다. 

벡터나 행렬과는 대조되는 개념이다. 벡터는 여러 개의 값을 가지며 방향과 크기를 가지는 데이터 구조이고, 행렬은 2차원 배열로 여러 개의 스칼라 값을 가지는 데이터 구조이다. 스칼라는 이러한 벡터나 행렬의 구성 요소로 사용된다. 

 

<Matrix(행렬)>

행렬은 2차원 데이터 구조로, 행과 열로 구성된 직사각형 모양의 배열을 나타낸다. 각각의 요소는 행과 열의 인덱스로 접근할 수 있다. 주로 숫자로 구성되지만, 다른 데이터 타입도 포함될 수 있다.

행렬의 각 위치에 있는 값은 요소라고 하며, 일반적으로 행과 열의 인덱스를 사용하여 요소에 접근할 수 있다. 정방 행렬은 행과 열의 개수가 같은 행렬(n x n)을 말하고, 직사각형 행렬은 행과 열의 개수가 서로 다른 행렬(m x n)을 말한다.

 

<데이터 차원>

데이터 차원은 데이터가 가지는 특성 또는 속성의 개수를 나타낸다. 즉, 데이터를 표현하는 데 필요한 독립 변수의 수를 나타낸다. 

1차원 데이터는 선형적으로 배열된 값들의 집합이고, 2차원 데이터는 행과 열의 형태로 구성된 데이터로 표나 행렬 형태로 표현될 수 있다. 예를 들어, 1차원 데이터는 온도 변화의 시계열 데이터 등이 있고, 2차원 데이터는 키와 몸무게라는 두 가지 속성을 가진 개인의 데이터를 표현할 수 있다. 

데이터 차원은 데이터를 분석하고 모델링하는 데 중요한 역할을 한다. 차원이 높을수록 데이터의 특성이 다양해지고 복잡성이 증가한다. 따라서 적절하게 이해하고 활용하는 것이 데이터의 구조와 특성을 파악하고 데이터에 내재된 정보를 추출하는 데 도움이 된다. 

(용어 출처: ChatGPT)

 

 

 

(출처: 네이버 부스트코스 코칭스터디)