4월, 2015의 게시물 표시

Coursera - Machine Learning week.1

머신 러닝이란 무엇인가? Machine Learning은 컴퓨터에게 사람이 직접 명시적으로 Logic을 지시하지 않아도 데이터를 통해 컴퓨터가 ‘학습’을 하고 그것을 사용해 컴퓨터가 자동으로 문제를 해결하도록하는 것을 의미한다. 예를 들어, 체스 게임을 하는데 E = 체스 게임을 한 많은 경험 T = 체스 게임하는 체커의 일 P = 다음 게임에서 프로그램이 이길 확률 지도 학습 지도학습은 데이터가 주어지고 이미 우리는 결과가 무엇이 나올지 아는 상황에서 이루어진다. 지도학습에서 회귀 분석과 분류로 나누어지는데 회귀 분석에서 우리는 연속적인 결과에 대해 추측한다. 분류에서 우리는 별개의 결과데 대해 추측한다. 예를 들어, 부동산 시장에 집의 크기에 대한 데이터가 주어졌을 때, 가격을 예측하는것은 회귀 분석이다. 여기서 결과값을 요구한 가격보다 높거나 낮은 가격으로 집을 판다라고 두면 분류가 되는 것이다.  비지도 학습 결과값이 어떻게 나올지에 대해 아무 언급이 없이 문제에 접근하는 상황에서 이루어진다. 어떤 변수에 영향을 줄 지 모르는 데이터로부터 구조를 얻는다. 데이터의 변수끼리 관계를 기반으로 한 데이터를 클러스터링함으로서 구조를 얻는다. 비지도 학습은 예측 결과에 아무런 피드백 또한 없다.  

타이타닉 데이터 분석 3.Feature Engineering (Final)

이미지
#테스트의 생존자 열에 NA값을 넣고 rbind를 이용해 두 시트를 합친다. test$Survived combi #R에선 문자열은 팩터화시키는데 이를 케릭터화시킨다. text character는 문자열을 분리할 수 있다. combi$Name combi$Name[1] [1] "Braund, Mr. Owen Harris" #,와. 를 기준으로 문자열을 분리시킨다. strsplit(combi$Name[1], split='[,.]') [[1]] [1] "Braund"       " Mr"          " Owen Harris" #Mr라는 단어만 분리시킨다. strsplit(combi$Name[1], split='[,.]')[[1]][2] [1] " Mr" #combi의 title열에 함수의 조건에 맞는 값들을 넣는다. 밑의 명령어의 결과값은 Mr,Miss,Mrs 등으로 표현 될 것이다. combi$Title #sapply란 무엇인가? lapply: 결과를 리스트 형태로 반환 sapply: 벡터, 또는 행렬의 형태로 반환 (s: simplify) > patients.sub   weight height 1   65.4    170 2   55.0    155 3  380.0     NA 4   72.2    173 5   51.0    161 6     NA    166 > lapply ( patients.sub, mean, na.rm = TRUE ) $weight [1] 124.72 $height [1] 165 > sapply ( patients.sub, mean, na.rm = TR...

타이타닉 데이터 분석 2.Decision Trees

이미지
#rpart 라이브러리를 불러온다 library(rpart) *rpart란 무엇인가? iris 데이터에는 Species라는 변수가 있다.  이 변수에는 세 가지 종류의 붓꽃이 있다.  이것을 분류해 보는 작업을 다음과 같이 실행해 본다. result = rpart(Species ~., data=iris) result ## 결과물 n= 150 node), split, n, loss, yval, (yprob) * denotes terminal node 1) root 150 100 setosa (0.33333333 0.33333333 0.33333333) 2) Petal.Length< 2.45 50 0 setosa (1.00000000 0.00000000 0.00000000) * 3) Petal.Length>=2.45 100 50 versicolor (0.00000000 0.50000000 0.50000000) 6) Petal.Width< 1.75 54 5 versicolor (0.00000000 0.90740741 0.09259259) * 7) Petal.Width>=1.75 46 1 virginica (0.00000000 0.02173913 0.97826087) * ## 결과물을 해석하면 다음과 같다. 150개의 데이터에는 세 가지 종류의 붓꽃이 1/3씩 존재한다. (1) 첫번째 기준 : Petal.Length가 2.45보다 작은가? 이 기준에 따라 150개의 데이터는 50개(왼쪽)와 100개(오른쪽)의 데이터로 나뉜다. 왼쪽의 데이터는 조건을 만족하는 경우, 오른쪽은 조건을 만족하지 않는 경우다. 첫번째 기준에 따라 왼쪽으로 분류된 50개의 데이터는 모두 setosa 이었다. 매우 훌륭한 경우다. 하지만 오른쪽에 100개의 데이터에는 virginica와 versicolor의 두 가지 종류의 붓꽃이 섞여있다. (2) 두 번째 기준 : Petal.W...

