서수 데이터를 출력하도록 신경망을 설정하는 방법은 무엇입니까?


20

출력 변수가 서수 인 것을 예측하도록 신경망을 설정했습니다. 가능한 세 가지 출력 A <B <C를 사용하여 아래에 설명합니다.

신경망을 사용하여 범주 형 데이터를 출력하는 방법은 매우 분명합니다. 출력은 마지막 (보통 완전히 연결된) 레이어의 소프트 맥스이며 범주 당 하나씩이며 예측 된 범주는 가장 큰 출력값을 가진 레이어입니다 (이는 많은 인기있는 모델의 기본값). 서수 값에 대해 동일한 설정을 사용하고 있습니다. 그러나이 경우 출력이 의미가없는 경우가 많습니다. 예를 들어 A 및 C의 네트워크 출력은 높지만 B는 낮습니다. 서수 값에는 적합하지 않습니다.

이것에 대한 하나의 아이디어가 있는데, 이는 출력을 A의 경우 1 0, B의 경우 1 0 및 C의 경우 1 1과 비교하여 손실을 계산하는 것입니다. 정확한 임계 값은 나중에 다른 분류기를 사용하여 조정할 수 있습니다 (예 : 베이지안) ) 그러나 이것은 특정 간격 스케일을 처방하지 않고 입력 순서의 필수 아이디어를 포착하는 것으로 보입니다.

이 문제를 해결하는 표준 방법은 무엇입니까? 다양한 접근 방식의 장단점을 설명하는 연구 나 참고 자료가 있습니까?


1
나는 "논리적 로지스틱 회귀"에 대한 구글에서 많은 흥미로운 히트를 얻었다. 예 : 이 논문
shadowtalker

@ ssdecontrol : 재미있는. 나는 그것을 시도했다; 결과는 가장 높은 값으로 하나의 출력을 선택하는 것보다 낫지 만 다른 방법 (순진한 베이지안 등)보다 약간 나쁩니다. 이것은 유용하지만 네트워크를 훈련시키는 데 도움이되지는 않지만 사실 후에 약간의 결과 만 개선합니다 ... 적어도 네트워크 훈련에 도움이되는 방법을 보지 못합니다.
Alex I

어떤 "그것"을 시도 했습니까? 내 유일한 요점은 검색 엔진이 예상보다 도움이 될 수 있다는 것입니다
shadowtalker

또한 "예를 들어 A 및 C의 네트워크 출력은 높지만 B는 낮습니다. 이는 타당하지 않습니다"라는 의미를 이해하고 있는지 잘 모르겠습니다. 당신은 당신이 많은 As와 C를 예상하지만 B는 적다는 것을 의미합니까? 당신이 그렇게 생각해야 할 실질적이거나 도메인에 특정한 이유가 없다면 왜 그것이 타당 할 수
없는지 모르겠습니다

또한 "1 1 0"과 같은 결과를 얻을 수있는 방법을 모르겠습니다. 여기에 용어에 대해 약간의 혼동이 있다고 생각합니다. 누적 서수 결과 를 설명하고 있습니까? 누적 로짓 모델에서와 같이?
shadowtalker

답변:


15

KK

그러나 일부 사람들은 귀하의 서수 클래스에 대한 영리한 인코딩을 발명했습니다 (이 stackoverflow 답변 참조 ). 일종의 원-핫 인코딩입니다.

  • 클래스 1은 [0 0 0 ...]으로 표시됩니다.

  • 클래스 2는 [100 0 ...]으로 표시됩니다.

  • 클래스 3은 [1 0 0 ...]으로 표시됩니다.

즉, 각 뉴런은 확률을 예측하고 있습니다 P(y^<k)np.sum

이 전략은 Frank and Hall 의 앙상블과 비슷하며 이것이 첫 출판 이라고 생각합니다 .


이 접근법은 훨씬 더 매력적입니다. 예측 모드를 사용하여이를 분류 문제로 바꾸는 것은 좋은 생각이 아님을 인식하는 것이 중요합니다. 예측 된 누적 확률은 예측 된 개별 확률로 전환 될 수 있으므로, 최종 결정을위한 유틸리티 기능은 유틸리티가 알려져있을 때 훨씬 나중에 삽입 될 수 있습니다. fharrell.com/post/classification을 참조하십시오 .
Frank Harrell

1
@RicardoCruz-흠, 그것은 내가 제안한 것과 비슷하게 들립니다 : "A는 1 0, B는 1 1 0, C는 1 1 1". 작동한다는 것을 알고 반갑습니다! 또한 2007 년의 논문이었던 와우,이 아이디어는 오랫동안 주변에있었습니다
Alex I

그래, 나는 그 종이를 발견했을 때 나 자신에 놀랐다!
Ricardo Cruz

참고 : "순서 회귀 분석에 대한 신경망 접근 방식"에 설명 된대로 : "... 출력 노드에 독립적 인 시그 모이 드 함수를 사용해도 단조로운 관계 (o1> = o2> = ....> = oK)가 보장되지 않습니다. "필요하지는 않지만 예측에 바람직하다" 따라서 예측 시간에 "np.sum"을 수행하는 것이 최선의 방법은 아닙니다.
sccrthlt

1
위의 내 의견 편집 : 신경망의 출력에서 ​​"np.sum"을 수행하는 것은 잘못된 것입니다. 출력 벡터가 [011010] 인 경우 다음 상황이 발생할 수 있습니다. 이 벡터에서 합산을 수행하면 실제로 신경망이 확실하지 않은 경우 2의 클래스 예측이 생성됩니다.
sccrthlt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.