레이블이 HEAD-FIRST-DATA-ANALYSIS인 게시물을 표시합니다. 모든 게시물 표시
레이블이 HEAD-FIRST-DATA-ANALYSIS인 게시물을 표시합니다. 모든 게시물 표시

2019년 8월 8일 목요일

Chp0. 환경설정

본론
스프레드시트에서 데이터 분석도구 등을 설치하는방법


1.엑셀의 좌측상단 버튼을 누르고 Excel 옵션을 누른다



2.추가기능 tab을 누르고 이동 버튼 클릭



3.분석도구와 해찾기 추가기능에 선택후 확인

Chp13. 데이터 전처리

목적
"데이터에 순서를 부여하기"
R에서 제공하는 도구나 수동으로 데이터를 조작하는방법

본론
"백업"
-->데이터 전처리 전에 원본 데이터의 백업은 필수로 진행한뒤에 해야한다
"정규표현식 - Regular Expression"
데이터 분석가는 실제 데이터 분석보다 데이터 전처리에 많은 시간이 소요된다 R이나 스프레드 시틀ㄹ 이용해 데이터 전처리를 해보자
Chp-13.zip의 hfda_ch13_raw_data_kr.csv 로 작업을 진행하며 이때 hfda_ch13_raw_data_kr_work.csv를 만든다





데이터 탭->"텍스트 나누기"



엑셀 구분기호로 분리됨" 표시



기타 에 #으로 기호 지정



결과로 생성됨 , h1 에 "새이름" 을 적고 h2에 =SUBSTITUTE(B2,"^"," ")를 적고 열의 끝까지 적용한다
-->Substitute(참조셀,바꾸는 text,대체 text)




하지만 성부분의 (ID~) 부분은 EXCEL 로 조정하기에 매우 힘들기때문에 R에서 조작한다

R에서 getwd() 명령어로 r에서 사용하는 디렉토리를 찾아서 해당 디렉토리에 csv 파일을 넣는다


데이터를 디렉토리에 넣고 head 명령어로 불러서 내용을 확인한다
hfhh <- read.csv("hfda_ch13_raw_data_kr_work2.csv",head=TRUE)
head(hfhh)



