작성자: admin 작성일시: 2016-09-30 11:03:48 조회수: 301 다운로드: 38
카테고리: 머신 러닝 태그목록:

데이터 분석의 소개

데이터 분석이란

데이터 분석이란 어떤 데이터가 주어졌을 때

  • 데이터 간의 관계를 파악하거나
  • 파악된 관계를 사용하여 원하는 데이터를 만들어 내는 과정

으로 볼 수 있다.

데이터 분석의 유형

  • 예측(Prediction)
  • 클러스터링(Clustering)
  • 모사(Approximation)

데이터 분석의 유형은 다양하다. 그 중 널리 사용되는 전형적인 방법으로는 예측(prediction), 클러스터링(clustering), 모사(approximation) 등이 있다.

예측은 어떤 특정한 유형의 입력 데이터가 주어지면 데이터 분석의 결과로 다른 유형의 데이터가 출력될 수 있는 경우이다. 예를 들어 다음과 같은 작업은 예측이라고 할 수 있다.

  • 부동산의 위치, 주거환경, 건축연도 등이 주어지면 해당 부동산의 가치를 추정한다.
  • 꽃잎의 길이와 너비 등 식물의 외형적 특징이 주어지면 해당하는 식물의 종을 알아낸다.
  • 얼굴 사진이 주어지면 해당하는 사람의 이름을 출력한다.
  • 현재 바둑돌의 위치들이 주어지면 다음 바둑돌의 위치를 지정한다.

데이터 분석에서 말하는 예측이라는 용어는 시간상으로 미래의 의미는 포함하지 않는다. 시계열 분석에서는 시간상으로 미래의 데이터를 예측하는 경우가 있는데 이 경우에는 forecasting 이라는 용어를 사용한다.

클러스터링은 동일한 유형의 데이터가 주어졌을 때 유사한 데이터끼리 몇개의 집합으로 묶는 작업을 말한다. 예를 들어 다음과 같은 작업은 클러스터링이다.

  • 지리적으로 근처에 있는 지점들을 찾아낸다.
  • 유사한 단어를 포함하고 있는 문서의 집합을 만든다.
  • 유사한 상품을 구해한 고객 리스트를 생성한다.

모사는 대량의 데이터를 대표하는 소량의 데이터를 생성하는 작업이다.

  • 이미지나 음악 데이터를 압축한다.
  • 주식 시장의 움직임을 대표하는 지수 정보를 생성한다.

입력 데이터와 출력 데이터

만약 예측을 하고자 한다면 데이터의 유형을 입력 데이터와 출력 데이터라는 두 가지 유형의 데이터로 분류할 수 있어야 한다.

  • 입력 $X$
    • 분석의 기반이 되는 데이터
    • 독립변수 independent variable
    • feature, covariates, regressor, explanatory, attributes, stimulus
  • 출력 $Y$
    • 추정하거나 예측하고자 하는 데이터
    • 종속변수 dependent variable
    • target, response, regressand, label, tag

예측 작업에서 생성하고자 하는 데이터 유형을 출력 데이터라고 하고 이 출력 데이터를 생성하기 위해 사용되는 기반 데이터를 입력 데이터라고 한다. 회귀 분석에서는 독립 변수와 종속 변수라는 용어를 사용하며 머신 러닝에서는 일반적으로 feature와 target이라는 용어를 사용한다.

입력 데이터와 출력 데이터의 개념을 사용하여 예측 작업을 다시 설명하면 다음과 같다.

  • $X$와 $Y$의 관계 $f$를 파악 한다.
$$Y=f(X)$$
  • 현실적으로는 정확한 $f$를 구할 수 없으므로 $f$와 가장 유사한, 재현 가능한 $\hat{f}$을 구한다.
$$Y \approx \hat{f}(X)$$
  • $\hat{f}$를 가지고 있다면 $X$가 주어졌을 때 $Y$의 예측(추정) $\hat{Y}=\hat{f}(X)$를 구할 수 있다.
  • 확률론적으로 $\hat{f}$는
