통계

# p-value를 고객에게는 뭐라고 설명하는게 이해하기 편할까요?

## p-value는 요즘 시대에도 여전히 유효할까요? 언제 p-value가 실제를 호도하는 경향이 있을까요?

## A/B Test 등 현상 분석 및 실험 설계 상 통계적으로 유의미함의 여부를 결정하기 위한 방법에는 어떤 것이 있을까요?

# R square의 의미는 무엇인가요? 고객에게는 어떻게 설명하실 예정인가요?

# 평균(mean)과 중앙값(median)중에 어떤 케이스에서 뭐를 써야할까요?

# 중심극한정리는 왜 유용한걸까요?

# 엔트로피(entropy)에 대해 설명해주세요. 가능하면 Information Gain도요.

### 하지만 또 요즘같은 빅데이터(?)시대에는 정규성 테스트가 의미 없다는 주장이 있습니다. 맞을까요?

## 어떨 때 모수적 방법론을 쓸 수 있고, 어떨 때 비모수적 방법론을 쓸 수 있나요?

# “likelihood”와 “probability”의 차이는 무엇일까요?

# 통계에서 사용되는 bootstrap의 의미는 무엇인가요.

## 모수가 매우 적은 (수십개 이하) 케이스의 경우 어떤 방식으로 예측 모델을 수립할 수 있을까요.

## 베이지안과 프리퀀티스트간의 입장차이를 설명해주실 수 있나요?

머신러닝

# Local MinimaGlobal Minima에 대해 설명해주세요.

# 차원의 저주에 대해 설명해주세요

# dimension reduction기법으로 보통 어떤 것들이 있나요?

## PCA는 차원 축소 기법이면서, 데이터 압축 기법이기도 하고, 노이즈 제거기법이기도 합니다. 왜 그런지 설명해주실 수 있나요?

### LSA, LDA, SVD 등의 약자들이 어떤 뜻이고 서로 어떤 관계를 가지는지 설명할 수 있나요?

## Markov Chain을 고등학생에게 설명하려면 어떤 방식이 제일 좋을까요?

## 텍스트 더미에서 주제를 추출해야 합니다. 어떤 방식으로 접근해 나가시겠나요?

## SVM은 왜 반대로 차원을 확장시키는 방식으로 동작할까요? 거기서 어떤 장점이 발생했나요?

### eigenvalue, eigenvector에 대해 설명해주세요. 이건 왜 중요한가요?

## 다른 좋은 머신 러닝 대비, 오래된 기법인 나이브 베이즈(naive bayes)의 장점을 옹호해보세요.

# Association RuleSupport, Confidence, Lift에 대해 설명해주세요.

### 최적화 기법중 Newton’s MethodGradient Descent 방법에 대해 알고 있나요?

## 머신러닝(machine)적 접근방법과 통계(statistics)적 접근방법의 둘간에 차이에 대한 견해가 있나요?

## 인공신경망(deep learning이전의 전통적인)이 가지는 일반적인 문제점은 무엇일까요?

### 지금 나오고 있는 deep learning 계열의 혁신의 근간은 무엇이라고 생각하시나요?

# ROC 커브에 대해 설명해주실 수 있으신가요?

# 여러분이 서버를 100대 가지고 있습니다. 이때 인공신경망보다 Random Forest를 써야 하는 이유는 뭘까요?

## 두 추천엔진간의 성능 비교는 어떤 지표와 방법으로 할 수 있을까요? 검색엔진에서 쓰던 방법을 그대로 쓰면 될까요? 안될까요?

# K-means의 대표적 의미론적 단점은 무엇인가요? (계산량 많다는것 말고)

시각화

## "신규/재방문자별 지역별(혹은 일별) 방문자수와 구매전환율"이나 "고객등급별 최근방문일별 고객수와 평균구매금액"와 같이 4가지 이상의 정보를 시각화하는 가장 좋은 방법을 추천해주세요

## 구매에 영향을 주는 요소의 발견을 위한 관점에서, 개인에 대한 쇼핑몰 웹 활동의 시계열 데이터를 효과적으로 시각화하기 위한 방법은 무엇일까요? 표현되어야 하는 정보(feature)는 어떤 것일까요? 실제시 어떤 것이 가장 고민될까요?

