-앙상블 (Ensemble) 기법 중 배깅(Bagging) 기법 원리 이해하기 :: R 모조리 정복하기


 이번 포스팅에서는 머신러닝의 모델링 기법중 하나인 앙상블, 그 중에서도 가장 기본적인 방법인 배깅(Bagging, Bootstrap Aggregating) 방법에 대해서 알아보고자 합니다. 


[INDEX]

1. 원리

2. 연습 in R



1.  Bagging 원리 (feat. 앙상블)


(출처 :  Youtube 영상 , Ensemble Learner , Udactiy)



  앙상블 모형은 여러개의 weak learners 를 이용해 최적의 답을 찾아내는 기법입니다. 그냥 학습자가 아닌 '약한 학습자'를 활용하게 되는데요, 굳이 이렇게 하는 이유는 좀 더 다양한 의견을 수렴하는 것과 같은 효과를 얻게 되기 때문입니다.


마치, 변호사로만 이루어진 팀보다는 변호사도 있고 배우도 있고 가수도 있는 팀이 좀 더 다양한 의견을 내서 퀴즈쇼에서 좋은 결과를 낼 수 있는 것과 같은 원리라고 보시면 됩니다. 약한 학습자 여러개를 결합하면 강한 학습자가 만들어진다는 아이디어를 기반으로 한다는 것이죠.


배깅(Bagging, Bootstrap aggregatng)은 이러한 앙상블 모형의 기법중 하나인데요, 그림에서 처럼 샘플링을 복원추출로 해온 여러개의 데이터셋으로 부터 각각 모델을 만들고, 그 모델들에서 나온 결과들을 투표(Voting) 혹은 평균(Mean, 보통 회귀분석으로 앙상블을 시도했을 때 평균으로 종합한다고 합니다.) 하여 결과를 도출하는 방법입니다.


 유튜브 영상을 보면 조금 더 이해가 쉬운데요, Udacity에서 쉽게 강의한 영상이 있어 아래에 소개합니다.







이런 앙상블 기법에 대해 정확도를 올리기 위한 방법에 대한 질문을 3가지를 던질 수 있는데


 1. 데이터에 대해 어떤 머신러닝 모델을 구현할 것인가? (회귀인지, 의사결정 트리인지 등)

 2. 해당 모델에 대해서 파라미터 튜닝을 어떻게 할 것인가? (샘플 갯수를 몇개로 할 것인지 등)

 3. 최고의 후보를 찾기 위해 모델 평가하는데 어떤 기준을 사용할 것인가? (투표인지, 평균인지)


이 세가지 질문에 대해 답하는 것이 앙상블 기법의 정확도를 올리고 과적합(Ovefitting) 문제를 조절하는 데에 가장 중요합니다.



2. R 을 통한 연습


2.1 ipred를 활용한 bagging


## bagging 연습 - ipred

credit <- read.csv("credit.csv", header = T)

head(credit, 3)


install.packages("ipred")

library(ipred)

set.seed(300)

 독일은행 채무 이행여부 데이터인 credit.csv를 통해 연습을 진행했습니다. bagging() 펑션을 담고있는 패키지인 ipred를 설치하고 다운받았고, 샘플링을 위한 set.seed()를 실행했습니다.



## nbag = 25  ## 앙상블에 사용되는 의사결정 트리의 갯수가 25개

mybag <- bagging(default ~ . , data = credit, nbagg = 25)

credit_pred <- predict(mybag, credit)

table(credit_pred, credit$default)

prop.table(table(credit_pred == credit$default))





## nbag = 50 ## 앙상블에 사용되는 의사결정 트리의 갯수가 50개

mybag <- bagging(default ~ . , data = credit, nbagg = 50)

credit_pred <- predict(mybag, credit)

table(credit_pred, credit$default)

prop.table(table(credit_pred == credit$default))



샘플링한 갯수가 많아질 수록 정확도가 미약하지만 좀 더 향상되는 모습입니다. nbagg이 bagging()에서는 샘플링하는 집단의 갯수를 결정하는 파라미터입니다.




 2.2 caret을 활용한 연습


## bagging 연습 - caret :: train()

install.packages("caret") ## 파라미터를 튜닝해주는 데에 필요한 caret 패키지

install.packages("e1071") ## trainControl 시에 e1071 패키지가 필요

library(caret)

library(e1071)


set.seed(300)


## numbet = 10

ctrl <- trainControl(method = "cv", number = 10) ## method : 샘플링을 하는 방법을 결정

                                                                             ## number : 리샘플링한 folds의 갯수

train(default ~ . , data = credit, method = "treebag",   trControl = ctrl) ## method : 적용 모델


## numbet = 20

ctrl <- trainControl(method = "cv", number = 10)

train(default ~ . , data = credit, method = "treebag",

      trControl = ctrl)


## numbet = 30

ctrl <- trainControl(method = "cv", number = 30)

