1. 문제
ADP 실기 20회 15분간격의 전력량 군집 문제를 푸는 과정에서 cluster 패키지 pam 함수 사용시 에러가 발생했습니다.
[오류 메시지]
Error in pam(sum15) :
have 133920 observations, but not more than 65536 are allowed
2. 재현
실제 코드의 문제 부분을 외부에서 재현 가능하도록 수정한 코드입니다.
library(cluster)
xx <- rbind(cbind(rnorm(35536,0,0.5), rnorm(35536,0,0.5)),
cbind(rnorm(30001,5,0.5), rnorm(30001,5,0.5)))
pam(xx, 2)
Error in pam(xx, 2) :
have 65537 observations, but not more than 65536 are allowed
3. 문제 원인
pam 인수인 xx 는 65536 건만 지원하는데 그 보다 큰 사이즈라 에러가 발생함
4. 해결 방법
pam 대신 clara를 사용하세요.
library(cluster)
xx <- rbind(cbind(rnorm(35536,0,0.5), rnorm(35536,0,0.5)),
cbind(rnorm(30001,5,0.5), rnorm(30001,5,0.5)))
clara(xx, 2)

5. 연구 기록
군집분석을 수행할 데이터의 크기가 너무 커서 발생한 것으로 보입니다.
?pam 으로 example 을 확인합니다.
x <- rbind(cbind(rnorm(10,0,0.5), rnorm(10,0,0.5)),
cbind(rnorm(15,5,0.5), rnorm(15,5,0.5)))
pamx <- pam(x, 2)
pamx

예제에서 사용한 데이터 사이즈를 확인하니 25건이네요.
해당코드를 변형하여 65536 건보다 1건 큰 사이즈로 변형하여 시도해보았습니다.
예상했던 오류가 발생합니다.

함수 설명의 Note 부분에 대용량의 경우에는 clara 를 사용하라고 되어있네요
For large datasets, pam may need too much memory or too much computation time since both are O(n2). Then, clara() is preferable, see its documentation.

65536 건의 경우 에러가 나지는 않았지만 제 랩탑에서 언제 끝날지 몰라 강제 종료했어요.
그런데 clara 로 바꿔 수행하니 순식간에 끝납니다.
'ADP (R)' 카테고리의 다른 글
오늘의 ADP 준비 / 2022-08-10 수(D46) (0) | 2022.08.10 |
---|---|
[Adp 실기 기출 풀이] 21회 릿지 회귀 (0) | 2022.08.10 |
오늘의 ADP 준비 / 2022-08-08 월(D48) (0) | 2022.08.08 |
[R] NA in the series 오류 해결 (0) | 2022.08.08 |
[R] Entry “TSDistances” not in registry 오류 해결 (0) | 2022.08.07 |