看板 R_Language 關於我們 聯絡資訊
※ 引述《clansoda (小笨)》之銘言: : 標題: [討論] R語言與其他語言 : 時間: Tue Apr 19 12:31:03 2016 : : 不知道這樣的討論能不能PO在板上,若不行請告知我立刻刪除 : : 剛學資料分析的時候是用SAS,但是考量到SAS只有大公司的授權版本 : : 我認為說可能很多公司用不了,因此尋找替代方案 : : 這時候R出現在我面前,既開源又有許多的PACKAGE來使用很符合需求 : : 因此開始使用R語言來做分析,就我來說R是一個把資料丟進去跑分析 : : 然後可將結果視覺化的工具軟體,確實相當優秀,可是得出結論 : : 但是如果要應用的話感覺有些不足,像是我先前一段時間再研究arules package : : 所使用的association rule 和collaborative filtering 這樣的推薦系統 : : 確實可以跑出結果,例如A可能會像B一樣想買C產品,這樣的一條結果 : : 但是結果怎麼實用呢,感覺還需要其他輔助才能做出真的像是amazon或pchome那樣 : : 使用者真的能立刻被推薦的系統,我查了一下發現apache的開源專案mahout跟hadoop : : 我之前有上過hadoop的課程,不過聽不太懂,而mahout是一個可以應用推薦系統的開源 : : 專案,網路上是說用java去寫,因此我是不是就去學java呢? : : 也想知道板友除了R之外是不是都有另外的語言專長像是C或JAVA這樣的語言 : : 也深深感到自己的不足,有板友可以推薦其他可以和R或者實務連結的語言嗎? : 實務上,你可以透過作業系統來串連不同的工具 透過Rscript 執行檔,R 可以包成命令列應用程序,讓所有能呼叫system call的 語言使用,例如:C, java, python, php, nodejs, ... 族繁不及備載 hadoop streaming也是用類似的概念來串接其他的工具,讓你可以用Hadoop cluster 來跑R, python, ... 如果你相關經驗不足(例如這篇文章中用的名詞沒辦法全部看懂),我強烈建議你先 去學這個解決方案,會省很多時間。 如果要更直接的連結,一種方式是把R 或其他工具整合到相同的Process中,只要掌握 得當,這種方法可以有更好的效能。但是掌握不得當,就是拿石頭砸自己的腳。 基本上,R 可以跟任何C based的工具有深入的連結,例如:C, C++, python, php,以python為例,可以看看我投Rcpp Gallery的: http://gallery.rcpp.org/articles/rcpp-python/ 如果是要嵌入R 的話,有RInside專案。 現成解決方案的話,要看工具。Python的話,有rPython套件,nodejs的話有V8 (但是少很多東西,所以我不推薦) 我是覺得,如果你只是自己用,可以玩一玩。如果要做成服務,最好搞懂我上面那篇文章 中的技術,因為穩定性是系統最重要的事情之一,用rPython這種套件,你很難確認它有沒 有埋地雷到你的系統裡面。 R 和Java的話,有rJava套件,但是我的經驗是除了Linux based的系統外,可能光Hello World 就要搞很多系統設定,這是因為R 是C 寫的,所以和C 寫的其他工具整合比較容 易,而Java就要透過jni... 我不會說做不到,但是脆弱更多。rJava 幫你搞定很多問題 但是也可能導入其他地雷。 ps. 脆弱的意思是,容易出錯的地方更多,所以用起來更不穩定,新手要嘗試也更容易失 敗 Scala, Spark 也都是走rJava,所以如果你真的想玩的話,去弄Linux 作業系統來試吧, 會省下你很多的時間的。Mac 上的rJava我自己都搞不定,Windows的話有一些額外的設定 動作要跑。Ubuntu的話,只要照著說明跑一兩行程式碼就可以開始玩你的目標了。 以上是方向,以下是我個人經驗 我有寫一個小專案來透過python做資料前處理後匯入R 。跑了一兩年都沒問題,因為我 100%掌握了裡面所有關鍵。(我知道不會有記憶體洩漏,因為我自己看到記憶體怎麼管) 但是最終,我還是把程式拆解成python先處理,寫入硬碟,R再讀出來的架構,因為... 用python,我才能找工程師來幫忙。 我在R中進行模型學習後,最後把模型寫到database。在nodejs中,再連到database中 讀取模型,並且在nodejs中實作演算法。雖然這樣簡單,但是後續維護會有兩倍成本: R 在模型學習中產生feature的動作,要100%和nodejs中產生feature的動作一致。 這會讓後續的維護成本變成兩倍以上(除了要改兩套之外,還要確保一致性) 現在我正在嘗試用nodejs直接把所有產生feature的動作做完後才交給R,以降低未來的 維護困難度。 以上是我個人整合系統的經驗,給你參考 : -- : ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.175.236.223 : ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1461040268.A.059.html : 推 memphis: 如果你指的"實務" 是指用別人的東西的話..當然資源在哪 04/19 12:38 : → memphis: 就去學那個語言, 學到可以裝package 小改參數之類的就可 04/19 12:40 : 推 psinqoo: 功力問題 04/19 13:37 : 推 JackBaska: 語言能作的事情只要不是本身已不支援,如試圖用純應用端 04/22 11:59 : → JackBaska: 的語言控制硬體,不然所有事情都可以做出一樣的東西只是 04/22 12:00 : → JackBaska: 修煉難度不同的問題,像是有些資料處理C++可能要練到 04/22 12:01 : → JackBaska: 90分才能做R語言30分的事情,就像強化系練具現話系的 04/22 12:01 : → JackBaska: 能力 04/22 12:01 : 推 JackBaska: 以此概念出發,先弄清楚你主要要解的問題最常碰到什麼 04/22 12:05 : → JackBaska: 然後選對應修煉難度最低的語言去學,可以省很多心力 04/22 12:06 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.234.173 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1461304699.A.D24.html ※ 編輯: Wush978 (1.161.234.173), 04/22/2016 13:59:26
memphis: wow 好有誠意的一篇 04/22 15:57
bowin: 推 Wush 這篇! 04/22 18:52
HeroNoah: 受用, 推! 04/22 20:08
cywhale: great to learn.. thanks sharing~ 04/22 21:15
ehome: 大推~超詳盡分析 04/23 21:39
JackBaska: 語言的可能性果然是由使用者功力決定 04/23 21:58
Neisseria: 推這篇文章 04/23 21:58