# 파이차트는 왜 구릴까요? 언제 구린가요? 안구릴때는 언제인가요?

# 히스토그램의 가장 큰 문제는 무엇인가요?

# 워드클라우드는 보기엔 예쁘지만 약점이 있습니다. 어떤 약점일까요?

## 어떤 1차원값이, 데이터가 몰려있어서 직선상에 표현했을 때 보기가 쉽지 않습니다. 어떻게 해야할까요?


분석 일반

# 좋은 feature란 무엇인가요. feature의 성능을 판단하기 위한 방법에는 어떤 것이 있나요

# "상관관계는 인과관계를 의미하지 않는다"라는 말이 있습니다. 설명해주실 수 있나요?

# A/B 테스트의 장점과 단점, 그리고 단점의 경우 이를 해결하기 위한 방안에는 어떤 것이 있나요?

## 각 고객의 웹 행동에 대하여 실시간으로 상호작용이 가능하다고 할 때에, 이에 적용 가능한 고객 행동 및 모델에 관한 이론을 알아봅시다.

## 고객이 원하는 예측모형을 두가지 종류로 만들었다. 하나는 예측력이 뛰어나지만 왜 그렇게 예측했는지를 설명하기 어려운 random forest 모형이고, 또다른 하나는 예측력은 다소 떨어지나 명확하게 왜 그런지를 설명할 수 있는 sequential bayesian 모형입니다. 고객에게 어떤 모형을 추천하겠습니까?

## 고객이 내일 어떤 상품을 구매할지 예측하는 모형을 만들어야 한다면 어떤 기법(: SVM, Random Forest, logistic regression )을 사용할 것인지 정하고 이를 통계와 기계학습 지식이 전무한 실무자에게 설명해봅시다.

## 나만의 feature selection 방식을 설명해봅시다.

## 데이터 간의 유사도를 계산할 때, feature의 수가 많다면(: 100개 이상), 이러한 high-dimensional clustering을 어떻게 풀어야할까요?

시스템 엔지니어링

# 처음 서버를 샀습니다. 어떤 보안적 조치를 먼저 하시겠습니까?

## SSH로의 brute-force attack을 막기 위해서 어떤 조치를 취하고 싶으신가요?

## MySQL이 요새 느리다는 신고가 들어왔습니다. 첫번째로 무엇을 확인하시고 조정하시겠나요?

## 동작하는 MySQLAlter table을 하면 안되는 이유를 설명해주세요. 그리고 대안을 설명해주세요.

## 빡세게 동작하고 있는 MySQL을 백업뜨기 위해서는 어떤 방법이 필요할까요?

# 프로세스의 CPU 상태를 보기 위해 top을 했습니다. user,system,iowait중에 뭐를 제일 신경쓰시나요? 이상적인 프로그램이라면 어떻게 저 값들이 나오고 있어야 할까요?

## iowait이 높게 나왔다면, 내가 해야하는 조치는 무엇인가요? (돈으로 해결하는 방법과 소프트웨어로 해결하는 방법을 대답해주세요)

## 동시에 10개의 컴퓨터에 라이브러리를 설치하는 일이 빈번히 발생합니다. 어떤 해결책이 있을까요?

# screentmux중에 뭘 더 좋아하시나요?

# vim입니까. emacs입니까. 소속을 밝히세요.

# 가장 좋아하는 리눅스 배포판은 뭡니까. 왜죠?

## 관리하는 컴퓨터가 10대가 넘었습니다. 중요한 모니터링 지표는 뭐가 있을까요? 뭐로 하실건가요?

## GIT의 소스가 있고, 서비스 사용중인 웹서버가 10대 이상 넘게 있습니다. 어떻게 배포할건가요?


분산처리

# 좋게 만들어진 MapReduce는 어떤 프로그램일까요? 데이터의 Size 변화의 관점에서 설명할 수 있을까요?