$$ \hat{f}(X)=\arg\max_{Y} P(Y | X) $$

예측은 입력 데이터와 출력 데이터 사이의 관계를 분석하고 분석한 관계를 이용하여 출력 데이터가 아직 없거나 혹은 가지고 있는 출력 여러가지 이유로 부정확하다고 생각될 경우 보다 합리적인 출력값을 추정하는 것이다. 따라서 입력 데이터와 출력 데이터의 관계에 대한 분석이 완료된 이후에는 출력 데이터가 필요 없어도 일단 관계를 분석하기 위해서는 입력 데이터와 출력 데이터가 모두 존재해야 한다.

데이터의 유형

예측 작업에서 생성하고자 하는 데이터 유형을 출력 데이터라고 하고 이 출력 데이터를 생성하기 위해 사용되는 기반 데이터를 입력 데이터라고 한다.

예측은 입력 데이터와 출력 데이터 사이의 관계를 분석하고 분석한 관계를 이용하여 출력 데이터가 아직 없거나 혹은 가지고 있는 출력 여러가지 이유로 부정확하다고 생각될 경우 보다 합리적인 출력값을 추정하는 것이다. 따라서 입력 데이터와 출력 데이터의 관계에 대한 분석이 완료된 이후에는 출력 데이터가 필요 없어도 일단 관계를 분석하기 위해서는 입력 데이터와 출력 데이터가 모두 존재해야 한다.

입력 데이터와 출력 데이터의 개념을 사용하여 예측 작업을 다시 설명하면 다음과 같다.

통계적 분석이나 머신 러닝 등의 데이터 분석에 사용되는 데이터의 유형은 다음 숫자 혹은 카테고리 값 중 하나이어야 한다.

  • 숫자 (number)
    • 크기/순서 비교 가능
    • 무한 집합
  • 카테고리값 (category)
    • 크기/순서 비교 불가
    • 유한 집합
    • Class
      • Binary Class
      • Multi Class

숫자와 카테고리 값의 차이점은 두 개의 데이터가 있을 때 이들의 크기나 혹은 순서를 비교할 수 있는가 없는가의 차이이다. 예를 들어 10kg과 23kg이라는 두 개의 무게는 23이 "크다"라고 크기를 비교하는 것이 가능하다. 그러나 "홍길동"과 "이순신"이라는 두 개의 카테고리 값은 크기를 비교할 수 없다.

일반적으로 카테고리 값은 가질 수 있는 경우의 수가 제한되어 있다. 이러한 경우의 수를 클래스(class)라고 부르는데 동전을 던진 결과와 같이 "앞면(head)" 혹은 "뒷면(tail)"처럼 두 가지 경우만 가능하면 이진 클래스(binary class)라고 한다. 주사위를 던져서 나온 숫자와 같이 세 개 이상의 경우가 가능하면 다중 클래스(multi class)라고 한다.

카테고리값처럼 비 연속적이지만 숫자처럼 비교 가능한 경우도 있을 수 있다. 예를 들어 학점이 "A", "B", "C", "D"와 같이 표시되는 경우는 비 연속적이고 기호로 표시되지만 크기 혹은 순서를 비교할 수 있다. 이러한 경우는 서수형(ordinal) 자료라고 하며 분석의 목표에 따라 숫자로 표기하기도 하고 일반적인 카테고리값으로 표기하기도 한다.

데이터의 변환 및 전처리

숫자가 아닌 이미지나 텍스트 정보는 분석에 목표에 따라 숫자나 카테고리 값으로 변환해야 한다. 이 때 해당하는 원본 정보를 손실 없이 그대로 숫자나 카테고리 값으로 바꿀 수도 있지만 대부분의 경우에는 분석에 필요한 핵심적인 정보만을 뽑아낸다. 이러한 과정은 데이터의 전처리(preprocessing)에 해당한다.

이미지 데이터