train(default ~ . , data = credit, method = "treebag",

      trControl = ctrl)




 number는 리샘플링을 하는 횟수를 조절하는 파라미터인데요, 이를 높일 수록 credit 데이터상에서는 정확도와 kappa가 더 낮아지는 경향을 보였습니다. 가령 1000개의 데이터가 있다면, number = 10인 경우 100개씩 나뉘어 10개의 집합이 될 것이고, number = 20인 경우 각각 50개의 데이터를 가진 20개의 집합이 될텐데, 데이터의 갯수가 충분하지 않은 모델들이 많다고만 해서 좋은 결과가 나오지는 않는 다는 것을 알 수 있었습니다.






[참고 서적]


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

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








반응형
Posted by JoeSung
,


R에서 hist() 명령어로 쓰이는 히스토그램에 대한 간단 정리입니다.



[파일]


2. 막대그래프 vs 히스토그램.pdf


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



[이미지]





[참고 서적]


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

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


반응형
Posted by JoeSung
,


 머신러닝에는 크게 지도, 비지도, 강화학습 크게 3가지 종류가 있습니다. k-means는 직접 데이터에게 분류하는 라벨을 알려주며 학습시키는 지도학습과는 달리, 알고리즘이 직접 분류를 하는 비지도 학습의 대표적인 알고리즘인데요, 이번 포스팅에서 간단하게 원리를 소개하고자 합니다.



1. 기본 원리



-K-MEANS?

 각 문서들 속에 들어있는 데이터 분석을 통해 유사하거나 관계가 높은 항목들끼리 집합을 만들고 싶을 때 사용하는 알고리즘입니다. 알고리즘이 진행되는 순서는 아래와 같습니다.


 1. 
(처음 중심값 선택) 랜덤하게 중심값을 선택한다.
 
 2. 
(클러스터 할당) K개의 중심값과 각 개별 데이터간의
    거리를 측정한다.
    가장 가까운 클러스터에 해당 데이터를 Assign 한다.

 3. 
(새 중심값 선택) 클러스터마다 새로운 중심값을 계산한다.

 4. 
(범위 확인) 선택된 중심값이 변화가 어느정도 없다면 멈춘다.
    만약 데이터의 변화가 있다면 다시 1번부터 반복한다.




k-means의 진행순서


위와 같이 각 군집간의 평균 위치값을 잡고, 

그 위치값을 기준으로 계속해서 최적화를 해나가는 알고리즘입니다.


사진을 보면 좀 더 쉽게 이해가 되는데요,

군집의 갯수(K)와 초기 랜덤값만 지정해주면 알고리즘이 군집내의 평균점을 잡아서

가까운 지점들을 다시 군집화하고 다시 평균점을 잡고...

반복하며 최적화가 될 때까지 분류를 하는 알고리즘입니다.


초기 중심으로부터의 오차 제곱합을 최소화하는 방향으로 군집이 형성되는

일종의 Greedy 알고리즘이기 때문에 안정된 군집은 보장하지만 최적이라고는 말할 수가 없습니다.


k = squart(n/2)

적당한 k 값을 구하는 공식



k-means의 단점


적용이 상당히 쉬운반면, 적중률도 높은 편이어서 자주 쓰이는 알고리즘이지만

이런 K-Means의 큰 약점중 하나는 이상치(Outliers)가 많을 경우

적절한 군집화가 이루어지지 않는다는 점입니다.


위의 그림과 같이 이상치가 많을경우 저렇게 섬처럼

군집이 형성되는데 이상치만 포함되어있을 가능성이 크기 때문에

알고리즘을 적용하기 이전에 데이터의 모양을 먼저 파악하고 적용을 결정해야합니다.


(U자형 데이터 모양이 나타났을 때에도 분류가 잘 안된다는 단점이 있습니다.)


2. 사례



 c <- c(3,4,1,5,7,9,5,4,6,8,4,5,9,8,7,8,6,7,2,1)

 row <- c("A","B","C","D","E","F","G","H","I","J")

 col <- c("X","Y")

 data <- matrix( c, nrow= 10, ncol=2, byrow=TRUE, dimnames=list(row,col))

 data 

기본 데이터 셋을 먼저 만듭니다.


  X Y

A 3 4

B 1 5

C 7 9

D 5 4

E 6 8

F 4 5

G 9 8

H 7 8

I 6 7

J 2 1



 plot(data)


 이 데이터를 2개의 군집으로 분류하는 k-means를 돌려보는 것이 목적!



 install.packages("stats")

 library(stats)


 km <- kmeans( data , 2 )

 라이브러리는 stats이고 kmeans 함수를 씁니다. 분류대상 데이터를 넣고, k값 갯수만 넣어주면됩니다. 아주 간단합니다.


K-means clustering with 2 clusters of sizes 5, 5


Cluster means:

  X   Y

1 3 3.8

