갈루아의 반서재

728x90

sparse는 0 또는 등장하지 않는 term 이 얼마나 많은지를 의미하는 것으로, 수많은 0 으로 이루어진 행렬의 경우 알고리즘이 불필요한 수행으로 쓸데없는 시간을 낭비하게 만든다. 이런 경우 sparse term을 제거함으로써 효율적인 데이터 분석을 할 수 있다. 


removeSparseTerms() 을 이용하여 sparse term 을 제거할 수 있으며, 필요한 것은 얼마만큼의 행을 지워버릴 것인가이다.


현상태에서 보면 sparsity = 90% 이며, 의미있는 actual data values ("non-sparse entities") 는 547개이다.




먼저 sparse 를 70 으로 한 경우는 다음과 같다. 


> dtm.common.70 <- removeSparseTerms(dtm, 0.70)
> inspect(dtm.common.70)
해당 corpus 내에서 다른 문서에 있는 term 과 최소 70% 공통적으로 쓰이지 않는 term 을 제거했다.

하지만 지나치게 많이 제거한 관계로 의미있는 데이터의 수를 8개로 만들어버려 오히려 의미있는 분석이 어렵게 되었다.




89%로 올려서 실행해보면, non-sparse entities 는 25개로 70% 보다는 늘어났음을 알 수 있다.





위의 내용을 정리해 보면 다음과 같다.

의미있는 분석이 되도록 적절한 수준에서 sparse term 을 제거해야 할 것이다. 


sparsedocumentstermsNon-sparsesparsetotalsparsity
0.701028122060.0%
0.7510517335066.0%
0.8910925659072.2%
-105315474763531089.7%



sparse=0.89
Docs(laughter)allaugustmandel:prior.strickland:waywillyes.
14914063143
2000100001
3011001010
4000110100
5100000000
6000011201
7100000000
8000000000
9100000000
10000001000
sparse=0.75
Docs(laughter)  mandel: strickland:way yes.
14  4 63 3
20  1 00 1
30  0 10 0
40  1 01 0
51  0 00 0
60  0 12 1
71  0 00 0
80  0 00 0
91  0 00 0
100  0 10 0
sparse=0.70
Docs(laughter)    strickland:   
14    6   
20    0   
30    1   
40    0   
51    0   
60    1   
71    0   
80    0   
91    0   
100    1   



728x90