In [1]:
filename = "~/data/train-images-idx3-ubyte"
f <- file(filename, "rb")
dummy <- readBin(f, "integer", n=1, size=4, endian="big")
n <- readBin(f, "integer", n=1, size=4, endian="big")
nrow <- readBin(f, "integer", n=1, size=4, endian="big")
ncol <- readBin(f, "integer", n=1, size=4, endian="big")
x <- readBin(f, "integer", n=n * nrow * ncol, size=1, signed=F)
close(f)
m <- matrix(x, ncol=nrow * ncol, byrow=T)
m2 <- matrix(m[2,], nrow=28)[, 28:1]
image(m2, col=gray((32:0)/32))
In [2]:
m2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 28 85 85 86 85 0 0 0 0 0 00 0 0 0
0 0 0 0 25199252252253252 0 0 0 0 0 00 0 0 0
0 0 0 0 128252252249225145 0 0 0 0 0 00 0 0 0
0 0 0 0 252252252146 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 253253229 48 0 0 51 0 0 0 0 00 0 0 0
0 0 0 0 252252215 29 0 0238163 10 0 0 00 0 0 0
0 0 0 0 141252252 85 0 0253252 60 0 0 00 0 0 0
0 0 0 0 37233252178 0 0253252224 54 0 00 0 0 0
0 0 0 0 0145252225 0 0190252252227 48 00 0 0 0
0 0 0 0 0 0196253114 0114253253253238 510 0 0 0
0 0 0 0 0 0130223238 482532522522522521590 0 0 0
0 0 0 0 0 0 01672531652282522022392522530 0 0 0
0 0 0 0 0 0 0 56162252 47 96 842332521590 0 0 0
0 0 0 0 0 0 0 0 0173 79189252252237 500 0 0 0
0 0 0 0 0 0 0 0 0 0255253253 57 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0168167122 6 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0

텍스트 데이터

In [3]:
library('tm')
library('SnowballC')
folderdir="/home/dockeruser/data/20news-18828/sci.electronics"
sci.electr.train <- Corpus(DirSource(folderdir, encoding="UTF-8"), readerControl=list(reader=readPlain,language="en"))
sci.electr.train[[1]]$content
Loading required package: NLP
  1. 'From: et@teal.csn.org (Eric H. Taylor)'
  2. 'Subject: Re: HELP_WITH_TRACKING_DEVICE'
  3. ''
  4. 'In article <00969FBA.E640FF10@AESOP.RUTGERS.EDU> mcdonald@AESOP.RUTGERS.EDU writes:'
  5. '>[...]'
  6. '>There are a variety of water-proof housings I could use but the real meat'
  7. '>of the problem is the electronics...hence this posting. What kind of'
  8. '>transmission would be reliable underwater, in murky or even night-time'
  9. '>conditions? I\'m not sure if sound is feasible given the distortion under-'
  10. '>water...obviously direction would have to be accurate but range could be'
  11. '>relatively short (I imagine 2 or 3 hundred yards would be more than enough)'
  12. '>'
  13. '>Jim McDonald'
  14. ''
  15. 'Refer to patents by JAMES HARRIS ROGERS:'
  16. '958,829; 1,220,005; 1,322,622; 1,349,103; 1,315,862; 1,349,104;'
  17. '1,303,729; 1,303,730; 1,316,188'
  18. ''
  19. 'He details methods of underground and underwater wireless communications.'
  20. 'For a review, refer to _Electrical_Experimenter_, March 1919 and June 1919.'
  21. ''
  22. 'Rogers\' methods were used extensively during the World War, and was'
  23. 'unclassified after the war. Supposedly, the government rethought this'
  24. 'soon after, and Rogers was convieniently forgotten.'
  25. ''
  26. 'The bottom line is that all antennas that are grounded send HALF of'
  27. 'their signal THRU the ground. The half that travels thru space is'
  28. 'quickly dissapated (by the square of the distance), but that which'
  29. 'travels thru the ground does not disapate at all. Furthermore,'
  30. 'the published data showed that when noise drowned out regular'
  31. 'reception, the underground antennas would recieve virtually noise-free.'
  32. ''
  33. 'IF you find this hard to believe, then refer to the work of the'
  34. 'man who INVENTED wireless: Tesla. Tesla confirmed that Rogers\' methods'
  35. 'were correct, while Hertzian wave theory was completely "abberant".'
  36. ''
  37. '----'
  38. ' ET "Tesla was 100 years ahead of his time. Perhaps now his time comes."'
  39. '----'
