반응형

10주에 걸친 데이터 분석 입문 올인원 패키지 수강을 완료하였습니다!!!

지난 시간을 돌아보니 훅 지나가버렸네요..

마지막으로 전체 강의들의 요약 및 수강 예정인 분들을 위한 팁을 몇 가지 적어보겠습니다.

 

우선 커리큘럼 순서입니다. 1주차에도 소개했지만 아래와 같습니다.


[올인원 패키지 : 데이터 분석 입문] 강의는 아래와 같은 6개의 Course로 이루어져 있습니다.

#1. 우리는 왜 데이터분석을 배워야할까?(5강)

#2. 알면 쓸모있는 데이터 잡학사전(50강)

#3. 나도 데이터 분석을 할 수 있을까?(11강)

#4. 중학교 수학으로 이해하는 통계와 데이터분석(24강)

#5. 고등학교 수학으로 이해하는 통계와 데이터분석(17강)

#6. 혼자 해보는 데이터분석(6강)

 


저는 [데이터 분석 입문 - 올인원 패키지] 의 내용을 아래와 같이 세 가지로 요약해보았습니다.

#1 데이터 분석은 무엇이고 이와 관련된 직업에는 무엇이 있을까?

#2 머신러닝 및 딥러닝이란 무엇이고, 데이터 분석에는 어떻게 사용되는가?

#3 기초 통계 상식 및 분석 방법

#4 실습

 

#1 데이터 분석은 무엇이고 이와 관련된 직업에는 무엇이 있을까?

 

1. 데이터 분석 정리 및 필요성

 : 데이터 분석은 기술통계 및 시각화, 통계적 추론을 통하여 데이터에서 의사결정에 기반이 되는 INSIGHT를 얻어내는 과정이다. 데이터 분석은 아래와 같은 절차들을 거치게 되는데, 데이터 엔지니어, 데이터 분석가, 데이터 사이언티스트가 아래의 작업들을 나누어 수행하게 됩니다.(큰 회

사일수록 일이 더 세분화가 되어있을 확률이 높습니다.)

 

* 데이터 엔지니어 : 분석에 필요한 데이터 추출, 정제 등을 담당하는 직업이다. 데이터 파이프라인 설계, 데이터 웨어하우스 설계 등의 업무를 담당한다.

 

* 데이터 분석가 : 데이터들을 기반으로 분석 계획 및 가설을 세우고 가설 검증을 진행하는 직업이다. 분석 주제 발굴 및 데이터 모델링 등의 업무를 수행한다.

 

* 데이터 사이언티스트 : 데이터 분석가와 업무의 롤은 비슷하지만, 범위가 더 넓다. 빅데이터 처리 경험과 딥러닝 활용법들을 숙지하고, 기존 분석 방법에 더불어 활용할 수 있어야 한다.

 

  위와 같은 데이터 분석 과정은 현업에서 다양한 방법으로 활용되고 있고, 데이터의 양적인 성장에 따라 중요성은 점점 더 강조되고 있습니다. 활용 사례들은 아래와 같습니다.

 

1) 현업에서의 데이터 분석 사례 : 공공데이터
  공공데이터는 환경, 수출 등 무수히 많은 데이터가 축적되고 있고, data.go.kr과 같은 사이트에서 찾아볼 수 있습니다.


2) 현업에서의 데이터 분석 사례 : 제조업
제조업 데이터는 경우 변수 개수가 상당히 많습니다. 제조 공정별로 변수가 여러가지가 생성되기 때문에 중요 변수들을 잘 추출하여 분석하는 능력이 중요합니다.

  
1) 다중공선성 : 독립변수들간에 높은 선형관계가 존재하는 경우를 뜻하는 말로, 다중공선성이 높은 경우에는 변수를 적절히 제거할 필요가 있습니다.
2) 불균형 자료(예 : 양품 vs 불량 비율) : 대부분 제조업의 경우 불량 분석을 위해 빅데이터를 활용하는데, 양품의 비율이 불량의 비율보다 월등히 높습니다.(그렇지 않으면 이익이 나지 않겠죠?) 따라서 데이터의 불균형이 매우 심합니다.

3) 현업에서의 데이터 분석 사례 : 통신/마케팅

 

통신, 마케팅 분야에서는 데이터를 활용하여 아래와 같은 작업을 수행합니다.


