RM 에서 R 사용하기
RapidMiner가 아무리 많은 Operator를 지원한다고 해도 R이 가진 무한 확장성을 따라갈 수는 없을 것입니다. 그래서 때로는 분석을 하다보면 RapidMiner에서 지원하지 못하는 부분을 R을 활용하여 해결해야 할 경우들이 있을 것 입니다.
우선 RapidMiner에서 R을 활용하기 위해서는 반드시 R이 설치 되어있어야 합니다.
그리고 RM의 Marketplace에서 R Script를 다운로드 하여 설치 합니다.
![](https://static.wixstatic.com/media/c4918a_efb296aeae514f6f9c6ff58ae42e2b70~mv2.png/v1/fill/w_865,h_817,al_c,q_90,enc_avif,quality_auto/c4918a_efb296aeae514f6f9c6ff58ae42e2b70~mv2.png)
RM 재 실행 후 Settings – Preferences – Rscripting 에서 Rscript.exe 경로 선택 예시) C:\Program Files\R\R-3.3.1\bin\Rscript.exe
![](https://static.wixstatic.com/media/c4918a_07a61220265b42dc8bd6d8c808516304~mv2.png/v1/fill/w_715,h_695,al_c,q_90,enc_avif,quality_auto/c4918a_07a61220265b42dc8bd6d8c808516304~mv2.png)
설정 후 TEST --> 성공 여부 확인
![](https://static.wixstatic.com/media/c4918a_750d8120021c43c7b07c3d4f33539d03~mv2.png/v1/fill/w_536,h_160,al_c,q_85,enc_avif,quality_auto/c4918a_750d8120021c43c7b07c3d4f33539d03~mv2.png)
이제 Execute R을 이용해서 작업을 진행해 보도록 하겠습니다.
# 우선 가장 먼저 R에 data.table package가 설치되어야 합니다. 이유는 RM 의 Operator와
Execute R 간의 데이터 이동은 data.table class로 변환되어 이동 되기 때문입니다.
또한 RM에서 실행하고자 하는 스크립트는 반드시 rm_main이라는 function 안에서 실행이 되도록 작성되어야 합니다. rm_main 함수의 input argument에서 설정된 이름이 RM operator 에서 전달되는 데이터의 이름입니다. 그리고 return 되는 이름이 Execute R에서 RM으로 보내는 데이터의 이름입니다.
아래 예제에서는 R 의 KoNLP 의 NIADic를 이용해서 형태소 분석하는 작업을 해보고자 합니다.
먼저 영화 관람 후의 Review와 평점에 대한 데이터를 로딩 합니다.
![](https://static.wixstatic.com/media/c4918a_bc705ac30c0441baafb188e0aab46a24~mv2.png/v1/fill/w_653,h_335,al_c,q_85,enc_avif,quality_auto/c4918a_bc705ac30c0441baafb188e0aab46a24~mv2.png)
그리고 Execute R을 연결하여 KoNLP 및 plyr를 로딩하고 NIADic를 사용하여 해당 데이터를 형태소 분석 해서 다시 결합하는 과정을 R로 실행 합니다.
![](https://static.wixstatic.com/media/c4918a_2ccb64ba78a145f3ac3b91927d1f4424~mv2.png/v1/fill/w_742,h_212,al_c,q_85,enc_avif,quality_auto/c4918a_2ccb64ba78a145f3ac3b91927d1f4424~mv2.png)
![](https://static.wixstatic.com/media/c4918a_0d908d2e460541b491949439055a946c~mv2.png/v1/fill/w_722,h_443,al_c,q_85,enc_avif,quality_auto/c4918a_0d908d2e460541b491949439055a946c~mv2.png)
결과를 확인 해 보면 원 데이터에 조금은 정제되어 단어별로 구성되어 있음을 확인 할 수 있습니다.
![](https://static.wixstatic.com/media/c4918a_d71a9e3b492f4dcfa451485b99addc01~mv2.png/v1/fill/w_564,h_324,al_c,q_85,enc_avif,quality_auto/c4918a_d71a9e3b492f4dcfa451485b99addc01~mv2.png)
만들어진 결과가 생각 보다는 만족스럽지는 않습니다만은 RM에서 R이 어떻게 서로 호환 되는지에 대해서는 알 수 있는 내용이지 않았나 생각됩니다.
가장 중요한 것은 RM에서 전달되는 데이터는 data.table이라는 것입니다. 그렇기 때문에 R에서 기본 class인 data.frame으로 변환을 해서 작업 하는 것이 조금 더 에러를 줄일 수 있을 것 입니다.