진박사의 일상

ADsP 3과목 - 1 본문

프로그래밍/ADsP

ADsP 3과목 - 1

진박사. 2021. 8. 8. 21:41

데이터 분석 개요

 

1. 데이터 처리

개요 - 통계에 기반을 두지만 통계 지식과 가정이 적은 실용적 분야

활용 - DW나 DM을 통해 분석 데이터를 가져와 사용 / 신규 시스템이나 DW에 포함되지 못한 자료의 경우 기존 운영시스템(Legacy)나 스테이징 영역(Staging area)와 ODS(Operational Data Store)에서 데이터를 가져와 DW에서 가져온 내용과 결합하여 활용 / 직접 접근은 위험, 클린징 영역인 ODS에서 데이터 전처리를 해서 DW나 DM과 결합

최종 데이터 구조로 가공 -

(1)데이터 마이닝 분류(분류값과 입력 변수 연관해 인구통계, 용약변수, 파생변수 등 산출)

(2) 정형화된 패턴 처리(비정형데이터-DBMS에 저장했다가 텍스트 마이닝을 거쳐 DM과 통합 / 관계형 데이터-DBMS에 저장되어 사회 신경망분석을 거쳐 분석결과 통계값이 DM과 통합)

 

2.시각화

-낮은 수준의 분석이지만 효율적, 대용량 데이터 다루는 빅데이터 분석과 탐색적 분석에는 시각화가 필수, SNA 분석시 자주 활용

 

3. 공간분석(GIS)

-공간적 차원과 관련된 속성들을 시각화 하는 분류, 지도 위에 관련 속성 생성하고 크기, 모양, 선 굵기 등으로 구분

 

4. 탐색적 자료 분석(EDA)

개요 -다양한 차원과 값을 조합해 특이점이나 의미있는 사실 도출, 분석의 최종 목적을 달성하는 과정, 데이터 특징과 내재된 구조적 관계를 알기 위한 기법의 통칭

4가지 주제 - 저항성의 강조, 잔차 계산, 자료변수의 재표현, 그래프를 통한 현시성

효율의 예 - 모형개발 프로세스(KDD, CRISP-DM)에서 데이ㅣ터 이해 단계와 변수 생성 단계, 변수 선택 단계에서 활용

 

5. 통계 분석

기술통계 - 표본이 가진 정보를 쉽게 파악할 수 있도록 정리, 요약, 그래프화

추측통계 - 표본의 표본통계량으로부터 모집단의 특성인 모수에 관해 통계적으로 추론하는 절차

활용 분야 - 정책수립의 근거자료, 농업, 의학, 경영, 스포츠

 

6. 데이터마이닝

개요 - 고급 데이터 분석법, 대용량 자료로 정보 요약하고 미래 예측을 목표로 자료에 존재하는 관계, 패턴, 규칙 등을 탐색하고 모형화 함으로 유용한 지식을 추출하는 분석 방법

방법론 - 데이터베이스에서의 지식 탐색, 기계학습(인공신경망, 의사결정나무, 클러스터링, 베이지안분류, SVM etc), 패턴인식(장바구니분석, 연관규칙 등)

 

 

R 프로그래밍

1. 데이터 분석 도구 현황

-R 개요 : 오픈소스 프로그램, 통계/데이터마이닝과 그래프 위한 언어

-분석도구 종류 : R, SAS, SPSS, Stata, WinRats-32, Eviews, Limdep

-분석도구 비교

SAS/SPSS - 유료, 고가 / 대용량 / 모듈 별도 구매 / 최근 알고리즘&기술반영 느림 / 학습자료 유료도서 / 질의 공개 커뮤니티 X

R - 오픈소스 / 모듈화 되어 간단 / 모듈 오픈소스 / 기술반영 빠름 / 공개논문, 자료 많음 / 커뮤니티 활발