1) 상품 추천
2) 영화 추천
3) 상권분석 및 매장분석

사용 알고리즘 : 
연관규칙 알고리즘 : 특정 상품을 살때 어떤 상품을 같이 사는지 분석
협업필터링 : 비슷한 사람들을 분류하여 비슷한 마케팅 진행

4) 현업에서의 데이터 분석 사례 : 금융/보험

 

금융/보험 분야에서는 데이터를 활용하여 아래와 같은 작업을 수행합니다.

 

1) 고객이동경로분석
2) 신용평가
3) Fraud Detection System
4) 운전 습관을 통한 보험료율 책정/할인
5) 건강 관리를 통한 보험 할인
6) 보험 사기 방지

제약 사항 : 고객정보 공유 규제(유출 시 막대한 피해)

5) 현업에서의 데이터 분석 사례 : 헬스케어

 

금융/보험 분야에서는 데이터를 활용하여 아래와 같은 작업을 수행합니다.

 

1) 질병 감시/예측 서비스
2) 의료 빅데이터 및 AI : DNA, 진단정보, 의료차트 등을 활용한 예측 서비스 및 Computer Vision을 활용한 판정
빅데이터와 AI를 활용한 신약 후보물질 제안

 

#2. 기초 통계

1. 기술통계 : 수집한 자료를 분석하여 대상들의 속성을 파악하는 통계방법

  - 평균(mean)

  - 중앙값(median)

  - 최빈값(mode)

  - 분산(variance)

  - 공분산(covariance)

  - 상관계수(coefficient)

 

2. 추리통계 : 모집단에서 표본을 추출하고 표본의 기술통계를 통해 모집단의 특성을 추측하는 것

 

  표본의 기술통계를 통해 모집단의 특성을 추측했을 때, 이 추측이 100% 맞진 않습니다. 따라서 우리는 신뢰구간이란 것을 정하여, 모집단의 특성이 표본을 통해 얻은 추측 범위 안에 들어갈 구간과 그 구간 안에 모집단이 들어갈 확률을 구합니다.

  - 모집단 : 연구 또는 분석의 전체 집단

  * 모집단은 실시간으로 변하는 경우도 있어 모집단 전수 조사는 매우 어렵다.

  - 신뢰구간 : 추리통계에서 예측한 모집단의 특성이 위치할 가능성이 높은 구간

  - 신뢰수준 : 신뢰구간에 모집단의 특성이 위치할 확률

  - 표본 : 모집단에서 추출한 일부로, 모집단의 속성들을 유추하는데 사용된다.

1) 확률표본추출방법 : 모집단에서 무작위로 표본을 추출하는 방법

2) 비확률표본추출방법 : 조사자의 편의나 판단에 의해 표본을 추출하는 방법

* 비확률표본추출방법에는 층화추출법 등 다양한 방법이 있습니다. 표본 추출 시에 편향된 표본을 고르는 것이 아닌지 항상 의심해봐야 합니다.

 

2. 변수의 종류 및 분석법 : 

 

* Variables : 데이터를 구성하는 변수

1) Numerical : 숫자형 데이터

  1.1) Continuous : 연속형

  1.2) Discrete : 불연속형

2) Categorical : 범주형 데이터

  2.1) Regular Categorical : Ordinal이 아닌 경우

  2.2) Ordinal : 범주들 사이에 서열/순서가 존재하는 경우

 

* 척도

1) 비연속형 변수

- 명목척도 : 상호배타적인 특성만을 가진 척도 ex) 남/여

- 서열척도 : 명목척도 중 항목들 사이에 서열이나 순위가 존재하는 척도 ex) 언론에서 발표하는 대학 순위

2) 연속형 변수

- 등간척도 : 서열척도들 중 항목들 간의 간격이 일정한 척도 ex) 섭씨온도 : 섭씨 0도는 열이 없는 상태가 아니기 때문에 섭씨온도는 등간척도이다.

- 비율척도 : 등간척도 중 아무것도 없는 상태를 0으로 정할 수 있는 척도 ex) 무게

 

* 데이터 표현 방법

 

1) 도수분포표 : 특정 항목 또는 범위에 속하는 빈도수를 나타낸 표

2) 막대그래프 : 비연속형 변수에 사용되는 그래프, 항목별 빈도수를 나타냄

3) 히스토그램 : 연속형 변수에 사용되는 그래프

