2016-08-01

R neuralnet 라이브러리 사용시 유의사항

요즘 프로젝트를 하면서 R의 neuralnet 패키지를 이용해서 모델을 돌리고 있다. 이게 꽤 속도도 빠르고 전처리 등 많은 부분에 자료가 많아서 잘 사용하고 있는데, 문제점도 있어서 주의가 필요하다. 특히 R 특성상 에러메시지를 식별하기 어려운 부분도 있어서 경험치적인 내용이 필요하다.

1. 입력변수가 모두 0인 경우 처리가 되지 않는다.
   입력변수가 null인 경우 처리가 되지 않는다.
에러 메시지 : Error in x - y : non-conformable arrays

기본적으로 neuralnet의 입력층에 있는 데이터는 0이 아닌 값을 가지는 것이 일반적이다. Normalization 여부와 관계없이 모두 0인 입력이 들어오는 경우, 입력변수가 null값을 가질 경우, 위의 에러 메시지가 나온다.
이유는 데이터 전처리에서 normalize 함수 등 자체 제작 함수를 사용할 때 0으로 나누는 등 null값에 대한 처리가 미흡할 때 생긴다.

R studio의 경우에는 null값이 존재하는 경우에도 neuralnet이 처리되어 처리값이 나오기는 하는데, 이를 신뢰할 수 없다.
이는 입력데이터를 바꾸어도 동일한 값이 나오는 것을 관찰하면 알게 된다.

해결방법으로는 해당 변수를 neuralnet 변수목록에서 지우면 된다.
또는 전처리 과정에서 null값을 0으로 바꾸어 주면 된다. (i-STREAM의 fillNull 이용)

#### 2016-08-22 추가
null값이 아닌 0값인 컬럼을 neuralnet에 입력해도 결과가 나온다.
문제는 0 컬럼 추가시에도 weight가 존재한다는 것인데, 이를 신뢰하기 어렵다는 점이다.
아마도 variation function이 -1 ~ 1의 값을 가진다는 가정 때문일까?

No comments:

Post a Comment