-R의 특징 : 오픈소스, 그래픽/성능 뛰어남, 시스템 데이터 저장 방식(세션마다 데이터셋을 저장하므로 매번 데이털르 로딩할 필요 없이 명령어 스토리도 저장 가능), 모든 운영체제 사용 가능, 표준 플랫폼(S통계 언어 기반 구현, R/S 플랫폼은 통꼐전문가의 사실상의 표준 플랫폼), 객체지향언어이며 함수형 언어

객체지향 언어 - 추정계수, 표준오차, 잔차 등을 결과값으로 객체에 저장해 필요한 부분을 호출하여 쉽게 활용 가능

함수형 언어 - 깔끔하고 단축된 코드, 빠른 코드 수행 속도, 단순 코드로 디버깅 노력 감소, 병렬 프로그래밍으로 전환 용이

-R스튜디오 : 오픈소스, 메모리 변수 타입, 래틀(Rattle)은 GUI 패키지와 긴밀히 결합되어 정해진 기능만 사용가능해 업그레이드가 제대로 되지 않으면 통합성에 문제가 발생할 수 있다.

 

R 기초

출력 - print(), cat()-여러항목 묶어서

대입 연산자 - <-, <<-, =, ->

변수 목록 - ls() - 변수명만, ls.str() - 변수값까지

변수 삭제 - rm(), 모두 삭제시 rm(list=ls())

벡터 생성 - c()

함수 정의 - function(매개변수들) {명령문들-변수 선언시 지역변수 취급/ <<- 쓰면 전역변수}

수열 - ex 1:5(1, 2, 3, 4, 5), seq(from=0, to=10, by=2) (0,2,4,6,8,10) by대신 length.out 가능

반복 - rep(1:3, each=2, time=3) -> [1] 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3

문자 붙이기 - paste("a","b","c",sep="-") -> "a-b-c"

문자열 추출 - substr(문자열, 시작점, 끝점)

논리값 - True(T), False(F)

논리연산자 - ==, !=, <, <=, >, >=

벡터 원소 선택 - V[n] : 선택, V[-n] : 제외 (주의 - R은 index가 1부터 시작)

 

기초통계