4) 선그래프 : 히스토그램의 끝 부분을 선으로 연결한 그래프

* 가설과 신뢰수준/유의확률

1) 귀무가설(영가설) : 연구가설과 반대되는 가설, 실제 분석이 이루어지는 가설

2) 대립가설(연구가설) : 분석을 통해서 알아보고자 하는 내용으로 이루어진 가설

- 귀무가설은 하나의 통계값으로 나타낼 수 있어야 하며 귀무가설 과 대립가설은 동시에 참/거짓일 수 없다.

* 유의확률(p-value) : 실제로는 귀무가설이 참임에도 통계분석을 통해 귀무가설을 거짓으로 판단할 가능성 : 실제 현상을 반영하지 못할 가능성

유의확률 < 0.05 : 대립가설을 선택 
유의확률 > 0.05 : 귀무가설을 선택(신뢰수준 95%일 때)

* 신뢰수준 : 실제로 귀무가설이 참일 때, 통계분석을 통해 귀무가설을 채택할 가능성 : 실제 현상에서 발생하지 않는 대립가정을 기각할 가능성

* 분석 기법 : 

 

1) t분석(집단간의 평균 차이 분석) - https://blog.naver.com/PostView.nhn?blogId=vnf3751&logNo=220838283162

: 독립변수(원인)이 비연속형 변수이고, 종속변수(결과)가 연속형 변수일 때 두 집단간의 평균을 비교하는 검정

 

2) 분산분석(ANOVA)

: 독립변수가 비연속형 변수이고, 종속변수가 연속형 변수일 때 사용하는 분석방법으로, 독립변수의 집단이 3개 이상일 때 사용한다. f-분포를 사용하여 분석한다.

 

3) 회귀분석 : 독립변수와 종속변수가 모두 연속형 변수일 때 사용하는 분석방법.

  3.1) 선형회귀 : 주어진 두 수치형 변수 사이의 관계를 일차함수로 나타내는 방법

4) 로지스틱 회귀분석 : 독립변수가 연속형 변수이고, 종속변수가 비연속형 변수인 경우 분석방법

5) 다수준분석 : 독립변수와 종속변수의 수준이 다른 경우, 독립변수와 종속변수는 개인수준이지만 조절변수의 수준이 다른 경우의 분석(복잡한 사회현상에 대해 분석)

 

# 머신 러닝 및 딥러닝

머신 러닝이란 컴퓨터가 데이터를 학습하는 알고리즘과 기술의 총칭이며 지도학습, 비지도학습, 강화학습으로 분류된다.

 

1. 지도학습(Supervised Learning)

 : 입력 데이터(X)와 타겟값(Y)를 알고 있는 데이터를 학습하여, 이들의 관계를 모델링하는 방법

 

지도학습은 타겟변수(Y)의 형태에 따라 두 가지로 나뉠 수 있다.

1) 분류(Classification)

 : 타겟변수 Y가 불연속형 변수(Discrete Variable)인 경우, 입력값(X)이 주어질 때 해당 입력값이 해당되는 클래스(Y)를 예측한다.

 

ex) 스팸 메일 분류, 얼굴 인식


2) 회귀(Regression)
 : 타겟변수 Y가 연속형 변수(Continuous Variable)인 경우 입력값 x가 주어질 때 해당 입력값과 매칭되는 Y값을 예측한다.

ex) 주가 예측

 

2. 비지도학습 : 타겟값(Y)이 없는 입력 데이터만이 주어질 때 학습하는 방법(입력 데이터에 내재되어 있는 특성을 찾아내는 용도)

1) 군집화(Clustering) : 유사한 포인트들끼리 그룹을 만드는 방법
2) 잠재 변수 모델(Latent Variable Model) : 표현된 데이터 속에 내재되어 있는 요인을 찾는 것
ex) 주성분 분석, 특이값 분해, 비음수 행렬 분해, 잠재 디리슐레 할당....
3) 밀도 추정(Density Estimation)
 : 관측된 데이터를 이용하여 데이터 생성에 대한 확률밀도함수를 추정
4) 이상치 탐지
5) 인공신경망 기반 비지도학습(ex : GAN)

 

3. 강화학습

 : 자신이 한 행동에 대한 "보상"을 바탕으로 목적을 달성하는 학습

 

4. 딥러닝 : 인공신경망을 활용하여 컴퓨터를 학습시키는 기법

 