### 여러 MR작업의 연쇄로 최종결과물이 나올때, 중간에 작업이 Fail날수 있습니다. 작업의 Fail은 어떻게 모니터링 하시겠습니까? 작업들간의 dependency는 어떻게 해결하시겠습니까?

## 분산환경의 JOIN, 보통 디스크, CPU, 네트워크 중 어디에서 병목이 발생할까요? 이를 해결하기 위해 무엇을 해야 할까요?

## 암달의 법칙에 대해 말해봅시다. 그러므로 왜 shared-nothing 구조로 만들어야 하는지 설명해봅시다.

### shared-nothing 구조의 단점도 있습니다. 어떤 것이 해당할까요?

## SparkHadoop보다 빠른 이유를 I/O 최적화 관점에서 생각해봅시다.

### 카산드라는 망한것 같습니다. 왜 망한것 같나요? 그래도 활용처가 있다면 어디인것 같나요. (작성자의 취향이 반영되었으므로, 상대적 강점,약점 정도로 표현해주세요 ㅎㅎㅎ)

## TB 단위 이상의 기존 데이터와 시간당 GB단위의 신생 로그가 들어오는 서비스에서 모든 가입자에게 개별적으로 계산된 실시간 서비스()를 제공하기 위한 시스템 구조를 구상해봅시다.

### 대용량 자료를 빠르게 lookup해야 하는 일이 있습니다. (100GB 이상, 100ms언더로 특정자료 찾기). 어떤 백엔드를 사용하시겠나요? 느린 백엔드를 사용한다면 이를 보완할 방법은 뭐가 있을까요?

### 데이터를 여러 머신으로 부터 모으기 위해 여러 선택지가 있을 수 있습니다. (flume, fluentd) 아예 소스로부터 kafka등의 메시징 시스템을 바로 쓸 수도 있습니다. 어떤 것을 선호하시나요? 왜죠?

웹 아키텍쳐

## 트래픽이 몰리는 상황입니다. AWSELB 세팅을 위해서 웹서버는 어떤 요건을 가져야 쉽게 autoscale가능할까요?

## Apache보다 Nginx가 성능이 좋을까요? node.js가 성능이 좋은 이유와 곁들여 설명할 수 있을까요?

## node.js는 일반적으로 빠르지만 어떤 경우에는 쓰면 안될까요?

### 하나의 IP에서 여러 도메인의 HTTPS 서버를 운영할 수 있을까요? 안된다면 왜인가요? 또 이걸 해결하는 방법이 있는데 그건 뭘까요?

### 개발이 한창 진행되는 와중에도 서비스는 계속 운영되어야 합니다. 이를 가능하게 하는 상용 deploy 환경은 어떻게 구현가능한가요? WEB/WAS/DB/Cluster 각각의 영역에서 중요한 변화가 수반되는 경우에도 동작 가능한, 가장 Cost가 적은 방식을 구상하고 시나리오를 만들어봅시다.

서비스 구현 (python, javascript, ...)

# 크롤러를 파이썬으로 구현할 때 스크래핑 입장에서 BeautifulSoupSelenium의 장단점은 무엇일까요?

## 빈번한 접속으로 우리 IP가 차단되었을 때의 해결책은? (대화로 푼다. 이런거 말구요)

# 당장 10분안에 사이트의 A/B 테스트를 하고 싶다면 어떻게 해야 할까요? 타 서비스를 써도 됩니다.

## 신규 방문자와 재 방문자를 구별하여 A/B 테스트를 하고 싶다면 어떻게 해야 할까요?

## R의 결과물을 python으로 만든 대시보드에 넣고 싶다면 어떤 방법들이 가능할까요?

# 쇼핑몰의 상품별 노출 횟수와 클릭수를 손쉽게 수집하려면 어떻게 해야 할까요?

## 여러 웹사이트를 돌아다니는 사용자를 하나로 엮어서 보고자 합니다. 우리가 각 사이트의 웹에 우리 코드를 삽입할 수 있다고 가정할 때, 이것이 가능한가요? 가능하다면, 그 방법에는 어떤 것이 있을까요?