Head First Data Analyst #6 베이지안 통계 (Final)

도마뱀 독감 진단 검사 정확도 분석 도마뱀 독감에 걸렸을 경우 이 검사에서 양성 판정이 나올 확률은 90%입니다 도마뱀 독감에 걸리지 않았을 경우 이 검사에서 양성 판정이 나올 확률은 9%입니다. 여기서 도마뱀 독감에 걸린 확률을 구하려면, P(L|+)을 구해야한다. P(+|-L) : 도마뱀 독감에 걸리지 않았을 경우 ,검사에서 양성판정이 나올 확률 P(+|L) : 도마뱀 독감에 걸렸을 경우 ,검사에서 양성판정이 나올 확률 P(+|L) : 도마뱀 독감에 걸렸을 경우 ,검사에서 음성판정이 나올 확률 P(+|-L) : 도마뱀 독감에 걸리지 않았을 경우 ,검사에서 음성판정이 나올 확률                                             1000명                                                                 10명(걸린 사람수)    990명(걸리지 않은 사람 수)                              9명(+)    1명(-)       89명(+)    901명(-) 베이지안의 통계에 따라 양성 판정을 받았고, 도마...

타이타닉 데이터 분석 1.Gender Class

이미지
#Gender-class이므로 우선 성별을 요약해서 본다 summary(train$Sex) female    male   314      577 #성별과 생존자에 대한 비율을 알아내기 위한 명령어를 사용한다 pro.table(table(train$Sex,train$Survived))           0                     1 female 0.090909009   0.26150393 male   0.52525253    0.12233446 #생존자 중 남,녀의 합이 같게 하기 위해 비율을 다시 설정한다 pro.table(table(train$Sex,train$Survived),1)                 0                      1 female   0.2579618            0.7420382 male     0.8110919            0.1889081 #test 변수의 Survived에 0을 대입 test$Survived #Survived열에 Sex값이 female인 값만 1을 대입 test$Survived[test$Sex == 'female' ] 이 분석은 비율 상으로 남자인 생존자가 0.18로 가장 작기 때문에  여자는 살고 남자는 죽었다는 결론을 내린 Gender-Class이다. ...

캐글 자전거 수요 예측 분석

#작업하고자하는 디렉토리 설정 setwd("/users/Brandon/Dropbox/Kaggle/Bike Sharing/") #작업하고자하는 데이터 불러와서 변수에 저장 train test #str(오브젝트 명) 오브젝트 요약 출력, 데이터 개수, 항목 개수,항목 명,형식, 예시 등 str(train) 'data.frame': 10886 obs. of 12 variables: $ datetime : Factor w/ 10886 levels "2011-01-01 00:00:00",..: 1 2 3 4 5 6 7 8 9 10 ... $ season : int 1 1 1 1 1 1 1 1 1 1 ... $ holiday : int 0 0 0 0 0 0 0 0 0 0 ... $ workingday: int 0 0 0 0 0 0 0 0 0 0 ... $ weather : int 1 1 1 1 1 2 1 1 1 1 ... $ temp : num 9.84 9.02 9.02 9.84 9.84 ... $ atemp : num 14.4 13.6 13.6 14.4 14.4 ... $ humidity : int 81 80 80 75 75 75 80 86 75 76 ... $ windspeed : num 0 0 0 0 0 ... $ casual : int 3 8 5 3 0 0 2 1 1 8 ... $ registered: int 13 32 27 10 1 1 0 2 7 6 ... $ count : int 16 40 32 13 1 1 2 3 8 14 ... #factor은 무엇인가? gender summary(gender) Min 1st Qu. Median Mean 3rd Qu. Max. 1.0 1.0 2.0 1.6 2.0 2.0 gender gender [1] ...

Head First Data Analyst #4 데이터 시각화

데이터의 품질과 그 해석에 관심이 있기 때문에 해석에 관한 여러분의 판단을 방해하는  화려한 디자인은 불필요하다. 데이터가 너무 많다고 당황할 필요없다. 쓸모없는 데이터는 모두 무시하고 필요한 데이터만 뽑아서 분석하자. 데이터 시각화란 적절한 비교를 말한다. 뛰어난 시각화는 데이터를 나타내고 적절한 비교를 하며 여러 변수를 나타내야한다. 산포도를 이용해 원인을 찾을 수 있다. 산포도는 탐색적 데이터 부석을 위한 도구이다. 또한 인과관계를 나타낼때 쓰인다. 보통 x축은 독립변수를 나타내고, y축은 종속변수를 나타낸다.