평균 - mean(변수) / 합계 = sum(변수) / 중앙값 = median(변수) / 로그 - log(변수) / 표준편차 - str(변수) / 분산 = var(변수) / 공분산 - cov((변수1, 변수2) / 상관계수 - cor((변수1, 변수2) / 길이 - length(변수)

 

binomial - binom(size, prob) / chi-squared - chisq(df, ncp) / F - f(df1, df2, ncp) / normal - norm(mean, sd) / poison - pois(lamda) / uniform - unif(min, max)

접두사 

d - 확률밀도함수(PDF)의 확률값, f(x)

p - 누적분포함수(CDF)의 확률값, F(x)

q - 분위수(quantile)의 값, F-1(x)

r - 무작위 난수

 

R에서 다룰수 있는 데이터 타입 - Statistical SW, Text files, DBMS, Bigdata, SAS, SPSS, ASCII, XML, Webscraping Oracle, MS-SQL, MySQL, Access, Hadoop, NoSQL, MapReduce, Excel, HDF5, Minitab, Stata, Keyboard, sockets...

파일 타입 - CSV, XLS, JSON, HTML, XML, DB 등등

 

주의 - 경로의 역슬래시x 슬래시

 

테이블로 된 데이터파일 읽기 - read.table("파일 이름", sep="구분자", na.strings="결측치대체문자", header=(T=첫째줄을 변수명으로 인식/F))

CSV 읽기 - read.csv("파일 이름", header=T)

csv로 출력 - write.csv(행렬/데이터프레임, "파일이름", row.names=F) 

 

 

 

R - 데이터구조와 데이터프레임

1. 벡터 - 동질적(같은 자료형이나 mode를 가짐), 위치로 인덱스, 인덱스로 하위 벡터 반환 가능, 벡터 원소는 이름을 가질 수 있음

2. 리스트 - 이질적(여러 자료형 가능), 위치로 인덱스, 하위 리스트 추출 가능, 리스트 원소 이름 가질 수 있음(L[["a"]] == L$a)

3. 자료형 - 숫자, 숫자벡터, 문자열, 문자열벡터, 요인(factor), 리스트, 데이터프레임(data.frame), 함수

4. 데이터프레임(data frames) **

강력하고 유연한 구조, DF의 리스트 원소는 벡터 or 요인이면서 프레임의 열이다. 벡터와 요인은 동일한 길이, 표 형태의 데이터 구조이며 각 열은 서로 다른 데이터 형식 가질 수 있다. 열에는 이름이 있어야 한다.

5 그 외 구조

-단일값(Scalars) - 원소가 하나인 벡터로 인식/처리

-행렬(Matrix) - 차원을 가진 벡터로 인식

-배열(Array) - 행렬이 n차원까지 확장된 형태

-요인(Factors) - 벡터처럼 생겼지만 벡터에 있는 고유값(unique value)의 정보를 얻어내는데 이 고유값들을 요인의 수준이라고 함. 요인의 두가지 주된 사용처로는 범주형 변수, 집단 분류가 있다.

6. 벡터, 리스트, 행렬 다루기

재활용 규칙 - 길이가 서로 다른 두 벡터를 연산 시 R은 짧은 벡터의 처음으로 돌아가 연산이 끝날떄까지 원소를 재활용

ex) a <- 1:6, b <- 7:9 -> a+b == c(8,10,12,11,13,15) #(1+7, 2+8, 3+9, 4+7, 5+8, 6+9)

벡터

-데이터 추가 : v<-c(v,new_items) or v[length(v)+1]<-new_item

-데이터 삽입 : append(v, new_value, after=n)

-요인 생성 - f<-factor(v, levels)

-벡터를 합쳐 하나의 벡처와 요인으로 - comb<-stack(list(v1=v1...))

-벡터 값 조회 - vector[c(조회할인덱스)]

리스트

-리스트 - list(숫자, 문자, 함수 가능 / 이름 지정 가능)

-리스트 원소 선택 - L[[n]], L[c(조회할인덱스들)], L[["이름"]], L$이름

-리스트 원소 제거 - NULL 대입

행렬

-행렬 - matrix(data, 행수, 열수) ex) e<-matrix(1:20, 4, 5)

-차원, 대각, 전치, 역 - 차원수 dim(e) = 4 5 / 대각성분 diag(e) = 1 6 11 16 / 전치 t(e) / 역행렬 - solve(mat) (정사각행렬 역행렬 존재시)

-행렬곱, 원소간연산 - 행렬1 %*% 행렬2 / 행렬1+행렬2 / 행렬1-행렬2 / 행렬1*행렬2 / 행렬1*상수

-행이름 / 열이름 / 행/열선택 - rownames(e)<-c("행이름1", ...) / colnames(e)<-c("열이름1", ... ) / e[행,] / e[,열]

데이터프레임

- 생성 - data.frame(벡터1, ...)

- 레코드 생성 -new<-data.frame(a=1, b="a", ...)

-행결합, 열결합 - rbind(frm1, frm2), cbind(frm1, frm2)

-조회 예 - dfrm[dfrm$gender="m"] #남성만 / dfrm[dfrm$age >= 10 & dfrm$age < 20] #10대만 / dfrm[grep("김", dfrm$name, ignore.case=T), c('age', 'gender')] #김씨의 나이와 성별

-데이터셋 조회 - subset(dfrm, select=변수, subset=변수>조건)

-병합 - merge(df1, df2, by="공통된 열")

-열이름(바꾸기) - colnames(df) (<- newnames)

-NA 행 삭제 - na.omit(dfm)

 

'프로그래밍 > ADsP' 카테고리의 다른 글

ADsP 3과목 - 3  (0) 2021.08.22
ADsP 3과목 - 2  (0) 2021.08.10
ADsP 2과목 정리(마지막)  (0) 2021.08.06
[TIL] 21.08.03 - ADsP 공부  (0) 2021.08.03
[TIL] 2021.08.01 ADsP 2과목  (0) 2021.08.03