데이터 호출이 완료되면 다음 정규표현식을 사용한다
NewLastName <- sub("\\(.*\\)","",hfhh$성)
--> \\( = 이스케이프 문자로 (가 "문자 자체임을 표시
--> .* = .은 임의의 문자 *은 임의의 개수만큼 있을수있다
--> \\) = 이스케이프 문자표시

결과확인
head(NewLastName)




> hfhh$성 <- NULL
> hfhh["성"] <- NewLastName
-->새로운 정보 저장

> write.csv(hfhh, file="hfhh.csv")
-->hfhh.csv 파일로 새로 저장




데이터 정렬
hfhhSorted <- hfhh[order(hfhh$PersonID), ]
-->hfhhSorted 객체를 생성해서 그 뒤에 hfhh 의 PersonID 행에 정렬을 건다

head(hfhhSorted, n=50)
-->정렬된 내용의 앞부분 50개만 표시



데이터 중복제거
엑셀에서는 중복제거 버튼으로 한다



> hfhhNamesOnly <-hfhhSorted
-->새로운 object 생성

> hfhhNamesOnly$CallID <- NULL
> hfhhNamesOnly$시간 <-NULL
-->시간,callid column삭제

> hfhhNamesOnly <- unique(hfhhNamesOnly)
-->중복제거

> head(hfhhNamesOnly, n=50)
상황 확인



> write.csv (hfhhNamesOnly, file="hfhhNamesOnly.csv")
-->새로운 이름으로 저장

Chp12. 관계형 데이터베이스

목적
"RDBMS - Relational Database Management System"
관계를 만들자 - 스프레드시트는 많은 데이터를 가지기 힘들기 때문에 RDBMS에 저장해서 꺼내자

본론
RDBMS를 사용하기전 스프레드시트에 DATA를 모아서 (수동으로 복사 붙혀넣어서) R로 그래프를 만들어보는 Chapter

Chp11. 에러

목적
"세상은 복잡하다 - World is complex"
예측이 틀려도 실망할 일이 아니다 하지만 "오차범위"를 알면 예상역시 가능하다

본론
"외삽"
chp10의 회귀선을 이용해 그래프에서 평균치를 잡았을때 데이터 범위 밖을 예상하는작업
--->외삽을 이용할때 범위를 벗어나는 일은 예상할수 없다는 가정을 추가해야 한다

붉은색이 회귀선

"잔차 - residual"
-->회귀선을 기준으로 위와 아래로 퍼진 수치

"RMS - Root Mean Square"
회귀선으로부터의 분포로 R에서는 mylm 명령으로 사용


검정 막대가 RMS 수치
그래프의 RMS 가 극명히 갈린다면 데이터를 나워서 회귀선을 여러개 만들어서 사용하면 효과가 좋다

Q:정확성을 올리기 위해 모든 점에 대한 회귀선을 짠다면?
A:확율은 올라가나 (각점에대한 회귀선을 생성하니 오차확율은 0%가 된다) 예측 능력은 떨어진다 따라서 어느수준 (RMS가 극명히 갈리는지점)을 찾아서 회귀선을 새로 생성하는게 중요하다


Chp10. 회귀

목적
"예측 - Prediction"
회귀란 제대로만 사용하면 특정값을 예측하는 강력한 도구가 될수 있다
이때 대조시험과 같이 사용하면 성능이 더 향상된다

본론
"알고리즘"
-->예측을 하기위환 Process

예측을 위해 해야, 알아야할것들
예측해야할것
사람들의 행동
시장의 움직임
중요한사건
실험결과
데이터에 포함되지 않은것
항상 해야하는 질문
예측하는데 필요한 충분한 data가 있는가
예측의 정확도는 어느정도 있는가
"정 성/량 적 여부"
고객의 예측 역시 사용하고있는가
내예측의 한계는 어디까지인가

-->"산포도"를 뽑기위한 정보

산포도 원칙
-->변수간의 인과관계를 알기위해사용
-->2개의 변수를 비교
-->산포도의 한점은 하나의 관측점 (1개의 raw = 한점)
**산포도는 자주 사용할수록 좋다**

산포도의 점을 평균을 내서 선으로 이으면 = "회귀선"

"회귀"
프란시스 갈튼(francis galton 1822 ~ 1922)이 부모의 키에서 아들의 키를 예측하는 방안을 연구했는데
키가큰 부모 --> 키가 작은 아들 , 키가 작은 부모 -->키가 큰 아들 의 경향을 보여서 이를 "평범으로의 회귀"
라고 불럿다

Q:회귀선은 직선이여야 하나?
A:적절한 값이라면 직선일필요는 없다 , 비선형회귀는 직선이 아님

하지만 회귀선은 직선이 좋음
강한 상관관계가 있음을 의미하고 강도를 "상관계수"로 표시한다 (r 로표기하고 -1 ~ 1까지의 값이며 0이면 관계가 없음을 의미

***회귀선을 이용하는방법***
회귀선은 직선 = 직선은 1차방정식으로 y=a+bx 로 (y=원하는 결과 a=y축절편 b=기울기 x=넣을 x값)
여기서 기울기 = y변량 / x축의 변량

2019년 8월 7일 수요일

Chp9. 히스토그램

목적
"숫자의 모양 - Shape of number"
데이터를 그림으로 나타내는 방법으로 분포,변동성,중심집중 경량등을 측정 가능하다

본론
ex)임금인상 히스토그램을 만든다
Chp-09.zip의 hfda_ch09_employees_kr.csv
(직원의 성별,임금협상 여부,등이 기록되있음, - 데이가 많아서 "분해" 해야 한다)

1.Excel)
엑셀에서 "데이터"탭 -> "데이터분석" 에서 "입력범위"에 ->인상율의 처음부터 끝까지 표시 (B2:B3001) ->차트출력에 체크 ->확인





*히스토그램의 X축을 보기쉬운 정수로 표현하면 좋음*

2.R
https://www.r-project.org/ R 다운로드 , 설치


>source("http://dw.hanbit.co.kr/exam/2011/hfda.R")
> hist(employees$인상률,breaks=50)


R에서 제공하는 히스토그램 명령어

> sd(employees$인상률)
[1] 2.432138
>>표준편차를 구하는 방법

> summary(employees$인상률)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
-1.800   4.600   5.500   6.028   6.700  25.900
>>column 데이터 요약

**히스토그램은 분석방법중 한가지이며 해석 전에 하는 방법이 아님**
**히스토그램이 종형 곡선의 형태일때 정규분포를(가우스 분포)를 의미 한다

Chp8. 휴리스틱 분석

목적
"인간처럼 분석하라 - Analyis Like human"
현실에는 다양한 데이터가 있고 얻을수 없는것도 많이있다 혹은 데이터가 있어도 "최적화"는 쉬운게 아니다 그런데 "사람"은 여기서 "경험법칙" -직감 육감- 등을 이용하는데 마찬가지로 컴퓨터로 가져와보자