Head First Data Analyst #5 가설 검정

각 변수의 상관 관계를 잘 알아야한다. 한 변수의 값이 오를 때, 다른 변수들에게 미치는 영향을 잘 분석해야한다. 변수는 음의 상관관계도 있고 양의 상관관계 또한 존재한다. 현실세계에서는 인과관계는 선형이 아니라 네트워크 형이다. 예를 들어, 핸드폰 회사가 신종 핸드폰을 출시하고 싶은데 출시일을 언제 할지 고민한다면, 여러 가설들을 세워본다. 가설을 세우고 검정 할 때, 만족화는 권장하지 않는다. 왜냐하면 사람들이 다른 대안을 충분히 분석하지 않고 가설을 선택할 경우 비록 그에 반하는 증거들이 수집되더라도 그 가설을 고수하게 된다. 그래서 가설 검정할 때에는 반증을 이용한다. 즉, 안되는 것을 지우고 마지막에 살아남는 가설을 선택하여 실험하는 것이다. 증거와 데이터가 가설의 상대적인 설득력을 평가하는 데 도움이 된다면 그것은 진단 가능성이 있다고 말한다.

Head First Data Analyst #2 이론을 검증하라

항상 비교법을 사용하라 관찰 연구는 교락 인자들로 가득 차 있다. 항상 교락인자가 결과에 어떤 영향을 미치는지 생각하고 교락인자의 영향을 최소화 해야한다. 하지만 교락인자의 경우 숨겨져 있기 때문에 찾아내서 결과를 정확한 방향으로 이끌어야한다. 가장 효과적인 전략을 찾아내기 위해서는 실험이 필요하다. 대조군은 기준을 제공해준다. 예를 들어, 커피 전문점이 새로운 실험을 시행할 때, 대조군을 두어 실험군의 매출이나 실험 결과를 대조군과 비교해야 실험의 성공 여부를 알 수 있다. 교락인자란, 그룹 간 비교하려는 요인 이외의 차이를 말한다. 무작위 추출은 비슷한 그룹을 선택하게 한다. 무작위로 구성원을 선택하는 것은 교락인자를 피하는 좋은 방법이다.

Head First Data Analyst #1 잘게 쪼개라

정의 -> 분해 -> 평가 -> 결정 1. 정의 문제를 정의한다. 고객은 문제를 정의하는 데 도움이 된다. 고객에 대해 잘 알아야한다.  고객의 데이터에 대한 신뢰도, 성격, 사업 스타일 등 고객에 대해 많이 알 수록  만족도를 높일 수 있다. 2. 분해 문제를 분할. 만약 고객이 매출을 늘리기 원한다면, 이 요구에서 여러 가지 분해 할 수 있다. 광고는 어떻게 되어 있는가? , 어떤 프로모션이 가장 효과적인가 등 위 요구에서  많은 걸 분해해서 뽑아 내야한다. 데이터를 분할. 원시 데이터를 받았다면 요약하여 변수간의 상관관계, 변수값의 상승,하강 등  데이터에 대해 많은 걸 뽑아내야한다. 아는 것도 관점을 달리해서 본다. 가장 중요한 요소를 추출하기 위한 최적의 방법은 강한 대조를 찾아내는 것. 3. 평가 문제에 대한 관찰과 데이터에 대한 관찰로 나누어 생각. 문제에 대한 관찰로는 제품에 대한 고객층, 경쟁사 견제, 마케팅 등 데이터에 대한 관찰로는 데이터 자체를 요약하고 비교/대조. 분석은 자신을 포함시키는 것에서 시작. -> 자신의 가정을 명시적으로 밝히고, 결론에 대해 확신을 가진다. 4. 결정 권고안을 제출. 분석 결과는 간결하게 정리되어 제출되어야 한다.  좋은 프레젠테이션은 필수적 요소. 권고안의 분석이 잘못되어 원하는 결과를 못 얻을 시, 다시 정의 단계로 돌아가 다른 시각으로 데이터를 분석해야한다. 예를 들어, 데이터 중 유통업체에 대한 것이 있다면, 유통업체를 통해 제품이 어떤 고객층에게 팔리는지 새로운 고객층은 없는지에 대해 조사.

보안 -> 데이터 분석