## 고객사 혹은 외부 서버와의 데이터 전달이 필요한 경우가 있습니다. 데이터 전달 과정에서 보안을 위해 당연히(plain text)로 전송하는 것은 안됩니다. 어떤 방법이 있을까요?


대 고객 사이드

## 고객이 궁금하다고 말하는 요소가 내가 생각하기에는 중요하지 않고 다른 부분이 더 중요해 보입니다. 어떤 식으로 대화를 풀어나가야 할까요?

## 현업 카운터 파트와 자주 만나며 실패한 분석까지 같이 공유하는 경우와, 시간을 두고 멋진 결과만 공유하는 케이스에서 무엇을 선택하시겠습니까?

# 고객이 질문지 리스트를 10개를 주었습니다. 어떤 기준으로 우선순위를 정해야 할까요?

## 오프라인 데이터가 결합이 되어야 해서, 데이터의 피드백 주기가 매우 느리고 정합성도 의심되는 상황입니다. 우리가 할 수 있는 액션이나 방향 수정은 무엇일까요?

## 동시에 여러개의 A/B테스트를 돌리기엔 모수가 부족한 상황입니다. 어떻게 해야할까요?

## 고객사가 과도하게 정보성 대시보드만을 요청할 경우, 어떻게 대처해야 할까요?

## 고객사에게 위클리 리포트를 제공하고 있었는데, 금주에는 별다른 내용이 없었습니다. 어떻게 할까요?

## 카페24, 메이크샵 같은 서비스에서 데이터를 어떻게 가져오면 좋을까요?

### 기존에 같은 목적의 업무를 수행하던 조직이 있습니다. 어떻게 관계 형성을 해 나가야 할까요. 혹은 일이 되게 하기 위해서는 어떤 부분이 해소되어야 할까요.

## 인터뷰나 강의에 활용하기 위한 백데이터는 어느 수준까지 일반화 해서 사용해야 할까요?

## 고객사가 우리와 일하고 싶은데 현재는 capa가 되지 않습니다. 어떻게 대처해야 할까요?

### 고객사들은 기존 추천서비스에 대한 의문이 있습니다. 주로 매출이 실제 오르는가 하는 것인데, 이를 검증하기 위한 방법에는 어떤 것이 있을까요?

### 위 관점에서 우리 서비스의 성능을 고객에게 명확하게 인지시키기 위한 방법을 생각해봅시다.

개인정보에 대한 이해

# 어떤 정보들이 개인정보에 해당할까요? ID는 개인정보에 해당할까요? 이를 어기지 않는 합법적 방법으로 식별하고 싶으면 어떻게 해야할까요?

# 국내 개인 정보 보호 현황에 대한 견해는 어떠한지요? 만약 사업을 진행하는데 장애요소로 작용한다면, 이에 대한 해결 방안은 어떤 것이 있을까요?

## 3자 쿠키는 왜 문제가 되나요?



전 넘버웍스

데이터 사이언티스트 하용호님 글 중 발췌



반응형
Posted by JoeSung
,

Q. 파이차트에서 labels 의 크기를 조정하는 방법


A.

cex의 크기를 조절하면 된다.

기본 설정은 1로 되어있다.



pie(c(3632,20,491,991,120), cex=1)




pie(c(3632,20,491,991,120), cex=5)





https://stackoverflow.com/questions/37069311/how-to-increase-the-font-size-of-labels-on-pie-chart

반응형
Posted by JoeSung
,

Vector와 미묘하게 용도가 다르다 싶어서 한번 정리를 해야겠다고 마음먹던 차에..
Factor 자료형에 관해서 발표할 일이 있어서 주말간 정리해본 자료를 공유합니다.

Factor는 linear modeling을 위해 특별히 고안된 자료형인데, Levels 덕분에 분석작업시에
명목변수별로 데이터를 볼 수 있다는 장점이 있습니다. 아래의 자료를 참고해주세요 :D



[다운로드]


Factor.pdf


*대단한 자료는 아니지만, 가져가실 때 출처 밝혀주시는 센스! 부탁드립니다.




[코드]


factor(c("no", "yes") )


factor(c("yes", "no", "yes"), levels = c("yes", "no"))