본론
"휴리스틱 분석이 있는 이유"
-->사람은 어려운 질문을 하면 쉬운질문을 만들어서(단순화해서) 질문에 대한 답으로써 사용한다
ex)xxx성당에서 평일 미사에참석하는 사람들의 수는 얼마나 될까?
라는 질문에 "당신은 평일미사에 참여하나요 yes/no "라는 질문으로 xxx성당 평일미사 참여는 x% 이다 로 바꿔서 대답하는것
-->결과(얼마나 참여하는가)에 대한 정량적 이론(계단에서 카운트한다,미사중 카운트한다 ,주보를 나눠줄때 카운트한다 등등)의 결정과 결정변수 (중간에 나가도 count하는가?) 의 조정에 따라 목적함수 (많은사람의 미사참석)이 달라지기 때문이다
---> 이때 "모든변수"(count하는 위치)를 고려하는게 아니라 "한두개"의 변수를 선택해서 "전체"의 결론을 내리는것이 "휴리스틱"분석이다

직관 vs 휴리스틱분석 vs 최적화
직관=한가지 선택지
휴리스틱=몇가지의 선택지
최적화=모든선택지를 대상

직관 <--> 휴리스틱 <--> 최적화
-->휴리스틱을 위해 "빠르고 검약적인 트리 - fast and trugal tree" 라는방법을 사용함
ex)



**휴리스틱**
심리학에서=어렵거나 이해하기 어려운 "속성"을 친밀한 속성으로 대신하는것
컴퓨터 과학=정확한답을 낼 가능성은 높지만 최적성이 보장되지않는 해결방안
-->고정관념 역시 휴리스틱
처리에 큰 에너지가 필요하지않고 빠르며
가지고있는 한두가지의 생각으로 동작한다
-->근거가 빈약한 결론에 다다른다

Chp7. 주관적 확율

목적
"숫자에 대한 믿음 - Trust for Number"
아마,좋은,확실히,가능성이 낮다 등의 "정성적" 표현에서 4% 증/감소 등의 "정량적" 으로 표현하는 방법

본론
"주관적 확율"
-->분석가의 믿음을 나타냄-->믿음의 정도를 수치로 표현
-->누구나 이해할수있다(숫자로 표현되었기때문에)

"표준편차"
-->주관적 확율에 "객관성"을 만들수있다 --> 평균에서 얼마나 떨어진 수치를가지는지 볼수있다
(excel에서 =STDEV(데이터범위)로 표준편차를 구한다)
Chp-07.zip의 hfda_ch07_data_transposed_kr.xls 로 =STDEV(범위)함수를 실습가능

Chp6. 베이지안 통계


**베이지안 정리의 간단한 예제**
일본이 한국에 대한 수출 규제를 지속할 활(취소할) 확율은 얼마나 될까?
(P=Probability 확율 , H=Happen 일어나다 , E=Evidence 증거 ,  Chp-07.zip  의 hfda_ch07_new_probs_kr.xls )

P(H) = 수출규제가 지속 P(~H)= 수출규제가 취소
그런데 이때 일본 외무성에서 수출규제 철페 뉴스가 발표됨
P(E|H) = 확율(뉴스가 나왔고 | 규제는 지속된다)
P(E|~H) = 확율(뉴스가 나왔고 | 규제는 취소된다) = 뉴스가 이루어졋다
E값은 ~(부정)이 될수없다 --> 현상이기 때문에 고정값이다

이때 "규제 취소 뉴스가 나왔으나 규제가 지속될 확율" 은?

P(H|E)=P(H)*P(E|H) / P(H)*P(E|H) + P(~H)*P(E|~H)
--> P(규제는 지속|뉴스에도 불구하고) = P(규제는 계속) * P(뉴스가 나오고|규제는 지속) / P(규제는 계속) * P(뉴스가 나오고|규제는 지속) + P(규제는 취소된다) * P(뉴스가 나오고|규제는 취소된다)

Chp5. 가설 검정

목적
"반증이란?"
-->직관적이지 않아도 신중히 추론가능한 강력한 방법
ex)음(-)과 양(+)의 상관관계 분석등

본론
**상관관계 분석은 "선형" 이 아니라 "네트워크형" 으로 얽혀져있다

선형 논리


네트워크형 논리


논리가 여러개 있을때 취합(선택)하기위해 2가지 선택 가능한 방안
1.만족화
-->다른 가설을 배제하지 않고 경험등에 의지해 선택해버리는것
2.반증
-->근거를 통해 논리를 제거하고 선택하는것

