2010-02-19 8 views
3

저는 단어가 word_i이고 가중치가 weight[i,j], 인 거대한 데이터 세트를 가지고 있습니다. 여기서 weight는 단어 간의 "연결 강도"입니다.알고리즘 : 데이터 이진화

이 데이터를 이진화하고 싶습니다만, 단어의 코드 간 해밍 거리가이 가중치와 관련이있는 방식으로 각 단어의 이진 코드를 만드는 기존 알고리즘이 있는지 알고 싶습니다.

추가됨 :
내가 일하고 문제는 그 단어 사이에 연결을 만들기 위해 신경망이나 SVM을 가르치려고 할 것입니다. 이것이 바로 데이터를 이진화하기로 결정한 이유입니다. Markov 모델이나 그래프 만 사용하고 싶지 않은 이유를 묻지 말고 시도해 보았습니다. 신경망과 비교하고 싶습니다.

그래서, 주어진 단어에 내 NN을 원하는

  1. "A" "난 그냥 치화을 시도했습니다

  2. 가장 가까운 연결이나 설정 단어와 그 확률을 반환 및 확인 ab "를 입력하고 선호 답변으로서의 가중치를 사용하면이 작업이 잘못되었습니다.

  3. 임계 값 (가중치)을 1 비트 더 변경하려고했습니다. 이 임계 값이 작을수록 더 많은 비트가 필요합니다.

  4. 상황이 있습니다. a-> b w1; b-> a2; w1 >> w2이므로 방향이 중요합니다.

+0

얼마나 강한 상관 관계가 있습니까? 가능하면 이진 코드가 장황한 코드 일 필요가 있습니까? 왜 이런 짓을하는? –

+1

질문을 명확히하십시오. 바이너리 화 == 직렬화? 해밍 거리를 계산하는 알고리즘이 필요합니까? 문제가 정확히 무엇입니까? –

+0

당신이 말한 것으로부터, 해밍 거리가 무게와 같도록 이진 문자열로 각 단어를 대체하고 싶습니다. 옳은? 이것은 체중이 정수라는 것을 암시합니다. –

답변

1

당신이 할 수있는 것은 고정 길이의 토폴로지 (예 : N 비트)로 구성된 자체 구성 맵 (SOM)을 사용하는 것입니다. N = 8이면 SOM의 모든 셀은 정확히 8 개의 이웃 (1 비트가 뒤집힌 위치)입니다. 이제 K [사전] 단어가있는 경우 모든 [사전] 단어를 0,1 사이의 실수의 벡터로 인코딩 할 수 있으므로 i 번째 단어의 i 번째 요소는 1로 설정되고 다른 단어는 0으로 설정됩니다. 당신에게 SOM 알고리즘을 실행하기위한 측정 거리를주는

i,j : ai * bj * distance(ai, bj) 

위에 합산하여 임의의 두 벡터 A1 및 B1 ... AK ... BK 간의 "거리". SOM이 안정화되면 메트릭에서 서로 가깝게있는 [사전] 단어가지도의 토폴로지에서 서로 가깝게되어 인코딩을 쉽게 [이진] 단어로 가져옵니다. 맵이 단어가보다 더 많은 세포를 가지고 있어야

주 즉 2 ** N> K.

물론이 대답은 자기 조직화지도와 배경을 가정합니다. http://en.wikipedia.org/wiki/Self-organizing_map

+0

>> 이제 K [사전] 단어가있는 경우 모든 [사전] 단어를 0-1 사이의 실수의 벡터로 인코딩하여 i 번째 단어의 i 번째 요소가 1로 설정되고 다른 숫자는 0으로 설정됩니다. 비트 수 == 단어 수? 비트 수 = log (N), N 개의 dict 단어를 갖는 일반 이진 코딩과 같이 인코딩하는 것이 더 좋지 않습니까? 또는 매트릭스 (N * N)로 인코딩하는 것입니다. 여기서 wij는 가중치 (ai, bj)입니다. 이 경우, 모든 행을 SOM의 예제로 사용하면 예제의 수 == 변수의 수입니다. 감사합니다. – Ivri

+0

MDS (다차원 스케일링)를 사용하여 문제를 해결했습니다. – Ivri