factor(c("yes", "no", "yes"), levels = c("yes", "no") , ordered = T)


x <- factor(c("yes", "no", "yes", "yeah"), levels = c("yes", "no", "yeah"), ordered = T , nmax = 2)

x


?factor


x <- factor(c("yes", "no", "yes", "yeah"), levels = c("yes", "no", "yeah") , ordered = T, exclude =  "yeah")

x


levels(x)[1:2] <- "yes"

levels(x)



addNA(x, ifany = FALSE)


?addNA


d <- c(rep(1,5), rep(2,6), rep(3,8), rep(4,6))

d









hsb2 <- read.csv("https://stats.idre.ucla.edu/stat/data/hsb2.csv")


## race 컬럼에 factor 미적용시

summary(lm(write ~ race, data = hsb2))


# 팩터 변수 생성 후 race 컬럼에 적용한 결과

hsb2$race.f <- factor(hsb2$race)

is.factor(hsb2$race.f)

hsb2$race.f[1:15]

summary(lm(write ~ race.f, data = hsb2))


## 팩터변수를 외부에서 생성하기 싫은 경우 내부에 사용도 가능

hsb2 <- read.csv("https://stats.idre.ucla.edu/stat/data/hsb2.csv")

summary(lm(write ~ factor(race), data = hsb2))



## 확인시켜주는 함수, is. 시리즈

is.factor(x)

is.ordered(x) 


## 아예 변환시켜주는, as. 시리즈

as.factor(x)

as.ordered(x)


## levels만 뽑아보고 싶어 levels(), levels 가 몇개야? nlevels()

levels(x)

nlevels(x)


## 이 팩터변수 정보좀 가져와~ table(), 팩터형 좀 해제 시켜봐, unclass()

table(x)

unclass(x)



 

[참고 서적]


1. R을 활용한 머신러닝 - 브레트 란츠

2. R Programming - Coursera (2017년 강의)


반응형
Posted by JoeSung
,

[예고편]


이전분석 - "1. 치킨집과 국내경제"

확인하기 : http://gigle.tistory.com/75


 "결론은 문이과를 나와도 너도나도 치킨집"


손석희 사장님도 어쩌면 곧 치킨집을..



"그러나 치킨집의 결말은.. 어땠을까?"





[결과물]


2005-2014 카페 창업/폐업 건수 비교


2005-2014 치킨집 창업/폐업 건수 비교


2005-2014 술집(호프간이주점) 창업/폐업 건수 비교


2005-2014 일식집 창업/폐업 건수 비교


2005-2014 한식음식점 창업/폐업 건수 비교



[요약]


- 2007년을 기점으로 치킨집 점주들과 카페 점주들은 희비가 엇갈렸다.

:: 치킨집의 폐업건수가 2007년도에 최대치, 서브프라임 모기지가 원인인 것으로 추측.

:: 그러나 카페 창업은 2007년 경제위기를 빗겨나갔다. 오히려 창업이 계속해서 증가, 폐업은 미미하게 증가

:: 한국 시장에서 그만큼 커피수요가 창출되었다는 것을 의미하기도.


- 따라서 2007년 이후에 별다른 소신 없이 치킨집 창업에 뛰어드는 것은 무모한 일이었다.

:: 차라리 카페를 하는 것이 현명




[Code]

환경 : R Studio

라이브러리 :

코드 :



show_line <- function() {

  

  market <- readline(prompt = "업종을 입력하세요")

  

  graphics.off()

  chic_sta <- create_cnt[ , market]

  chic_end <- drop_cnt[ , market]

  chic_range <- range(0, chic_sta, chic_end)

  

  head(create_cnt)

  lab_year <- create_cnt[,"X"]

  

  plot(chic_sta, type="o", col = "blue", ylim = chic_range, axes = FALSE, ann = FALSE, pch = 1)

  axis(1, at=1:10, lab=lab_year )

  axis(2)

  box()

  

  lines(chic_end, type="o", col = "red", lty = 3, pch = 22 )

  legend(5, chic_range[2] ,c("창업","폐업"),col=c("blue","red"),cex=0.8,pch=1:22,lty=1:3 )

  

  title(main = paste(market, "창업/폐업 현황") , col.main="red", font.main=4)

  

}


