1. R언어
: 데이터 분석 도구로 구글, 페이스북, 야후, 아마존 등에서 사용되고 있다.
2. 데이터 분석 과정:
데이터 분석은 과거 및 현재에 일어난 상황을 활용하여 현황을 파악하고. 앞으로 다가올 상황을 예측하거나 일어날 상황에 대해 타당한 근거 자료를 제시할 수 있도록 준비하는 과정이다.
데이터 분석 흐름도를 보면 모든 과정이 한 번의 주기로 끝나는 것처럼 보이지만, 실상은 전체 과정이 계속 반복되는 순환 구조라고 볼 수 있다. 물론 데이터 분석 설계 및 이후 과정이 완벽하면 한 번에 끝낼 수 있지만, 대부분은 시행착오를 다회 거치고 전체 과정을 반복해야만 원하는 결과를 얻을 수 있다. 데이터 분석은 크게 5단계의 과정을 거친다.
1) 데이터 분석 설계 (방향성 기획, 방법론 검토, 가설 설정)
데이터 분석 설계는 데이터 분석 흐름의 첫 단계로 가장 중요하다. 어떠한 주제를 어떤 분석 방법으로 시행할지 계획을 설립하는 단계이다.
1-1) 분석할 주제를 명확하고 구체적으로 설정하고, 그 주제 내에 용어들을 이해하기 쉽게 정의한다.
1-2) 브레인스토밍 등을 활용해 주제와 연관된 내용의 가설을 다양하게 설정한다. 가설 설정 단계에서는 최대한 가설을 많이 세운 후 데이터 확보 가능 여부를 판단하는 것이 좋다. 데이터 확보 가능 여부만 신경 쓰진 말자.
1-3) 가설에 따른 분석가능 변수를 구성한다. 분석 가능 변수를 구성할 때에는 각 가설에 따라 필요한 변수를 선정해야 한다. 이때 파생 변수도 같이 고려하자.
1-4) 끝으로 분석 항목을 결정한다
2) 데이터 준비 (데이터 확보 및 준비)
: 전반적인 분석 방향을 계획한 후 데이터 준비 단계를 가진다. 분석에 필요한 데이터를 준비하고, 필요 데이터 항목 및 데이터 존재 위치에 따라서 데이터를 준비하는 방법은 다양하다.
크게 두 가지로 본다면 다음과 같다
1) 필요한 데이터를 찾아 직접 입력하여 생성
2) 기존에 누군가 구성한 데이터를 찾아서 활용
>> 필요한 정보의 양이 적다면 직접 입력하여 생성하는 1번 방식을 채택한다. 이때 작성에 오류를 범하지 않도록 주의한다.
>> 2번의 방법은 대개는 엑셀, TXT, CSV 파일 등을 이용하거나 서버 내에 저장되어 있는 데이터를 불러와 사용한다. 웹 크롤링(Web Crawling) 방식을 이용해 데이터를 활용하기도 한다.
데이터 준비 단계에서는 데이터의 형태를 파악하는 것도 중요하다. 데이터 형태는 구조 및 구성 변수의 형태, 데이터 값 툭 성을 중심으로 파악한다. 이런 과정을 분석하기 쉽게 데이터를 변형하기 위한 사전 작업이다. 분석할 데이터가 어떻게 생겼는지 제대로 알아야 가공할 수 있다는 걸 명심하자.
3) 데이터 가공 (추출 및 정제, 파생 변수 생성, 데이터 병합)
데이터 가공 과정은 원시 데이터(Raw Data)를 원하는 형태의 데이터로 처리하는 일련의 과정이다. 준비한 데이터를 바탕으로 가설을 검정하기 좋은 데이터로 가공한다. 예를 들자면 불필요한 변수를 제거하고 필요한 변수의 데이터만 따로 추출하거나 기존 변수의 데이터 간 연산을 통하여 조건에 맞는 데이터를 구성한다. 또한 데이터 값에 따라 그룹화해 새로운 변수를 생성할 수 도 있다.
전체 변수중 필요한 변수(상품명, 가격) 예시를 들어보자
순위 | 상품명 | 제조사 | 100g당 가격 |
1 | 닭가슴살 블랙페퍼 | H림 | 1,950 |
2 | 소스 닭가슴살 | XX치킨 | 1,569 |
3 | IQFF 무항생제 인증 닭가슴살 | HK식품 | 659 |
4 | 저염 훈제 닭가슴살 | C메이트 | 1,837 |
>> 데이터 추출
상품명 | 100g당 가격 |
닭가슴살 블랙페퍼 | 1,950 |
소스 닭가슴살 | 1,569 |
IQFF 무항생제 인증 닭가슴살 | 659 |
저염 훈제 닭가슴살 | 1,837 |
: 이 단계에서는 하나의 데이터 세트로만 가공을 진행할 수도 있지만, 여러 데이터 세트를 병합 혹은 추출하여 새로운 데이터 세트(Data Set)를 만들 수 있다
4) 데이터 분석 (통계 분석, 그래프 및 시각화)
데이터 분석은 데이터 가공을 거쳐서 준비한 데이터를 이용하여 다양한 분석을 시행하는 단계이다. 주로 선행하는 방식은 데이터 분포를 확인하기 위하여 기술통계량(빈도, 평균, 최댓값, 이상치 등)으로 데이터를 파악한 후, 다양한 그래프를 그려보면서 패턴 및 분포를 확인하는 시각화 방법이다. 데이터 분포 확인은 사전 단계인 데이터 준비단계에서 진행하기도 한다. 일련에 과정을 거치면서 가설에 따라 적용할 수 있는 분석 방법론을 실제로 적용한다
5) 결론 도출 (분석 결과 해석, 분석 결과 정리)
다양한 통계량을 통해서 가설을 검증하고 의미 있는 결과를 정리해 최종 결과를 도출하면 데이터 분석이 마무리된다.
일련의 과정을 짧게 요약하면 다음과 같다.
1) 데이터 분석 설계: 어떤 주제에 대해 분석을 어떻게 할 것인지 계획을 수립한다.
2) 데이터 준비: 분석에 필요한 데이터를 수집하고 파악한다
3) 데이터 가공: 불필요한 변수를 제거하고 분석에 필요한 데이터로 변환
4) 데이터 분석: 통계와 시각화등 다양한 분석 방법을 적용한다.
5) 결론 도출: 가설을 검정하고 결과를 정리한다.
3. 데이터는 어떻게 생겼을까?
: 데이터는 많은 생김새를 가지고 있다. 하지만 일반 적으로 분석해야 될 데이터는 대부분 행(Row)과 열(Column)으로 이루어져 있다 (n*m의 형태의 데이터 셋). 여기서 각 행은 데이터의 관측치(observations), 열은 변수(Variable), 행과 열에 들어가는 데이터는 값(Value)이라고 부른다. 이러한 데이터 세트를 우리는 테이블(Table)로 부른다.
1) 데이터 구조 간 관계 및 데이터 유행들
데이터들의 집합이라고 할 수 있는 데이터 세트는 다양한 형태의 데이터로 존재한다. 그리고 데이터 구조와 형태에 따라서 벡터(Vector), 행렬(Matrix), 리스트(List), 데이터 프레임(Data Frame) 등으로 구분한다. 데이터는 구조는 비슷해도 속성이 다르기에 그렇게 구분한다. 데이터의 종류 간 관계를 살펴보자.
- 벡터(Vector): 한 가지 데이터 유형으로 구성된 1차원 구조의 데이터
- 행렬(Matrix): 한 가지 데이터 유형으로 구성된 2차원 구조의 데이터
- 배열(Array): 행렬을 n차원으로 확대한 구조의 데이터
- 리스트(List): 숫자형 벡터, 문자형 벡터 등 여러 데이터 유형이 포함된 1차원 구조의 데이터.
- 데이터 프레임(Data Frame): 리스트를 2차원으로 확대한 구조의 데이터
데이터는 다양한 유형을 가지고 있는데 주로 숫자형(Numeric), 문자형(Character), 논리형(Logical)으로 나눈다.
- 숫자형(Numeric): 숫자로 이루어진 데이터
- 문자형(Character): 문자로 이루어진 데이터
- 논리형(Logical): TRUE or FALSE로 이루어진 데이터
2) 데이터 유형에 따른 분류들
데이터 유형에 따라 크게 단일형과 다중형으로 나뉜다. 데이터가 한 가지 유형으로 구성되어 있을 경우에는 단일형 데이터, 여러 가지 유형으로 구성되어 있다면 다중형 데이터로 부른다.
- 단일형: 숫자형 또는 문자형과 같이 한 가지 데이터 유형으로만 구성된 데이터. 벡터, 행령, 배열이 이에 해당한다.
- 다중형: 숫자 데이터 또는 문자 데이터 등의 여러 가지 데이터 유형으로 구성된 데이터. 리스트와 데이터 프레임이 다중형 데이터 구조에 속한다.
eg)
단일형 - 문자형 >> a = ["고양이", "호랑이", "강아지"]
단일형 - 숫자형 >> b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
다중형 >> c = ["고양이", 1, "호랑이", 2, "강아지", 3]
3) 데이터 차원에 따른 분류
차원은 데이터 내에서 특정 데이터 값을 찾을 때에 필요한 정보의 개수라고 생각하면 된다.
1차원 데이터는 직선 위에 데이터 값이 나열되어 있으므로 찾고자 하는 값이 기준점을 중심으로 얼마큼 떨어져 있는지(몇 번째)만 알면 된다.
2차원 데이터는 두 가지 정보, n차원 데이터는 n가지 정보를 알아야 원하는 값을 찾을 수 있다. 쉽게 말해 1차원에서는 x값, 2차원에서는 x and y값, 3차원에서는 x , y, and z값을 알아야지 원하는 값을 찾을 수 있다.
벡터, 행렬, 배열, 리스트. 데이터 프레임은 차원과 유형에 따라서 다음과 같이 분류할 수 있다.
유형\차원 | 1차원 | 2차원 | n차원 |
단일형 | 벡터 | 행렬 | 배열 |
다중형 | 리스트 | 데이터 프레임 | - |
• 벡터: 가장 기본적인 데이터 구조형태. 벡터는 1차원으로 한 가지 데이터 유형으로 구성되어 있다.
R에서 할당 연사자인 "<-" 기호와 "c()"함수를 이용해서 생성할 수 이 있다.
변수이름 <- c(값Value)
여기서 "c()" 함수는 같은 유형의 데이터를 결합해 벡터를 생성하는 가장 기본적인 함수이다. 변수명을 값에 할당하면 벡터를 만들 수 있다.
벡터는 한 가지 유형으로만 구성되어야 하기 때문에 데이터형을 숫자, 정수, 문자, 논리형으로 나눠야 한다.
- 숫자형 벡터(Numeric Vector)
: 실수 범위에 해당하는 모든 숫자를 의미한다. 그래서 때론 실수형 벡터(Double Vector)라고 명명되기도 한다. 정수, 유리수, 무리수를 모두 포함하는 숫자를 데이터 하면 숫자형 벡터가 되고 프로그램으로 연산할 수 있다. 정수형 벡터(Interger Vector)도 존재하지만 실제 코드에서는 숫자형 벡터를 활용하는 경우가 대부분이다.
* 구성 인자가 한 개인, 즉 값이 1개로 이루어진 벡터는 스칼라(Scala)라고 합니다.
> ex_vector1 <- c(-1, 0, 1) # 데이터 생성
> ex_vector1 # 변수 조회
[1] -1 0 1
[1]은 데이터의 위치를 표시한 것이다. 출력한 터 중에 첫 번째 요소부터 표시했다는 뜻이다. 예를 들어 벡터의 요소가 많아 한 줄에 모두 표시되지 않고 다음과 같은 실행 결과가 나오면 [1] 바로 뒤에 나오는 1은 1번째 요소이고 [5] 바로 뒤에 오는 5는 5번째 요소라는 의미이다.
[1] 1 2 3 4
[5] 5 6 7 8
+ 생성한 벡터가 어떠한 데이터 유형으로 이루어져 있는지 확인하려면 "mode()"함수, "str()"함수, length() 함수를 사용하면 된다
- mode() 함수: 데이터 유형을 확인하는 함수. numeric, character, logical 등의 데이터 유형을 알려준다.
eg)
mode(12345) >> [1] "numeric",
mode("맥그리거") >> [1] "character"
mode(True) >> [1] "logical"
- typeof() 함수: "mode()" 함수와 비슷하게 데이터 유형을 알려주지만 numeric함수를 실수형은 double, 정수형은 integer로 표시해 준다
eg)
typeof("12345") >> [1] "double"
typeof("맥그리거") >> [1] "character"
mode(True) >> [1] "logical"
- str() 함수: 데이터형(숫자형, 문자형, 논리형), 데이터 길이, 데이터 값을 총체적으로 확인할 수 있는 함수
eg)
str(12345) >> num 12345,
str("맥그리거") >> chr "맥그리거",
str("TRUE") >> logic TRUE
- length() 함수: 데이터 길이를 확인하는 함수. 벡터의 길이만큼 값을 출력한다
eg)
객체 = [-1, 0 ,1] #변수 생성
length(객체)
>> [1] 3
- 문자형 벡터(Character Vector)
: 문자로 이루어진 데이터. 변수를 생성할 때와 똑같이 할당할 문자를 작은 따옴표나 큰 따옴표 안에 감싼다.
eg)
> character_vector <- c("맥그리거","동순이")
> character_vector
[1] "맥그리거" "동순이"
- 논리형 벡터(Logical Vector)
: TRUE와 FALSE라는 진릿값으로 이루어진 데이터. 주로 데이터들을 비교할 때 사용 된다.
> Logical_Vector <- c(TRUE, FALSE, TRUE, FALSE)
> Logical_Vector
[1] TRUE FALSE TRUE FALSE
> mode(Logical_Vector)
[1] "logical"
> str(Logical_Vector)
logi [1:4] TRUE FALSE TRUE FALSE
'AIoT' 카테고리의 다른 글
AIoT 정규 18일차 (1) | 2024.01.23 |
---|---|
AIoT 정규 17일차 (0) | 2024.01.22 |
AIoT 정규 15일차 (0) | 2024.01.18 |
AIoT 정규 13일차 (0) | 2024.01.16 |
AIoT 정규 12일차 (2) | 2024.01.15 |