2016-06-20 5 views
1

에너지 소비 기능을 사용하여 세대 분류를위한 연결 네트워크를 제공하려는 첫 번째 시도를 작성했습니다. 지금까지 나는 그것을 달릴 수 있었다. 그러나 출력은 의심 스럽다. 그래서 당신은 그것이 단일 가구가 아닌지를 예측하기 위해 18 가지 기능 (어쩌면 많은 기능)을 사용하고 있음을 알 수 있습니다.신경 회로망 정확도가 낮습니다

for(i in names(full_data)){ 
    x <- as.numeric(full_data[,i]) 
    full_data[,i] <- (x-min(x)/max(x)-min(x)) 
} 
:
net.nn <- neuralnet(single 
      ~ c_day 
      + c_weekend 
      + c_weekday 
      + c_evening 
      + c_morning 
      + c_night 
      + c_noon 
      + c_max 
      + c_min 
      + r_mean_max 
      + r_min_mean 
      + r_night_day 
      + r_morning_noon 
      + r_evening_noon 
      + t_above_1kw 
      + t_above_2kw 
      + t_above_mean 
      + t_daily_max 
      ,train, hidden=15, threshold=0.01,linear.output=F) 

1 repetition was calculated. 

     Error Reached Threshold Steps 
1 126.3425379 0.009899229932 4091 

내가 최소 - 최대 정규화 식을 사용하기 전에 데이터를 정규화 :

c_day  c_weekend c_evening c_morning c_night c_noon c_max c_min r_mean_max r_min_mean r_night_day r_morning_noon 
12  14  1826   9  765  3 447  2  878   0  7338    4 
r_evening_noon t_above_1kw t_above_2kw t_above_mean t_daily_max single 
3424   1   695   0  174319075712881  1 

내 신경 네트워크를 사용하여 이러한 매개 변수 :

난 3488 이런 행있어

나는 3488 개의 데이터 행을 얻었고 훈련과 테스트 세트로 나누었다. 그것을 인쇄 할 때

predict <- nn$net.result 
cleanoutput <- cbind(predict,full_data$single[half:3488]) 
colnames(cleanoutput) <- c("predicted","actual") 

그래서,이 내 분류이다 결과를 비교하기 위해 열 -

half <- nrow(full_data)/2 
train <- full_data[1:half,] 
test <- full_data[half:3488,] 

net.results <- compute(net.nn,test) 
nn$net.result 

는 I의 예측 방법을 이용하여 실제 "하나 [예/아니오]"에 바인딩 처음 10 행에 대한 결과 :

  predicted actual 
1701 0.1661093405  0 
1702 0.1317067578  0 
1703 0.1677147708  1 
1704 0.2051188618  1 
1705 0.2013035634  0 
1706 0.2088726723  0 
1707 0.2683753128  1 
1708 0.1661093405  0 
1709 0.2385537285  1 
1710 0.1257108821  0 

를 나는 바로 그것을 이해한다면 내가 예측 결과를 반올림 때, 그것이 있어야 중 하나를 0 또는 1 만 항상 0 인 끝!

잘못된 매개 변수를 사용하고 있습니까? 내 데이터가 단순히 nn 예측에 적합하지 않습니까? 정상화가 잘못 되었습니까?

+0

힌트를 보내 주셔서 감사합니다. 방금 말한대로 평균 표준 편차 정규화를 시도했는데 오류를 ~ 25까지 낮추었습니다. – MayaK

+0

좋은 오류가 발생했습니다. 이제 교육 및 테스트 데이터 세트의 오류를 비교하여 지나친지 확인하십시오. – abhiieor

답변

1

이것은 모델 성능이 여전히 좋지 않음을 의미합니다. 튜닝 후 좋은 모델 성능에 도달하면 올바른 예상 동작을 얻어야합니다. 신경망 기술은 서로 다른 열 사이의 눈금 차이가 매우 크기 때문에 데이터 [평균 = 0 표준 = 1]의 표준화가 좋은 방법입니다. OP scale()에 의해 지적 된대로 작업을 수행합니다.

1

전체 데이터에 scale(full_data)을 사용하면 트릭을 만들 수 있습니다. 이제 데이터는 표준 편차를 통해 정규화되며 결과는 훨씬 안정적으로 보입니다.

관련 문제