2 7 8.0


Clustering vector:

A B C D E F G H I J 

1 1 2 1 2 1 2 2 2 1 


Within cluster sum of squares by cluster:

[1] 20.8  8.0

 (between_SS / total_SS =  74.5 %)


Available components:


[1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss" "betweenss"   

[7] "size"         "iter"         "ifault"      

맨 아래의 Available components를 통해 값들에 접근이 가능합니다.



 plot( round(km$center), col = km$center, pch = 22, bg = "dark blue", 

       xlim = range(0:10), ylim = range(0:10) )

  분류가 된 k개의 군집의 중앙값을 출력합니다.

 plot( round(km$center), col = km$center, pch = 22, bg = "dark blue", 

      xlim = range(0:10), ylim = range(0:10) )

 par(new = T) 

 plot(data, col = km$cluster+1  ,xlim = range(0:10), ylim = range(0:10))


 원래 데이터를 위의 그래프에 합쳐서 출력하면 구분된 군집을 시각화할 수 있습니다.




이렇게 나오면 끝!

동그라미 하나를 그려주고 싶은 욕심이 드네요...


*아이티윌 유연수 선생님의 강의를 요약한 포스팅입니다.








반응형
Posted by JoeSung
,

[?]

가끔씩 패키지들을 너무많이 다운받으면 

패키지간에 충돌을 일으켜서 실행이 안되곤 합니다.

detach를 활용해서 패키지를 하나씩 언로드 할수도 있는것 같지만

어떤 패키지에서 문제가 일어나는지 모를 때는 한번 밀어버리고 싶은데

R-Blogger에서 좋은 스크립트를 발견!


[코드]


# create a list of all installed packages

ip <- as.data.frame(installed.packages())

head(ip)

# if you use MRO, make sure that no packages in this library will be removed

ip <- subset(ip, !grepl("MRO", ip$LibPath))

# we don't want to remove base or recommended packages either\

ip <- ip[!(ip[,"Priority"] %in% c("base", "recommended")),]

# determine the library where the packages are installed

path.lib <- unique(ip$LibPath)

# create a vector with all the names of the packages you want to remove

pkgs.to.remove <- ip[,1]

head(pkgs.to.remove)

# remove the packages

sapply(pkgs.to.remove, remove.packages, lib = path.lib)



출처 :  R-Blogger

https://www.r-bloggers.com/how-to-remove-all-user-installed-packages-in-r/

반응형
Posted by JoeSung
,




head(cars)

attach(cars)


# 1 plot


plot(dist~speed, data = cars)


# 2 lm() ~ abline()


m3 <- lm(dist~speed, cars)

abline(m3, col = "red")


# 3 draw the residual line by lines & sapply


yhat <- predict(m3, speed = speed)

cbind( dist, yhat )


join <- function(i)

lines( c(speed[i], speed[i]), c(dist[i], yhat[i]), col="green")

sapply(1:50, join)

반응형
Posted by JoeSung
,



Q. 

plot차트는 만들었는데, 회귀직선을 어떻게 추가할까요?





A.

abline()을 활용합니다.



m <- lm(distress_ct ~ temperature, launch)


회귀 결과를 변수에 담고



abline(m)


그냥 abline 함수 안에  넣어주면 끝!


색상을 추가하고 싶다면,


abline(m, col = "red") 이런식으로 col 파라미터에 원하는 색상값을 넣어주면됩니다.










반응형
Posted by JoeSung
,


선형회귀의 기본 가정 4가지


1) X의 각 값 x에 대하여 Y 값들로 구성되는 한 확률 분포가 대응된다. 이것을 x에 대응되는 Y의 부분모집단이라 하고 이 부분 모집단은 정규분포를 따른다. 


2) 이 부분 모집단의 분산은 모두 같다,


3) Y의 부분 모집단의 평균은 모두 동일 직선 위에 존재한다. 이것은 X = x 에서의 Y의 기대값 E[Y|X = x], 즉 평균은 y축 절편이 B0이고 기울기가 B1인 직선위에 있음을 의미한다.


4) y의 값은 확률적으로 서로 독립이다.








편미분 : 

다변수함수(多變數函數)에 대하여, 그 중 하나의 변수에 주목하고 나머지 변수의 값을 고정시켜 놓고 그 변수로 미분하는 일을 가리킨다.


http://terms.naver.com/entry.nhn?docId=1157964&cid=40942&categoryId=32220

반응형
Posted by JoeSung
,


Q.  

data.frame 의 column 갯수를 가져오려면 어떻게 해야할까


A.

dim 을 사용하여 2번째 밸류값을 반환하면 된다.

dim 은 row의 갯수와 column의 갯수를 반환



>dim(table2)

[1] 5342   23


> dim(table2)[1]

[1] 5342


> dim(table2)[2]

[1] 23






반응형
Posted by JoeSung
,



통계

# 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
,