show_line()

반응형
Posted by JoeSung
,


[결과물]


1


2




[코드]



## 1 igraph 패키지 사용

install.packages("igraph")

library(igraph)


emp <- read.csv("emp.csv")

a <- merge(emp, emp, by.x="mgr", by.y="empno")[ , c("ename.x", "ename.y")]

a

b <- graph.data.frame(a, directed = T)

plot(b)



## 2 - googleVis 패키지 사용


install.packages("googleVis")
library(googleVis)


a <- merge(emp,emp, by.x="empno",by.y="mgr", all.y=T)


org <- gvisOrgChart(a, idvar="ename.y",parentvar="ename.x",
     options=list(width=600, height=250, size='middle',allowCollapse=T))


plot(org)


반응형
Posted by JoeSung
,

R을 잘 활용하기 위한 방법이라고 한다면.
R을 사용한다는 건 데이터를 분석을 한다는 것과 동일한 의미를 가진다. 데이터 분석을 위해서는 툴에 대한 이해도 필요하고 동시에 데이터의 언어인 통계에 대한 이해가 필수다. 통계는 자신의 가설이 일반화가 가능한지 평가를 할 수 있는 도구이다.

R은 상당한 러닝커브를 가진 언어 중에 하나이다. 따라서 잘 쓰기 위해서는 어느 정도의 시간 투자가 반드시 필요하다. 다행히 최근 많은 국내 서적이 출시되어 많은 이들이 언어를 배우기가 예전보다는 쉬워졌는데 환영할 만한 상황임에는 분명하다.

기본서적을 통해 어느 정도 문법을 익힌 이후에는 직접 데이터 분석 주제를 잡아서 분석업무를 R을 기반으로 해보길 권유한다. 그래프도 직접 그려보고 데이터 전처리도 직접해보면 왜 R이 데이터 분석 언어인지 피부로 느끼게 된다.

이 과정에서 SAS나 SPSS, 그리고 엑셀로 쓰면 되지 왜 고생을 하지라는 고민을 한다. 이 고비만 넘긴다면 엑셀보다 편해지는 시점이 오고 초보에서 중반 정도 넘어가는 수준으로 도약하게 된다.

이후엔 다른 사람들의 분석 코드라든지 패키지 코드를 보면서 최적화된 코드를 많이 보는 게 큰 도움이 되며 이 과정을 거치게 되면 R이 어떤 방식으로 동작하게 되는지 알게 된다.

실제 다른 언어에서 데이터 분석은 전처리와 시각화 하는 패턴이 있다. 그 패턴을 매번 가져가기 위해 포문이나 언어로 구현해서 전처리를 하다보면 이게 분석 작업인지 코딩 작업인지 분간이 안 될 때가 있다. 반면 R은 그 패턴을 정형화해서 프레임워크나 평션을 활용할 수 있게 특정 패키지와 함수로 전처리를 쓸 수 있다. 즉 R은 수십 라인 코드로 만든 일반적인 프로그래밍 부분을 한 라인의 코드로 만들 수 있는 만큼 편리함은 물론이고 정확하게 동작할 수 있게 해주는 등 효율적이라고 할 수 있다.

이 때쯤이라면 R로 모든 것을 하려고 하는 중독 현상이 일어난다. 한 외국 사람이 흡사 담배를 배우는 과정과 닮아 있다고 표현하는 것에 매우 공감했다. 담배를 처음 접할 때는 기침도 나고 목도 아프지만 어느 정도 익숙해지면 중독되는 것과 같이 R 역시 초반에 다른 언어에 비해서 배워야하는 부분이 많고 높지만 어느 정도 익숙해지면 모든 작업을 R을 기반으로 하는 중독이 일어난다. 이후 R로 모든 것을 하려고 한다. 그러나 모든 영역에 R을 적용할 수 없다. R의 통계에 특화된 언어로 언어적인 성능은 다른 언어에 비해서 낮다. 만약 R로 모든 영역을 적용하려고 한다면 굉장히 느린 프로세싱 결과를 얻게 되는 것이다. 이는 중독에 대한 부작용이다.

