-2

다음 변수와 함께 R에 데이터 세트 (csv 파일)가 있습니다. - 날짜 (m/d/y) - 컴퓨터 번호 (예 : "XTR004") - 오류 0 또는 1) - 특성 1 (INT) - 속성 2 (INT) - 속성 3 (INT)시계열 데이터에 대한 오류 예측

enter image description here

는 I 데이터 6 개월있다. 매일 날짜, 기계 번호, 기계의 실패 여부 및 실패와 관련된 3 가지 속성을 표시하는 로그 (1 행)가 작성됩니다. 시스템이 실패 할 때 (실패 = 1), 다음 날 새 로그 (행)가 작성되지 않습니다. 즉, 첫 번째 날짜에는 많은 행이 있고 마지막 행에는 작은 행이 있습니다.

목표 : 이러한 3 가지 특성을 사용하여 실패 (Rstudio 사용)를 예측하고 싶습니다. 내가 사용하고자하는 모델은 1) 로지스틱 회귀, 2) 임의의 숲, 3) 신경 네트워크입니다.

문제점 : 교육 및 검증 세트 (80/20 또는 교차 검증)로 데이터를 분할하는 방법에 대한 조언이있는 사람이 있습니까? 그렇다면이 경우에 위의 모델을 사용하십시오. 날짜와 기계 번호는 함께 '기본 키'로 볼 수 있습니다. 따라서 다음을 수행 할 것인지 확실하지 않습니다. - 해당 시스템과 관련된 모든 로그가있는 두 그룹의 시스템을 만듭니다. - 특정 날짜를 사용하여 분할 된 두 그룹을 만듭니다. 이는 오래 살고있는 특정 시스템이 두 시스템 모두에 속함을 의미합니다. 그룹)

첫 번째 전략이 더 효과적이라고 생각하지만 데이터를 분할하는 방법을 찾지 못했습니다 (80/20 한 번 분할 또는 5 또는 10 배 교차 유효성 검사 사용). 기계 번호에 따라 데이터를 그룹화해야한다고 가정합니까? 누구든지 샘플 코드를 볼 수있는 예제가 있습니까?

고맙습니다.

+0

대표적인 데이터 샘플을 제공하거나 구조를 나타내는 것으로 생각되는 가짜 데이터를 제공해 주셔야합니다. 또한 데이터 집합을 열차/테스트로 분할하는 방법에 대한 온라인 예제가 많이 있습니다. – AntoniosK

+0

@AntoniosK 의견을 보내 주셔서 감사합니다. 아주 작은 샘플의 스크린 샷을 포함 시켰습니다. 데이터를 분할하는 데 많은 리소스가 필요했지만 데이터 세트에 '날짜'열이 포함 된 경우이를 수행하는 방법을 찾지 못했습니다. 내가 찾은 유일한 리소스는 데이터 세트를 특정 날짜를 기준으로 두 개로 나눕니다 (따라서 교육 세트는 해당 날짜 이전이며 유효성 검사 세트는 그 날짜 이후 임). – dhd

+0

개인적으로 기계 번호 열을 사용하여 데이터를 분할했습니다. 그런 식으로 내 훈련 및 테스트 데이터는 모든 특정 날짜의 기계 이름으로 구성됩니다. 훈련 및 기타 테스트 데이터로 특정 컴퓨터의 일부 행 (일)을 갖고 싶지 않습니다. 예를 들어, 기계 'XTR004'가 무작위로 학습 데이터에 들어 오면 모든 행이 학습 데이터로 이동합니다. 그게 합리적이라고 생각하니? 그것을하는 방법을 알고 있습니까? – AntoniosK

답변

0

원본 데이터 집합에있는 (고유 한) 기계 이름을 기반으로하는 열차/테스트 분할 프로세스입니다. 당신이 어떤 정보를 손실없이 분할을 수행하기 때문에

# example dataset 
df = data.frame(Date = c(rep("03/20/2001", 4), rep("03/21/2001", 4)), 
       Machine = rep(c("XTR003","XTR004","XTR005","XTR006"), 2), 
       Attr1 = c(0,0,10,5,0,4,0,8), 
       Failure = c(0,1,0,0,1,0,0,1), 
       stringsAsFactors = F) 

# check how it looks like 
df 

#   Date Machine Attr1 Failure 
# 1 03/20/2001 XTR003  0  0 
# 2 03/20/2001 XTR004  0  1 
# 3 03/20/2001 XTR005 10  0 
# 4 03/20/2001 XTR006  5  0 
# 5 03/21/2001 XTR003  0  1 
# 6 03/21/2001 XTR004  4  0 
# 7 03/21/2001 XTR005  0  0 
# 8 03/21/2001 XTR006  8  1 

# create a vector of unique machine names 
machine_vec = unique(df$Machine) 

# calculate number of unique machines in your train dataset 
# here we want 70% of machines to be in the train dataset 
# (this is NOT the number of rows of your train dataset, but the number of unique machines) 
N_train = round(length(machine_vec) * 0.7) 

# randomly select which machine names will create your train dataset 
train_machines = sample(machine_vec, N_train) 

# select corresponding rows for your train and test dataset 
# (all rows of the machines selected previously will form the train data) 
df_train = df[df$Machine %in% train_machines,] 
df_test = df[!df$Machine %in% train_machines,] 

은 결국 기차와 테스트 데이터 세트의 행의 수는 원래 데이터 세트의 행의 수와 동일합니다. 또한 기계는 열차 데이터 세트에만 포함되거나 테스트 데이터 세트에만 속해야합니다. 그 이유는 그것이 분할의 철학이기 때문입니다.