In [4]:
dtm <- DocumentTermMatrix(sci.electr.train, control=list(weighting=function(x) weightTfIdf(x, normalize=FALSE)))
inspect(dtm[1:10, 1:10])
<<DocumentTermMatrix (documents: 10, terms: 10)>>
Non-/sparse entries: 1/99
Sparsity           : 99%
Maximal term length: 79
Weighting          : term frequency - inverse document frequency (tf-idf)

       Terms
Docs    ^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^
  52434     0      0        0               0                  0
  52446     0      0        0               0                  0
  52464     0      0        0               0                  0
  52717     0      0        0               0                  0
  52718     0      0        0               0                  0
  52719     0      0        0               0                  0
  52721     0      0        0               0                  0
  52722     0      0        0               0                  0
  52723     0      0        0               0                  0
  52724     0      0        0               0                  0
       Terms
Docs    ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
  52434                   0                    0
  52446                   0                    0
  52464                   0                    0
  52717                   0                    0
  52718                   0                    0
  52719                   0                    0
  52721                   0                    0
  52722                   0                    0
  52723                   0                    0
  52724                   0                    0
       Terms
Docs    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  52434                                                                        0
  52446                                                                        0
  52464                                                                        0
  52717                                                                        0
  52718                                                                        0
  52719                                                                        0
  52721                                                                        0
  52722                                                                        0
  52723                                                                        0
  52724                                                                        0
       Terms
Docs    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  52434                                                                              0
  52446                                                                              0
  52464                                                                              0
  52717                                                                              0
  52718                                                                              0
  52719                                                                              0
  52721                                                                              0
  52722                                                                              0
  52723                                                                              0
  52724                                                                              0
       Terms
Docs    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  52434                                                                         0.00000
  52446                                                                        19.87622
  52464                                                                         0.00000
  52717                                                                         0.00000
  52718                                                                         0.00000
  52719                                                                         0.00000
  52721                                                                         0.00000
  52722                                                                         0.00000
  52723                                                                         0.00000
  52724                                                                         0.00000
In [5]:
image(as.matrix(dtm[1:100, 1:100]), col=gray((32:0)/32))

예측도 출력 데이터가 숫자인가 카테고리 값인가에 따라 회귀 분석(regression analysis)과 분류(classification)로 구분된다.

  • 회귀분석(regression)
    • 얻고자 하는 답 $Y$가 숫자
  • 분류 (classification)
    • 얻고자 하는 답 $Y$가 카테고리 값
X=Real X=Category
Y=Real Regression ANOVA
Y=Category Classification Classification

회귀 분석

In [6]:
library(MASS)
head(Boston)
crimzninduschasnoxrmagedisradtaxptratioblacklstatmedv
0.0063218 2.31 0 0.538 6.575 65.2 4.0900 1 296 15.3 396.90 4.98 24.0
0.02731 0 7.07 0 0.469 6.421 78.9 4.9671 2 242 17.8 396.90 9.14 21.6
0.02729 0 7.07 0 0.469 7.185 61.1 4.9671 2 242 17.8 392.83 4.03 34.7
0.03237 0 2.18 0 0.458 6.998 45.8 6.0622 3 222 18.7 394.63 2.94 33.4
0.06905 0 2.18 0 0.458 7.147 54.2 6.0622 3 222 18.7 396.90 5.33 36.2
0.02985 0 2.18 0 0.458 6.430 58.7 6.0622 3 222 18.7 394.12 5.21 28.7

Housing Values in Suburbs of Boston

Description

The Boston data frame has 506 rows and 14 columns.

Usage

Boston

Format

This data frame contains the following columns:

crim

per capita crime rate by town.