* Perceptron
 : 생물학적 뉴런을 모방하여 만든 인공신경망의 기본 단위

 

< 실제 뉴런과 Perceptron의 비교 모습 >

 위와 같이 a,b라는 input을 받아서 합친 뒤 activation function을 통과하여 최종 출력을 내보내는 것을 볼 수 있습니다.(이 결과는 다음 Perceptron(혹은 뉴런)으로 전달되거나, 최종 Output으로 출력됩니다.)

 

* DNN(Deep Neural Network) :  아래 그림과 같이, Neural Network는 Input Layer, Hidden Layer, Output Layer로 구성됩니다. Input Layer와 Output Layer는 하나지만, Hidden Layer는 여러개일 수 있고, Hidden Layer가 2개 이상일 때 Deep Neural Network이라고 합니다. Hidden Layer가 늘어날수록, 더 정교한 모델을 만들 수 있지만, 계산량의 증가와 Overfitting을 항상 주의해야 합니다.

 

* 각각의 Node들을 하나의 Perceptron이라고 생각하시면 됩니다.

* 용어 : 

1) Weight(가중치)

  위의 그림의 Hidden Layer의 각 Node(동그라미)들은 모두 가중치라는 값을 가지고 있습니다. 이 값들은 각 Node들의 결과값에 곱해진 후 다음 노드로 전달됩니다. Neural Network는 데이터를 사용하여 이 가중치들을 최적의 값으로 Update하는 것이 목표입니다.

 

2) Loss Function(Cost Function)
 : Input Layer, Hidden Layer를 거쳐 최종적으로 Output Layer에 도착한 결과값은, Loss Function이란 함수에 넣어져 실제 값과의 차이를 계산하게 됩니다. 이 결과값이 오차이고, 이 오차를 줄이기 위하여 Loss Function을 미분하여 Loss Function을 감소시키는 방향으로 가중치를 Update하는 것이 Gradient Descent 입니다.

 

3) back propagation : 역전파
  Neural Network는 주어진 데이터를 활용하여 가중치를 Update함으로써 최적의 모델을 만듭니다. Output Layer에서 구해진 오차를 활용하여 가중치들을 Update해야 하는데, Update하는 방법이 역전파입니다. 역전파는 아래의 그림과 같이 각 단계별로 관계식을 구한 후 미분한 뒤, 이 미분값들을 모두 곱하여 Loss Function을 가중치로 편미분한 값을 구할 수 있습니다.

 

4) overfitting(과적합) : 
  모델을 학습시킬 때 일반적으로 데이터셋을 train, validation, test라는 세가지 데이터셋으로 나눕니다. Training set으로 학습시킬 때의 Error를 training error, Test Set의 데이터를 입력했을 때의 오차를 test error라고 하는데, 이 두가지 변수는 항상 동일한 것은 아닙니다. (이상적으로는 Training Error와 Test Error가 동일해야 합니다.)
  Training Set을 활용하여 학습하는 동안 training error가 너무 낮아지면, 모델이 새로운 데이터(Test Set)에 대해 반응을 못하여 test error가 높아질 수 있습니다. 이런 경우를 overfitting이라고 합니다. 이와 반대로 아예 학습이 잘 되지 않아 Training Error가 높은 경우를 underfitting 이라고 합니다. 

 

* 딥러닝의 활용

1) CNN
convolutional network는 컴퓨터비전에 활용되는 Deep Neural Network입니다.

Input 데이터를 convolution layer - pooling layer - fully connected layer를 통과시켜 최종 분류합니다.

 

2) Recurrent Neural Network
* Sequence is important ! : 사람의 말을 해석할 때, 아래 글과 같이 앞뒤의 문맥을 이해하고 있는 것이 중요합니다. 아래 사진의 두 문장을 보았을 때 뒤의 문장은 동일하게 '이 영화 꼭 보세요!' 지만, 앞의 내용에 따라 완전히 다르게 해석될 수 있는 것을 알 수 있습니다. 이처럼 자연어 처리에서 언어를 해석할 때, 문맥이란 개념을 도입하기 위해 사용하는 Neural Network이 RNN입니다.


RNN은 아래 그림과 같이 Network들이 Sequence를 가지고 연결되어 있습니다. 이런 방식으로 앞의 해석 결과가 뒤의 해석 결과에도 영향을 미칠 수 있는 것입니다.

