제2회 빅데이터분석기사 실기 문제를 대략적으로 복원해 보는 중으로
문제에 대한 설명과 답이 틀릴 수 도 있어
추후 정확환 답이나 문제에 대해 추가 업데이트 예정
대략적인 내용만 봐주세요 ㅎㅎㅎ....
답이 틀렸거나 정확한 답을 아시거나 하시면 알려주시면 감사하겠습니다^^
[빅데이터분석기사 단답형 복원 중]
데이터 전처리 단계에서 발견하는 값으로 기존 값들과 상이한 값??
답 : 이상치
정답지, label이 없다, 대표적분석에 군집분석, 인공신경망, 해당 기법을 뭐라하는가??
답 : 비지도학습
모델을 생성시 사용자가 직접 변경해줘야하는 것이 무엇일까요??
답 : 파라미터 -> 하이퍼파라미터
마지막 은닉층2개의 값 [02, -03] , 가중치 [03, 0.1] , bias -0.05, 출력층 1개
f(x) = x , if x >= 0 , 그외 -1 일때
답 : -1
결측값을 대치 하는 방법 중 평균값을 사용해 대치하는 방법은??
답 : 평균대치법
변수 선택 방법 중 모든 변수를 활용해 하나씩 제거해 가는 방법은??
답 : 후진제거법
모델의 학습에서는 정확도가 높게 나오지만 테스트 셋에서는 정확도가 낮게 나오는 것을 무엇이라하는가??
답 : 오버피팅
앙상블 기법 중 부스팅 종류, 약학습기??
답 : 랜덤포레스트 -> xgboost or gbm(Gradient boosting)
모델 학습시 잘못된 결과에 대해 가중치를 반영해 모델을 생성하는 방법??
답 : 베깅 -> 부스팅
TPR , FPR 로 그려서 확인하는 곡선은
답 : ROC곡선
[빅데이터분석기사 작업형1 복원 중]
문제 1 :
보스턴 데이터 범죄율 컬럼 top10 중 10번째 범죄율 값으로 1~10위의 범죄율 값을 변경 후 AGE 변수 80이상의 범죄율 평균 산출
정답 : 5.759387
< 작업형1 - 1번 R 풀이 >
# Boston 데이터 불러오기
library(MASS)
data(Boston)
# 보스턴(Boston)시의 주택 가격에 대한 데이터임
# --- 풀이 과정 --- #
# step 0) 데이터 확인
# step 1) 범죄율( CRIM 변수 ) 상위 10개 지역 찾기(정렬)
# step 2) 상위 10개 지역의 범죄율 값을 10번째에 해당하는 범죄율값으로 변경
# step 3) 범죄율이 변경된 전체 데이터에서 AGE 변수가 80 이상 데이터 추출
# step 4) AGE 변수가 80 이상 데이터의 범죄율 CRIM 변수의 평균값 산출
##### step 0) 데이터 확인 #####
### Boston 데이터 확인
str(Boston)
# data.frame': 506 obs. of 14 variables:
# $ crim : num 0.00632 0.02731 0.02729 0.03237 0.06905 ...
# $ zn : num 18 0 0 0 0 0 12.5 12.5 12.5 12.5 ...
# $ indus : num 2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
# $ chas : int 0 0 0 0 0 0 0 0 0 0 ...
# $ nox : num 0.538 0.469 0.469 0.458 0.458 0.458 0.524 0.524 0.524 0.524 ...
# $ rm : num 6.58 6.42 7.18 7 7.15 ...
# $ age : num 65.2 78.9 61.1 45.8 54.2 58.7 66.6 96.1 100 85.9 ...
# $ dis : num 4.09 4.97 4.97 6.06 6.06 ...
# $ rad : int 1 2 2 3 3 3 5 5 5 5 ...
# $ tax : num 296 242 242 222 222 222 311 311 311 311 ...
# $ ptratio: num 15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ...
# $ black : num 397 397 393 395 397 ...
# $ lstat : num 4.98 9.14 4.03 2.94 5.33 ...
# $ medv : num 24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
##### step 1) crim 변수 값이 높은순으로 정렬 #####
### 데이터 상위 6개 확인
head(Boston)
# crim zn indus chas nox rm age dis rad tax ptratio black lstat medv
# 1 0.00632 18 2.31 0 0.538 6.575 65.2 4.0900 1 296 15.3 396.90 4.98 24.0
# 2 0.02731 0 7.07 0 0.469 6.421 78.9 4.9671 2 242 17.8 396.90 9.14 21.6
# 3 0.02729 0 7.07 0 0.469 7.185 61.1 4.9671 2 242 17.8 392.83 4.03 34.7
# 4 0.03237 0 2.18 0 0.458 6.998 45.8 6.0622 3 222 18.7 394.63 2.94 33.4
# 5 0.06905 0 2.18 0 0.458 7.147 54.2 6.0622 3 222 18.7 396.90 5.33 36.2
# 6 0.02985 0 2.18 0 0.458 6.430 58.7 6.0622 3 222 18.7 394.12 5.21 28.7
### 데이터 정렬
Boston <- Boston[order(-Boston$"crim"),]
head(Boston)
# crim zn indus chas nox rm age dis rad tax ptratio black lstat medv
# 381 88.9762 0 18.1 0 0.671 6.968 91.9 1.4165 24 666 20.2 396.90 17.21 10.4
# 419 73.5341 0 18.1 0 0.679 5.957 100.0 1.8026 24 666 20.2 16.45 20.62 8.8
# 406 67.9208 0 18.1 0 0.693 5.683 100.0 1.4254 24 666 20.2 384.97 22.98 5.0
# 411 51.1358 0 18.1 0 0.597 5.757 100.0 1.4130 24 666 20.2 2.60 10.11 15.0
# 415 45.7461 0 18.1 0 0.693 4.519 100.0 1.6582 24 666 20.2 88.27 36.98 7.0
# 405 41.5292 0 18.1 0 0.693 5.531 85.4 1.6074 24 666 20.2 329.46 27.38 8.5
##### step 2) crim 변수 값 상위 10개를 crim 변수 값 중 10번쨰 값으로 변경 #####
### 상위 10개 확인
print(Boston$"crim"[c(1:10)])
# [1] 88.9762 73.5341 67.9208 51.1358 45.7461 41.5292 38.3518 37.6619 28.6558 25.9406
### 상위 10개 값 변경
Boston$"crim"[c(1:10)] <- Boston$"crim"[c(10)]
print(Boston$"crim"[c(1:10)])
# [1] 25.9406 25.9406 25.9406 25.9406 25.9406 25.9406 25.9406 25.9406 25.9406 25.9406
##### step 3) 범죄율이 변경된 전체 데이터에서 AGE 변수가 80 이상 데이터 추출 #####
### age 80 이상 데이터 추출
Boston_age80 <- Boston[Boston$"age" >= 80,]
dim(Boston_age80) # 240 , 14
##### step 4) AGE 변수가 80 이상 데이터의 범죄율 CRIM 변수의 평균값 산출 #####
result <- mean(Boston_age80$"crim")
print(result) # 5.759387
### 정답 점검용
data(Boston)
chk_data <- Boston[Boston$"age" >= 80, ]
chk_mean <- mean(chk_data$"crim")
print(chk_mean) # 6.710741
문제 2 :
주어진 데이터 첫번째 행 부터 순서대로 80%까지의 데이터를 추출 후 'total_bedrooms' 변수의 결측값(NA)을 'total_bedrooms' 변수의 중앙값으로 대체하고 대체 전의 'total_bedrooms' 변수 표준편차값과 대체 후의 'total_bedrooms' 변수 표준편차 값 산출
정답 : 1.975147
데이터 : 캐글 캘리포니아 주택 데이터 세트 (https://www.kaggle.com/harrywang/housing?select=housing.csv)
참고 경로 : https://www.kaggle.com/camnugent/introduction-to-machine-learning-in-r-tutorial
< 작업형1 - 2번 R 풀이 >
# 데이터 : 캐글 캘리포니아 주택 데이터 세트
# --- 풀이 과정 --- #
# step 0) housing 데이터 불러오기
# step 1) 첫번째 행 부터 순서대로 80% 데이터 추
# step 2) total_bedrooms 변수 결측값을 대체 전 표준편차 산출
# step 3) 80% 추출 데이터 total_bedrooms 결측 제외 후 중앙값 산출
# step 4) total_bedrooms 변수 결측값을 중앙값으로 대체
# step 5) total_bedrooms 변수 결측값을 대체 후 표준편차 산출
# step 6) 대체 전과 대체 후의 표준편차 차이
##### step 0) housing 데이터 불러오기 #####
### 데이터 로드
housing = read.csv('../housing.csv')
### 데이터 확인
str(housing)
# 'data.frame': 20640 obs. of 10 variables:
# $ longitude : num -122 -122 -122 -122 -122 ...
# $ latitude : num 37.9 37.9 37.9 37.9 37.9 ...
# $ housing_median_age: num 41 21 52 52 52 52 52 52 42 52 ...
# $ total_rooms : num 880 7099 1467 1274 1627 ...
# $ total_bedrooms : num 129 1106 190 235 280 ...
# $ population : num 322 2401 496 558 565 ...
# $ households : num 126 1138 177 219 259 ...
# $ median_income : num 8.33 8.3 7.26 5.64 3.85 ...
# $ median_house_value: num 452600 358500 352100 341300 342200 ...
# $ ocean_proximity : chr "NEAR BAY" "NEAR BAY" "NEAR BAY" "NEAR BAY" ...
##### step 1) 첫번째 행 부터 순서대로 80% 데이터 추출 #####
### 데이터 추출
rownum_end <- nrow(housing) * 0.8 # 16512
housing <- housing[c(1:rownum_end),] # 1 ~ 16512 데이터 추출
### 데이터 확인
str(housing)
# 'data.frame': 16512 obs. of 10 variables:
# $ longitude : num -122 -122 -122 -122 -122 ...
# $ latitude : num 37.9 37.9 37.9 37.9 37.9 ...
# $ housing_median_age: num 41 21 52 52 52 52 52 52 42 52 ...
# $ total_rooms : num 880 7099 1467 1274 1627 ...
# $ total_bedrooms : num 129 1106 190 235 280 ...
# $ population : num 322 2401 496 558 565 ...
# $ households : num 126 1138 177 219 259 ...
# $ median_income : num 8.33 8.3 7.26 5.64 3.85 ...
# $ median_house_value: num 452600 358500 352100 341300 342200 ...
# $ ocean_proximity : chr "NEAR BAY" "NEAR BAY" "NEAR BAY" "NEAR BAY" ...
### 데이터 결측 확인
summary(housing)
# longitude latitude housing_median_age total_rooms total_bedrooms population households median_income median_house_value ocean_proximity
# Min. :-124.3 Min. :32.54 Min. : 1.00 Min. : 2 Min. : 1.0 Min. : 3 Min. : 1.0 Min. : 0.4999 Min. : 14999 Length:16512
# 1st Qu.:-121.2 1st Qu.:33.87 1st Qu.:19.00 1st Qu.: 1439 1st Qu.: 297.0 1st Qu.: 792 1st Qu.: 280.0 1st Qu.: 2.5250 1st Qu.:118300 Class :character
# Median :-118.3 Median :34.10 Median :30.00 Median : 2105 Median : 436.0 Median : 1168 Median : 410.0 Median : 3.4750 Median :173800 Mode :character
# Mean :-119.1 Mean :35.25 Mean :29.28 Mean : 2637 Mean : 544.2 Mean : 1438 Mean : 503.6 Mean : 3.8005 Mean :202067
# 3rd Qu.:-117.9 3rd Qu.:37.69 3rd Qu.:38.00 3rd Qu.: 3109 3rd Qu.: 648.0 3rd Qu.: 1727 3rd Qu.: 604.0 3rd Qu.: 4.6389 3rd Qu.:253600
# Max. :-114.3 Max. :41.95 Max. :52.00 Max. :39320 Max. :6445.0 Max. :35682 Max. :6082.0 Max. :15.0001 Max. :500001
# NA's :159
##### step 2) total_bedrooms 변수 결측값을 대체 전 표준편차 산출 #####
tb_bf_sd <- sd(housing$"total_bedrooms", na.rm = TRUE) # 435.9006
##### step 3) 80% 추출 데이터 total_bedrooms 결측 제외 후 중앙값 산출 #####
tb_median <- median(housing$"total_bedrooms", na.rm = TRUE) # 436
##### step 4) total_bedrooms 변수 결측값을 중앙값으로 대체 #####
housing$"total_bedrooms"[is.na(housing$"total_bedrooms")] <- tb_median
##### step 5) total_bedrooms 변수 결측값을 대체 후 표준편차 산출 #####
tb_af_sd <- sd(housing$"total_bedrooms") # 433.9254
##### step 6) 대체 전과 대체 후의 표준편차 차이 #####
result <- tb_bf_sd - tb_af_sd
print(result) # 1.975147
##### check : 원본데이터의 total_bedrooms 표준편차#####
housing = read.csv('../housing.csv')
chk_sd <- sd(housing$"total_bedrooms", na.rm = TRUE) # 421.3851
문제 3 : 데이터의 특정컬럼의 이상치(이상치 기준 : 평균 + (표준편차 * 1.5) )를 찾아 이상치들의 합 산출
데이터 : 뭔가 넥플릭스 데이터 같은 데이터임 (건수가 기억안남)
풀이 :
평균 60, 표준편차 30, 표준편차 *1.5 = 45
105이상? 220 건
19.5이하? 317 건
정답 : 약 32000?
< 작업형1 - 3번 R 풀이 >
# --- 풀이 과정 --- #
# 작업중 #
[빅데이터분석기사 작업형2 복원 중]
문제 : 고객 구매 데이터를 사용해서 고객이 주문한 물품이 제 시간에 도착여부(Reached.on.Time_Y.N) 예측
데이터 : tranin 데이터와 , 정답 label이 없는 test 데이터 제공
데이터 경로 : ( https://www.kaggle.com/prachi13/customer-analytics?select=Train.csv )
답 : 이건 개인마다 다른 풀이가 있음
< 작업형2 R 풀이 >
# --- 풀이 과정 --- #
# 작업중 #
* 데이터를 불러오는 코드를 제공해주었으며, 제출용 write.csv 예시를 주석처리하여 제공해줌, 패키지의 경우 전체 패키지 리스트를 출력해서 볼수 있는 코드를 시험 알리창('종모양')에 제공
'빅데이터분석기사' 카테고리의 다른 글
빅데이터분석기사 실기 작업형2 체험환경 R코드 실행 테스트 (0) | 2021.06.18 |
---|---|
빅데이터분석기사 실기 시험안내 정리 (0) | 2021.06.16 |
댓글