2016-08-30 1 views
0

시퀀스를 k 개 파트로 분할하고이 하위 파트의 동질성을 최적화하고 싶습니다.k 개의 동종 부품으로 시퀀스를 분할하는 방법은 무엇입니까?

Example : 0 0 0 0 0 1 1 2 3 3 3 2 2 3 2 1 0 0 0 
Result : 0 0 0 0 0 | 1 1 2 | 3 3 3 2 2 3 2 | 1 0 0 0 when you ask for 4 parts (k = 4) 

여기서, 알고리즘은 고정 길이 부분으로 분할하려고하지 않았다, 대신 같은 부분에서 확인 요소는 가능한 한 균질 만들기 위해 노력했다.

어떤 알고리즘을 사용해야합니까? R에 그 구현이 있습니까?

+0

제안 해 주셔서 감사합니다. K-는 일종의 작품을 의미하지만, 위치 (델타가 1 임)와 비교할 때 값 (0에서 3까지의 값)이 작아야합니다. 사실, K- 평균은 위치가 멀지 만 가치가 가까울 경우 이웃이 아닌 지점을 클러스터하기로 결정할 수 있습니다. – VeilleData

+1

입력 값과 결과 값의 값이 다릅니다. 3 부분에서 –

+0

해결, 감사 Santi Gil – VeilleData

답변

3

아마도 Expectation-maximization algorithm을 사용할 수 있습니다. 귀하의 포인트는 (value, position)입니다. 이머징 마켓 알고리즘

Example

, 결과는 (손으로) 같은 것이다 : 당신의 예에서,이 뭔가 같은 것

Solution

이 원하는 출력은, 그래서 당신은 이것을 사용하는 것을 고려할 수 있고 그것이 모든 시나리오에서 실제로 작동 하는지를 고려할 수 있습니다. 주석은 이전에 원하는 클러스터 수를 지정해야하지만 질문을 설정 한대로 문제가되지 않는다고 생각합니다.

이이 일을 알려줘)

편집 :

이이 사진을 참조하십시오, 당신이 얘기하는 것이다. k- 수단을 사용하면 delta value을 제어해야합니다. 즉, 의 위치는이고, 값은 값이 인 동일한 값이됩니다. 그러나 E-M으로 이것은 중요하지 않습니다.

Delta increment

편집 2 : 나는이 정확하지 않았다

좋아, 당신은 delta value를 제어 할 필요가있다. 당신이 말한대로,이 알고리즘은 자신의 위치의 경우 이웃하지 않은 점을 클러스터로 결정할 수

Difference

따라서 (두 개의 클러스터) : 당신이 1 또는 3에 의해 위치를 증가 경우는 동일하지 않습니다 멀리 있지만 그들의 가치는 가깝습니다. delta의 높은 증가와 함께 이런 일이 발생하지 않도록 보장해야합니다. 제 생각에 2 * (최대 - 분) 시퀀스의 값이 증가하지 않는다고 생각합니다.

이제 포인트의 형식은 (value, delta * position)입니다.

+0

매우 상세한 답변을 보내 주셔서 감사합니다. K- 평균과 EM은이 답변에서 설명한 것처럼 매우 유사합니다. 게다가, 그들의 접근법은 문제가 시퀀스 인 설계 상 2 차원 적입니다. 우리는 문제에 대한 더 나은 접근 방법을 찾을 수있을 것이라고 생각합니다. 아마도 더 구체적 일지 모르지만, 잠시 동안이 문제에 집중할 것입니다. 감사합니다. – VeilleData

관련 문제