반증(disproof) vs 통계학적 가설검정(HYPOTHESIS_APPROVAL)
-->후보가설(대립가성)과 기준가설(귀무가설)을 비교한다
-->귀무가설을 통해 불가능함을 가늠하는 척도가 될수 있다

**진단가능성**
증거가 검토중인 가설의 상대적 가능성을 평가하는데 도움을 줄수있는지 여부를 나타내는 능력
ex)해당 가설은 진단가능성이 있어! --> 증거와 data가 논리에 영향을 주고있다



증거 #1은 논리-1,2 를 뒷받침하고 논리-3의 반증이다
증거 #2는 논리-1,2,3 을 모두 뒷받침하니 좋은 증거가 될수 없다

**중요**
모든 가설을 반증하는건 쉽지않다,어떤 증거는 가설에 반하지만 "틀린것은 아니다"

Chp4. 데이터 시각화

목적
"그림은 사람을똑똑하게 만든다"
데이터 시각화는 데이터를 이해하기 쉬워 "보이게" 만든다는것 (실제로 이해하기 쉬울수도, 이상한 데이터의 시각화 일수도 있기때문)
그래서 "시각화된 정보뒤에 무었이 있는가" 를 주의깊게 봐야한다

본론
시각화를 할때 "데이터가 많으면 문제가 된다?" (불필요한 데이터가 있을수있고 시각화 등에 방해되며 처리에 쉽지않을수 있어서)는 생각을 가질수 있지만 답은
"NO"이다 데이터가 많은건 문제가 되지않는다, 목적을 염두하고 목적에 맞는 DATA 만 집중하면 문제될게 없기때문에
-->"데이터는 많을수록 좋다"

데이터의 시각화--> 적절한 비교가 이루어진것
ex)Chp-04.zip의 hfda_ch04_home_page1_kr.csv 을 참조하면 사이트 체류시간과 수입의 상관관계를 볼수있음)

좋은 데이터 시각화의 특징
--> 데이터를 나타냄, 적정한 비교 , 여러변수의 명시 등이 이루어진것

데이터의 "탐색적 분석" 에서 "산포도"는 특히 "인과관계" 조사에서 쓸모가 있다
-->가로(x)는 독립변수 - 영향을 미치는 변수,원인이라고 생각하는 변수)
-->세로(y)는 종속변수 - 결과가 된다고 생각하는 변수




그림에서보면 2차원 그래프 이기때문에 변수 역시 제한된 개수만 사용 가능함
-->다양한 변수를 사용한 시각화를 "다변량 시각화" 라고 한다

***데이터 시각화의 핵심***
"인과관계" - 시각화 시킨 방법이 데이터와 잘 어울려서 다른 인과 관계 모델에도 대응이 되야한다
-->"데이터 일관성(Integrity)"가 있는 데이터 시각화가 중요하다

에드워드 터프티 (edward tufte)
-->데이터 시각화의 최고권위자, 참고할만한 자료가 많음 "인지예술" 이라고도 불리는 권위자이다

Chp3. 최적화

목적
"최대한 가져가기" 데이터 분석도구의 "변수"를 조작해 최적점을 얻는과정을 다룬다

본론
**변수의 종류**
제약 : 한번에 ~~을 할수없다 등의 조건
결정변수 : 통제가 가능한 변수
-->결정변수와 제약조건의 조절 = 최적화

목적함수 = 최적화 문제의 해결하기위해
결정변수, 제한조건 , 데이터 분석의 목표를 함수화(functionalization)시킨것
-->목적함수를 바탕으로 데이터를 "그래프화" 시킬수 있다
엑셀등의 스프레드 시트에서 "해찾기 기능이 그래프를 대신해줄수 있음



Q:데이터 분석은 정확했으나 결과대로 상황이 움직이지 않았다면 무었이 잘못되었나?
A:다양한 멘탈모델(가정)이 반영되지 않았는지 검사해본다,분석도구는 논리를 단순화 시키기때문에
"멘탈모델"이 정확하다면 신뢰할수 있는 결과가 나올수 있다, 데이터는 사실을 반영한다 "모델"이 정확한지가 가장 정확한 point이다 (모든 model은 틀렷다, 그러나 일부는 유용하다 - 조지 에드워드 펠럼 박스 - )

가정시 "음의 상관관계" (상호배타적 관계를 가지는)의 data에 대한 흐름을 주의해서 보자
--->하지만 언제나 모델의 변경에 대한 준비도 동시에 하면서 봐야한다

ex)Chp-03.zip 내부의 bathing_friends_unlimited_kr.xls  , historical_sales_data_kr.xls를 가지고 실습, 한번에 오리와 물고기 장난감을 증가시킬수 없기때문에 두개의 object는 음의 상관관계를 가진다