이런 부작용을 벗어나기 위해 최적화 방법론을 찾게 된다. R을 C++과 결합한다든지 느린 부분은 빠른 패키지로 대체하는 식으로 진행하다 보면 빠른 프로세스로 복귀를 하게 되는 것이다. 이 정도면 데이터 분석가라고 불리기엔 충분할 것이다.

마지막으로 통계학에 대한 학사 정도의 지식이 필요하다. R의 매뉴얼 페이지나 심지어 함수의 파라미터 명까지도 통계학에서 따온 용어를 쓰고 있는 만큼 기본 개념을 이해하지 않고서는 R을 제대로 쓴다고 할 수 없을 것이다.



[출처]

[데이터사이언티스트를 찾아서] “개발자와 통계학자 영역 자유롭게 왕복해야”

전희원 SK 텔레콤 매니져

http://m.comworld.co.kr/news/articleView.html?idxno=47869

반응형
Posted by JoeSung
,

> barplot(x)

Error in plot.new() : figure margins too large


문제 :

margin 기본 설정이 너무 좁게 설정 되어 있음


해결 :

아래 코드로 마진을 다시 설정 후 결과 확인


par("mar")

par(mar=c(1,1,1,1))


혹은

윈도우창을 최대로 늘린 뒤 결과 다시 확인




## Stack Over flow 참조

https://stackoverflow.com/questions/23050928/error-in-plot-new-figure-margins-too-large-scatter-plot

반응형
Posted by JoeSung
,



원인

-R의 bit(32, 64)와 java의 bit가 다르기 때문에 rJava 오류가 발생합니다.


해결 :


1.

R의 bit를 확인합니다. 보통 R 콘솔(R studio가 아닌)을 실행했을 때 맨 첫 화면에 나타납니다.



[이런식으로, 맨 첫화면에 Platform 부분에 bit 버전이 뜹니다. 요 체크]


2.

JAVA 페이지에 접속해서 해당 Bit에 맞는 파일로 다시 다운받아 설치합니다.

이 때, '설치 경로'를 캡쳐해두거나 복사하여 적어둡니다.


https://www.java.com/en/download/manual.jsp

JAVA 다운로드는 이곳에서 가능



3.

r_studio 환경에서 아래와 같은 명령어를 수행합니다.

다만 JAVA HOME에 들어갈 경로에 아까 확인한 설치경로에 맞게 다시 작성해 줍니다.


Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_151')



4.

rJava 에러가 해결되는지 확인




##참고 

http://egloos.zum.com/greentec/v/4176464






반응형
Posted by JoeSung
,


---0. 소개 



 PL/SQL을 통해서 엔트로피를 구하는 프로시져입니다. 보통 의사결정나무(Decision Tree)를 구현할 때에 엔트로피를 구할일이 종종 생기는데 윈도우의 cmd 환경에서 정보획득량을 엔트로피 계산을 통해 구할 때 쓸 수 있는 패키지 입니다. 


 보통 R 언어의 통계패키지에서 회귀분석은 lm()으로 굉장히 간단하게 구할 수 있고 이러한 정보획득량을 구할 때 쓸 수있는 패키지 또한 많기 때문에 저처럼 피치못할(?) 사정으로 PL/SQL을 쓰시는 분들이나 연습하시는 분들이 참고용으로 보시면 좋을 것 같습니다.






---1. 테이블 생성 스크립트 및 패키지 명세 작성


--- 테이블 생성 스크립트


drop table  entropy_test2;


create  table  entropy_test2
( cust_name  varchar2(20),
  card_yn     varchar2(10),
  review_yn   varchar2(10),
  before_buy_yn  varchar2(10),
  buy_yn   varchar2(10) );


insert  into entropy_test2 values ('SCOTT','Y','Y','Y','Y');
insert  into entropy_test2 values ('SMITH','Y','Y','Y','Y');
insert  into entropy_test2 values ('ALLEN','N','N','Y','N');
insert  into entropy_test2 values ('JONES','Y','N','N','Y');
insert  into entropy_test2 values ('WARD','Y','Y','Y','Y');