하지만 RNN은 아래와 같은 문제들을 가지고 있고, 이 문제들을 해결하기 위한 방법들도 어느정도 제시되어 있습니다.


문제 )
1. Sequence가 길어지면 성능이 떨어진다.
2. Sequence가 길어지면 학습이 잘 안된다.
3. 오래전 입력에 대해서는 기억을 잘 못한다.

-> 해결방법 LSTM, GRU
LSTM(Long Short Term Memory)
GRU(Gated Recurrent Unit)
( 자세한 내용은 https://blog.naver.com/koys007/221528966460 를 참고하세요.)


3) GAN(Generative Adversarial Network)


비지도학습의 한 종류로, 서로 대립하는 두 신경망(모델)을 경쟁시켜서 좋은 성능을 얻어내는 Deep Learning Algorithm 입니다. 아래 그림과 같이 하나의 생성 모델, 하나의 분류 모델이 있다고 가정해봅시다. 생성모델에서는 가짜 지폐 데이터를 생성하고, 분류모델에서는 이 데이터를 진짜/가짜로 분류합니다. 이 과정을 계속 반복하면서, 점점 더 정교하게 성능을 향상시키는 것입니다.

(자세한 내용은 https://m.post.naver.com/viewer/postView.nhn?volumeNo=16566740&memberNo=36733075&vType=VERTICAL를 참고하세요.)

 

 

최종 과제 :
 



library(dplyr)
library(ggplot2)
library(rpart)
library(rpart.plot)

##1 데이터 불러와서 insurance로 저장하기

insurance = read.csv('data/insurance.csv')



##2 summary( )함수로 데이터 요약하고
##  수치형 변수는 히스토그램, 범주형 변수는 표 만들기
## 히스토그램 = [age, bmi,  charges] 표 = [sex, children, smoker, region]

summary(insurance)
names(insurance)
head(insurance)


ggplot(insurance, aes(x = age)) + geom_histogram(bins = 47)
ggplot(insurance, aes(x = bmi)) + geom_histogram(bins = 47)
ggplot(insurance, aes(x = charges)) + geom_histogram(bins = 47)

table(insurance$sex)
table(insurance$children)
table(insurance$smoker)
table(insurance$region)

##3 bmi와 charges의 산점도 그리고 상관계수 계산하기


ggplot(insurance, aes(x = bmi, y = charges)) + geom_jitter()
cor.test(insurance$bmi , insurance$charges)

##4 region별 charges의 상자그림 그리고 그룹별 평균 계산하기

insurance%>% group_by(region) %>% summarise(mean = mean(charges))
ggplot(insurance, aes(x = region, y = charges)) + geom_boxplot()

##5 lm( )과 rpart( )를 활용하여 
##  관심변수 charges를 나머지 변수로 설명하는 모형 적합하기 

?lm

lm(insurance$charges ~ insurance$age)

ggplot(insurance, aes(x = age, y = charges)) + geom_jitter()

linear_model = lm(charges ~ age + bmi + sex + children + smoker + region , data = insurance)
summary(linear_model)
rpart_model = rpart(charges ~ age + bmi + sex + children + smoker + region , data = insurance)
summary(rpart_model)

rpart.plot(rpart_model, cex = 1)

# End of script


 

 

  총 113강을 10주동안 공부했으니 일주일에 약 11개의 강의씩을 들은 셈입니다. 수강한 강의들에 대해서 평가하자면, 전반적으로 입문자를 대상으로 하고 있습니다. 요즘 데이터 사이언스가 핫하다고 하는데 뭐하는 직무 또는 학문일까? 라는 질문을 가지신 분이 가볍게 들어보시기에 좋은 것 같습니다. 실제로 113강도 하나의 강의당 평균 10분정도 남짓이라 수강 시간도 매우 짧았습니다.

  좋은 점은 누구나 부담없이 들을 수 있는 수준의 강의라 좋았습니다. 단점은 강의가 모두 한명의 강사가 진행하는 것이 아니라서 강의내용이 일부분 겹치는 부분들이 있고, 전반적인 내용의 흐름이 아주 매끄럽진 않았습니다.

  하지만 이후의 패스트캠퍼스의 강의들을 추가로 들을 예정인 저로써는 시작하기에 아주 좋은 강의였던 것 같습니다. 이상 끝-!

 

반응형

+ Recent posts