zn

proportion of residential land zoned for lots over 25,000 sq.ft.

indus

proportion of non-retail business acres per town.

chas

Charles River dummy variable (= 1 if tract bounds river; 0 otherwise).

nox

nitrogen oxides concentration (parts per 10 million).

rm

average number of rooms per dwelling.

age

proportion of owner-occupied units built prior to 1940.

dis

weighted mean of distances to five Boston employment centres.

rad

index of accessibility to radial highways.

tax

full-value property-tax rate per \$10,000.

ptratio

pupil-teacher ratio by town.

black

1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town.

lstat

lower status of the population (percent).

medv

median value of owner-occupied homes in \$1000s.

Source

Harrison, D. and Rubinfeld, D.L. (1978) Hedonic prices and the demand for clean air. J. Environ. Economics and Management 5, 81–102.

Belsley D.A., Kuh, E. and Welsch, R.E. (1980) Regression Diagnostics. Identifying Influential Data and Sources of Collinearity. New York: Wiley.

In [7]:
pairs(Boston)
In [8]:
m <- lm(formula = log(medv) ~ ., data = Boston)
summary(m)
Call:
lm(formula = log(medv) ~ ., data = Boston)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.73361 -0.09747 -0.01657  0.09629  0.86435 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  4.1020423  0.2042726  20.081  < 2e-16 ***
crim        -0.0102715  0.0013155  -7.808 3.52e-14 ***
zn           0.0011725  0.0005495   2.134 0.033349 *  
indus        0.0024668  0.0024614   1.002 0.316755    
chas         0.1008876  0.0344859   2.925 0.003598 ** 
nox         -0.7783993  0.1528902  -5.091 5.07e-07 ***
rm           0.0908331  0.0167280   5.430 8.87e-08 ***
age          0.0002106  0.0005287   0.398 0.690567    
dis         -0.0490873  0.0079834  -6.149 1.62e-09 ***
rad          0.0142673  0.0026556   5.373 1.20e-07 ***
tax         -0.0006258  0.0001505  -4.157 3.80e-05 ***
ptratio     -0.0382715  0.0052365  -7.309 1.10e-12 ***
black        0.0004136  0.0001075   3.847 0.000135 ***
lstat       -0.0290355  0.0020299 -14.304  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1899 on 492 degrees of freedom
Multiple R-squared:  0.7896,	Adjusted R-squared:  0.7841 
F-statistic: 142.1 on 13 and 492 DF,  p-value: < 2.2e-16
In [9]:
pr <- predict(m)
plot(pr, Boston$medv, xlab="predition price", ylab="real price", main="Boston House Price")

분류

  • Iris
setosa versicolor virginica
In [10]:
data(iris)
head(iris)
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa
In [11]:
library(caret)
featurePlot(x=iris[,1:4], y=iris[,5], plot="pairs", auto.key=list(columns=3))
Loading required package: lattice
Loading required package: ggplot2

Attaching package: ‘ggplot2’

The following object is masked from ‘package:NLP’:

    annotate

In [12]:
library(e1071)
m <- svm(Species~., data=iris)
plot(m, iris, Petal.Width ~ Petal.Length,
     slice=list(Sepal.Width=3, Sepal.Length=4))

클러스터링(Clustering)

In [13]:
library(cluster) 
irisCluster <- kmeans(iris[, 3:4], 3)
clusplot(iris[, 3:4], irisCluster$cluster, color=TRUE, shade=TRUE, labels=2, lines=0)

데이터 분석에 대한 오해와 진실

  • 분석의 최대 성능은 방법론이 아닌 데이터 자체에 의존한다.
  • 사람이 이론적으로 분석할 수 없는 데이터는 어떤 머신러닝 알고리즘으로도 분석할 수 없다.

머신 러닝

  • 머신러닝이란 자동화된 데이터 분석
  • 머신러닝은 분석의 경제성과 효율성을 증가
  • 사람이 시간적, 경제적으로 할 수 없는 규모의 분석을 할 수 있다.

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!