Chp2. 실험

목적
비교법을 기반으로한 이론의 검증
명확하게 비교하며 이유를 설명해야한다, 명확하지 않은 비교는 잘못된 분석결과를 만들어낸다

본론
**교락인자 - confounder**
비교하고자 하는 인자 이외에 나타나는 차이, 이거때문에 결과가 덜 합리적으로 도출될수 있다
-->데이터를 분할해서 교락인자를 균일한(homogenous) 그룹의 data로 만들수 있다
-->불안인자를 최대한 균일하게 나누어서 결과 도출시 그룹간 같은 페널티 상태로 만든다는 논리
-->이때의 "균일하게" 는 무작위,random 으로 그룹을 나누었을때 기대할수있다

**대조군**
현제의 상황에 영향을 주지않는 실험대상,그룹

**역사적 대조 - historical contrast **
"작년같은해에는 어땟으니 이번년도는 ~~될것이다" 등의 논리는 정확하지 않다

교락인자 제거-->이론(가정에 의한)실험이 필요하다-->실험을 위해 "대조군" 을 만든다

Chp1. 데이터분석 입문

목적
우수한 분석가는 데이터를 "볼" 수있어야한다 , 특정값이 증가하면 특정값이 증가하면 특정값이 내려가는것, 데이터의 flow 를 보는법을 키우자
ex)어떻게 해야 매출이 증진될까? (가격을 낮추면 마진이 떨어지고 가격을 높이면 매출 자체가 떨어질수 있다

본론

1.데이터 분석의 기본 절차
정의:문제의 정의

분해:문제를 다루기 쉬운 수준으로 분해하는것
ex)매출을 눌리자-->단골고객이 우리에게 원하는점은? , 가장 효과적인 프로모션은 무었일까?
질문,데이터의 분해로써 가지고있는 원시 데이터에서 필요한 정보를 추출하는과정
대조를 이용해서 중요 자료를 추출가능함 - 데이터 분석 요청가의 상황에 따른 개념 구축

평가:분석의 골자
분석의 시작은 분석가 자신의 가정을 명시적으로 밝히고 결론에 확신을 가지는게 중요함
**주관이 들어간 경우**
분석가에게 좋은점
데이터의 탐색 , 분석 목적을 알수있다
무리한 결론을 내리지 않는다
성공에 책임을 질수 있다
고객에게 좋은점
고객의 신뢰를 얻는다
분석가가 내린 결론의 한계를 이해하기 좋다
**주관이 들어가지 않은경우**
분석가에게 나쁜점
책임감없는 분석가로 보인다
기준이 되는 가정이 없어지는 사태가 된다
고객에게 나쁜점
데이터의 신뢰성에 의문이 생긴다
합리성이 부족하다고 느낄수 있다

최종 보고서 제작시 자신의 생각을 언급해서 보고서의 결론이 분석가의 어느 논리에 근거해서 파생되었는지 알수있다


결정:결심자에게 도움이 되는 형태로 정리해서 제공한다
보통 배경-->고객의 요구사항 정의 -->데이터분석 -->권고안을 제공한다

Q.만약 데이터가 잘못 분석되었다면?
A. 고객의 요구(멘탈모델)가 잘못되었는지 점검
즉 제공된 데이터에서 고객이 요구하는 데이터와 유사한,유츄 가능한 데이터가 있는지 먼저 확인한다

멘탈모델?
두뇌는 도구상자,멘탈모델은 도구로서 항상 멘탈모델을 명확하고 주의깊게 다뤄야한다, 멘탈모델은 현실을 보는 렌즈처럼 작용해서 잘못된 모델은 분석이 시작하기 전부터 실패하게되는 여지를 주기때문이다

*사람들이 잘못된 멘탈 모델을 가지는건 보통 발생하는문제
*멘탈모델의 중요 point 는 불확실한것(자기가 잘 모르는것)을 포함해야 구체화시킬수 있는 여지가 생긴다는것이다
*멘탈모델은 검증이 가능해야한다 ,모든 모델을 검증할수는 없지만 (시간관계상) 검증 방법론은 언제나 가지고 있어야한다, 멘탈모델이 준비되있다는건 "정의" 단계가 완료됫다고 볼수있다


*문제의 정의가 가장 중요하다 , 목적이 없는 데이터 분석은 목적없이 떠나는 여행과 같음
*데이터 분석이란 문제를 식별하고 해결하는것
*탐색적 데이터 분석 = 데이터의 목적을 찾기위한 분석