commit;



--- 패키지 명세

create or replace package entropy

is

procedure aft_entropy ( p_table in varchar2,

  p_col_1 in varchar2 ) ;


end entropy;

/



패키지 안에 프로시져 한개만 넣을거면 도대체 왜 패키지화를 시키느냐.. 하면 할말은 없지만 언젠가 패키지에 프로시져를 가득 담을 날을 그리며 한번씩 실행해봅시다.






---2. 패키지 바디 작성


Create or replace package body entropy

is

procedure aft_entropy 

( p_table in varchar2,

  p_col_1 in varchar2 )

Is 


v_stmt varchar2(2000) ;

v_col  varchar2(20)   ;

cnt1 number(10, 7)  ;

buy number(10, 7)  ;

no_buy number(10, 7)  ;

temp number(10, 7) := 0 ;

v_all number(10, 7) := 0 ;

res number(10, 7) := 0;

v_change_name varchar2(100) ;


type refcursor is ref cursor ;

emp_cv  refcursor ;


cursor emp_cursor is

  select column_name

        from cols

where table_name = upper(p_table)

and column_name not in ('CUST_NAME', upper(p_col_1));



begin


for emp_record in emp_cursor loop


v_stmt := 'select ' || emp_record.column_name || ' , count(*) as cnt1,  

                  sum(decode(buy_yn, ''Y'', 1, 0)) as buy_cnt, 

                  sum(decode(buy_yn, ''Y'', 0 ,1)) as no_buy_cnt 

        from entropy_test2 

      group by ' || emp_record.column_name ;


open emp_cv for v_stmt ;

loop 

fetch emp_cv into v_col, cnt1, buy, no_buy ;

exit when emp_cv%notfound ;


  if v_col = 'Y' then 

             

              if buy != 0 then 

             

                temp := temp + ( (buy/-cnt1)*log(2,(buy/cnt1)) ) ; 

           end if; 

  

          if no_buy != 0 then 

                 temp := temp  + ( (no_buy/-cnt1)*log(2,(no_buy/cnt1)) ) ; 

  

            end if; 

  

            res := res + (cnt1/5) * temp;

temp := 0; 

  

          elsif v_col = 'N' then 

  

            if buy != 0 then 

                temp := temp + ( (-buy/cnt1)*log(2,(buy/cnt1)) ) ; 

            end if; 

  

            if no_buy != 0 then 

                temp := temp  + ( (-no_buy/cnt1)*log(2,(no_buy/cnt1)) ) ; 

            end if; 

  

            res := res + (cnt1/5) * temp;

temp := 0; 

  

            end if; 

end loop;


dbms_output.put_line ( emp_record.column_name || ' : ' || res );

res := 0;


end loop;

end aft_entropy;


end entropy;








---3. 실행



exec entropy.aft_entropy('ENTROPY_TEST2', 'BUY_YN');



exec : 패키지 혹은 프로시져 실행을 위한 명령어

entropy.aft_entropy : 패키지명.프로시져명 의 형태로 불러오게 됩니다.
('ENTROPY_TEST2', 'BUY_YN') : 내부에 ' '처리가 안되어있기 때문에 테이블명과 컬럼명을 넘기실 때 꼭 Single quotation으로 감싸주셔야 잘 실행이 됩니다.


구현된 코드로는 독립변수까지는 지정할 수 없고, 분석을 원하는 범주형 자료가 Y나 N으로 이뤄져있을 때만 쓸 수 있다는 한계가 있습니다.






---4. 결과



CARD_YN : 0

REVIEW_YN : 0.4

BEFORE_BUY_YN : 0.6490225










반응형
Posted by JoeSung
,

PL/SQL에서 테이블 생성시 ORA-01031 나올 때 해결방법


1.

sqlplus / as sysdba 

를 통해 관리자 모드 접속합니다.


2.

grant create table to '유져명';

유져명에 사용자 아이디를 넣고 테이블 생성 권한을 부여합니다.


3.

다시 관리자 모드를 빠져나와서 재접속후 시도 



반응형
Posted by JoeSung
,