λ€μ μ§μΉ¨μ λ°λ₯΄μμμ€: https://xgboost.readthedocs.io/en/latest/R-package/xgboostPresentation.html
> install.packages("drat", repos="https://cran.rstudio.com")
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/drat_0.1.5.zip'
Content type 'application/zip' length 87572 bytes (85 KB)
downloaded 85 KB
package βdratβ successfully unpacked and MD5 sums checked
The downloaded binary packages are in
C:\Users\lee\AppData\Local\Temp\RtmpiE0N3D\downloaded_packages
> drat:::addRepo("dmlc")
> install.packages("xgboost", repos="http://dmlc.ml/drat/", type = "source")
Warning: unable to access index for repository http://dmlc.ml/drat/src/contrib:
Line starting '<!DOCTYPE html> ...' is malformed!
Warning message:
package βxgboostβ is not available (for R version 3.6.0)
λμΌν μ€λ₯λ‘ R 3.6.2μμλ μ€ν¨ν©λλ€.
μ°Έκ³ : CRAN λ²μ μ μ¬μ©νλ κ²μ ν¨μ¬ μ νΈν©λλ€. κ·Έλ¬λ Linux λ° Macμμ νλ ¨νκ³ saveRDS ν¨μλ₯Ό μ¬μ©νμ¬ μ μ₯νλ λͺ¨λΈμ λ€λ₯Έ μμ€ν (Windows)μμ μμΈ‘νμ§ μκ³ λ¨μ§ μ«μ(0)λ₯Ό μμ±ν©λλ€. λ€λ₯Έ μ»΄ν¨ν°μμ μ¬μ©νκΈ° μν΄ XGBoost λͺ¨λΈμ μ μ₯νλ λ°©λ²μ λν μ§μΉ¨μ΄ μλ μ¬λμ΄ μμΌλ©΄ μλ €μ£Όμμμ€. xgb.save.raw λ° xgb.loadλ₯Ό μλνμ΅λλ€. λ λ€ numeric(0)λ μμ±ν©λλ€. κ·Έλ¬λ (ν λ¬ μ μ) λͺ¨λΈμ νλ ¨μν¨ μ»΄ν¨ν°μμ Rμ readRDSλ μ μλν©λλ€. λμκ² μ λμ μΌλ‘ λΉνΉ μ€λ½λ€.
install.packages('xgboost') λ₯Ό μλνμ ¨μ΅λκΉ?
install.packages('xgboost') λ₯Ό μλνμ ¨μ΅λκΉ?
κ·Έκ²μ μ μλνμ§λ§ μ μ₯λ λͺ¨λΈμ λͺ¨λ μμΈ‘(saveRDS μ¬μ©)μ numeric(0)μ μμ±ν©λλ€. openMPλ₯Ό μ¬μ©νμ¬ νλ ¨λ λͺ¨λΈμ ν΄λΉ νλ μμν¬κ° μλ μ»΄ν¨ν°μμ μλνμ§ μλ κ² κ°μ΅λλ€. μμ€μμ μ»΄νμΌνλ©΄ μ΄ λ¬Έμ κ° ν΄κ²°λκΈ°λ₯Ό λ°λλλ€.
μμ€μμ XGBoostλ₯Ό μ»΄νμΌνλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64" -DR_LIB=ON
cmake --build . --target install --config Release
μμΈ‘μ λν΄ 0μ μ»λ μ΄μ λ₯Ό μ°Ύμ μ μλλ‘ λͺ¨λΈ νμΌμ 곡μ ν μ μμ΅λκΉ?
κ°μ¬ν©λλ€. R κ°μ²΄λ₯Ό μνμλκΉ μλλ©΄ xgb.save.rawλ₯Ό ν΅ν΄ λ³ννμκ² μ΅λκΉ?
λ λ€
λΉμ μ λμκ³Ό μ§μμ κ°μ¬λ립λλ€(κ·Έλ¦¬κ³ κ·Έλ¬ν νΉλ³ν νμ΅ νλ‘κ·Έλ¨μ λ§λλ λ°).
μ²¨λΆ νμΌμ μμΆλ .rdata νμΌμ λλ€. 3κ°μ μμ€ν (Mac, MacBook, Ubuntu)μμ λ€μ μ½λλ₯Ό μ€νν μ μμ΅λλ€.
modelList <- readRDS("<path_to_folder>/modelList.rdata")
attach(modelList)
predictions_caret <- predict(object=caretModel, newdata=caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"])
predictions_xgbbase <- predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))
κ·Έλ¦¬κ³ λ€μ μΆλ ₯μ μ»μ΅λλ€.
> predictions_caret <- predict(object=caretModel, newdata=caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"])
[23:12:50] WARNING: ../..//amalgamation/../src/objective/regression_obj.cu:167: reg:linear is now deprecated in favor of reg:squarederror.
> head(predictions_caret)
[1] 14.0180358887 13.0352602005 12.9208145142 13.2430124283 13.6698570251
[6] 12.9033651352
> predictions_xgbbase <- predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))
[23:16:17] WARNING: ../..//amalgamation/../src/objective/regression_obj.cu:167: reg:linear is now deprecated in favor of reg:squarederror.
> head(predictions_xgbbase)
[1] 14.0180358887 13.0352602005 12.9208145142 13.2430124283 13.6698570251
[6] 12.9033651352
μμ€ν 4(CRANμμ xgboostκ° μ€μΉλ Windows κΈ°λ° R)μμλ λ§€μ° λ€λ₯Έ κ²°κ³Όλ₯Ό μ»μ΅λλ€.
> predictions_caret <- predict(object=caretModel, newdata=caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"])
[23:18:04] WARNING: amalgamation/../src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.
> head(predictions_caret)
numeric(0)
> predictions_xgbbase <- predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))
[23:18:41] WARNING: amalgamation/../src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.
> head(predictions_xgbbase)
numeric(0)
μλ‘μ΄ λ¬Έμ λ₯Ό μ΄μ΄μΌ νλ€κ³ μκ°νμ§λ§ λμΌν μ½λκ° λ€λ₯Έ μμ€ν μμ λ€λ₯΄κ² μλνλ μ΄μ μ λν΄ μλ €μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€.
λ§μ§λ§μΌλ‘ xgbRawκ° ν¬ν¨λμ΄ μμΌλ©°(attach()λ₯Ό μ¬μ©νλ κ²½μ° νΈμΆ κ°λ₯ν΄μΌ ν¨) λ€μ μ½λλ‘ μμ±λμμ΅λλ€.
xgbRaw=xgb.save.raw(xgb.Booster.complete(caretModel$finalModel))
λ€μ νλ² κ°μ¬λ립λλ€.
μλ§λ omp μμΈμ λν dmlc κ°λ λλ¬ΈμΌκΉμ?
@leedrake5 μ»΄ν¨ν°κ° OpenMPλ₯Ό μ§μνμ§ μμ΅λκΉ?
@hcho3 μμΈμ μ°ΎμΌμ ¨λμ? λ°©κΈ OpenMP μμ΄ XGBoostλ₯Ό μ»΄νμΌνλλ°(CMakeListμ λν μΌλΆ ν¨μΉ ν¬ν¨) μΈλΆ λ©λͺ¨λ¦¬ ν μ€νΈκ° μμλλ‘ μ€ν¨νκ³ hist λ³λ ¬ κ·Έλ£Ή ν μ€νΈλ μ€ν¨νμ΅λλ€(λ‘컬 λΆκΈ°μμ μμ ν¨). κ·Έλ¬λ μ§κΈκΉμ§λ μλ²½ν μμΈ‘ κ°μ μ»μ μ μμ΅λλ€.
@hcho3 λ΄ μ»΄ν¨ν°λ openmpλ₯Ό μ§μν©λλ€. κ·Έλ¬λ μ°λ¦¬λ μ΄λ¬ν λͺ¨λΈμ μ°μ μ κ·λͺ¨λ‘ λ°°ν¬νκ³ μμΌλ©° νΉμ μ¬μ΄νΈμ λ§μ μ»΄ν¨ν°μλ openmpκ° μμ΅λλ€. μ°λ¦¬λ 6κ°μμ μ€λΉμ ꡬνκΉμ§ 1μ£ΌμΌ νμ μ΄κ²μ λ°κ²¬νμ΅λλ€. κ·Έλμ μ°λ¦¬λ λͺ¨λΈμ΄ μΌλΆ μ»΄ν¨ν°μμλ μλνκ³ λ€λ₯Έ μ»΄ν¨ν°μμλ μλνμ§ μλ μ΄μ λ₯Ό μμλ΄κΈ° μν΄ λΆμ£Όν μμ§μ΄κ³ μμ΅λλ€.
λͺ¨λΈμ΄ κ±΄μ€ νκ²½μμλ§ μλν΄μΌ νλ μ΄μ μ λν μ² νμ΄ μλ€λ©΄ κ·Έ μ΄μ μ λν μ μ΅ν μ€λ₯λ₯Ό μ»μ μ μλ λ°©λ²μ΄ μμ΅λκΉ?
@leedrake5 λ²κ·Έμ λλ€. openmpλ₯Ό λΉνμ±νν μνλ‘ Ubuntuμμ μ΄λ₯Ό μ¬ννλ €κ³ μλνμ§λ§ μ§κΈκΉμ§λ μ΄μ΄ μμ΅λλ€.
@trivialfs λμμ΄ λλ€λ©΄ λμ λλΆλΆμ λλ£λ€μ Windowsμμ λ²κ·Έλ₯Ό κ²½ννκ³ μμ΅λλ€. λ΄ λλ£κ° openmp μμ΄ μ°λΆν¬μμ μ¬νν μ μμμ§λ§.
λ©μ§ κ²λ€(openmp, intelmkl, openblas λ±)μ΄ μλ Rμ μ΅μνμ μ€μΉκ° κ·Έκ²μ μ¬νν μ μλ€κ³ μκ°νμ§λ§, μ¬μ ν μμ€ν μ μ΄λ€ λΆλΆμ΄ λ¬Έμ λ₯Ό μΌμΌν€λμ§μ λν΄ λ¨Έλ¦¬λ₯Ό κ°κ³ μμ΅λλ€.
@leedrake5 Linux λ°°ν¬νμμ μ¬νν μ μλ λ°©λ²μ΄ μλ€λ©΄ ν° λμμ΄ λ κ²μ λλ€!
google test, omp ...λ₯Ό ν¬ν¨ν λͺ¨λ μ΅μ
μ λΉνμ±ννμ§λ§ μ¬μ ν λͺ¨λΈμ λ‘λνλ μ¬λ°λ₯Έ κ²°κ³Όλ₯Ό μ»μμ΅λλ€. R μ€μΉλ apt
μ κΈ°λ³Έ λ°°ν¬νμ
λλ€. XGBoost μμΈ‘κ³Ό κ΄λ ¨μ΄ μλ€κ³ μκ°ν©λλ€.
OpenMPλ‘ μΈν΄ λ°μνμ§ μμ μ μμ΅λλ€. μ¬μ§μ΄ μμΈ‘μ΄ μ€μ λ‘ λΉλκ°λλΌλ μ¬μ ν 0μ΄ μλ μ μ νΈν₯μ΄ μμ΅λλ€.
λ΄κ° μκ°ν μ μλ μ μΌν μ΄μ λ XGBoostκ° μ€μ λ‘ μ€μΉλμ§ μλλ€λ κ²μ λλ€. CRANμμ ν μ€νΈλ₯Ό μ€ννλ κ² κ°μλ°μ? @hcho3
CMake λΉλμ autotools λΉλλ₯Ό λͺ¨λ μλνμ΅λλ€. μ΄κ²μ install.packages(...)
(autotools λΉλ)μμ λ³΄κ³ ν μ»΄νμΌ νλκ·Έμ
λλ€.
g++ -std=gnu++11 -I"/usr/share/R/include" -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -DDMLC_CMAKE_LITTLE_ENDIAN=1 -pthread -fpic -g -O2 -fdebug-prefix-map=/build/r-base-el7SHG/r-base-3.5.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c ../..//amalgamation/xgboost-all0.cc -o ../..//amalgamation/xgboost-all0.o
@trivialfis XGBoost κ° CRANμμ μ±κ³΅μ μΌλ‘ μ€μΉλκ³ λΌμ΄λΈλ¬λ¦¬(xgboost)κ° λ¬Έμ μμ΄ μλνλ―λ‘ λμ± κΆκΈν©λλ€.
λ΄ λλ£κ° openmp μμ΄ μ°λΆν¬μμ μ¬νν μ μμμ§λ§.
λ²μ λ°©λ²μ μΉμ νκ² κ³΅μ ν μ μμ΅λκΉ?
λ΄ λλ£κ° openmp μμ΄ μ°λΆν¬μμ μ¬νν μ μμμ§λ§.
λ²μ λ°©λ²μ μΉμ νκ² κ³΅μ ν μ μμ΅λκΉ?
κ·Έλ€μ΄ 리λ μ€ μμ€ν μ μλ λ°©μμ λν΄ μΆ©λΆν μκ³ μλμ§ νμ ν μ μμ§λ§ μ 곡ν μ μλ μ§λ¨μ μκ³ μλ€λ©΄ μλ €μ£Όμμμ€.
μ κ²½μ°μλ λ¬Έμ λ₯Ό 볡μ ν μ μλ κ°μ μμ μ°λΆν¬ μ€μΉλ₯Ό λ§λ€λ €κ³ ν©λλ€. μ±κ³΅νλ©΄ λ€μ΄λ‘λ λ§ν¬λ₯Ό 보λ΄λλ¦¬κ² μ΅λλ€.
Linuxμμ λ¬Έμ λ₯Ό μ±κ³΅μ μΌλ‘ μ¬ννμ΅λλ€. 첨λΆλ μ€ν¬λ¦°μ·μ μ°Έμ‘°νμμμ€.
κ°μ λ°μ€λ₯Ό λλ‘λ°μ€μ μ λ‘λ μ€μ λλ€. κ·Έλ¬λ μ²μλΆν° μ€μΉνλ €λ κ²½μ° λ³΅μ μ§μΉ¨μ λ€μκ³Ό κ°μ΅λλ€.
sudo apt-get update
sudo apt-get install vim
sudo vim /etc/apt/sources.list
i
deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
<esc> :wq
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
gpg -a --export E298A3A825C0D65DFD57CBB651716619E084DAB9 | sudo apt-key add -
sudo apt-get update
sudo apt-get install r-base-dev
install.packages(c("caret", "xgboost"))
library(caret)
library(xgboost)
modelList <- readRDS("~/Desktop/modelList.rdata")
attach(modelList)
predict(object=xgbModel, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))
κ·Έλ¦¬κ³ μ΄κ²μ μ΄μ μΉμν κ²°κ³Όλ₯Ό λ°ννμ΅λλ€.
[13:00:55] κ²½κ³ : amalgamation/../src/objective/regression_obj.cu:152: reg:linear λ μ΄μ reg:squarederror λμ μ¬μ©λμ§ μμ΅λλ€.
μ«μ(0)
μ°Έκ³ : λͺ μμ νΈμΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό μλνκ³ μμΈ‘λ§ μλνμ΅λλ€. λ λ€ λμΌν μ«μ(0) μλ΅μ μμ±νμ΅λλ€.
7z μμΆ κ°μ μΈμ€ν΄μ€ λ§ν¬: https://www.dropbox.com/s/ld06zz798m0segf/UbuntuDebug.7z?dl=0
λ¨Όμ κ°μ μμλ₯Ό μ»μ μ μμ΅λλ€. μ λ λ³΄ν΅ KVMμ μ¬μ©ν©λλ€.
μ§κΈ μ΄κ²μλ³΄κ³ μμ΅λλ€.
@leedrake5 κ·νκ° μ 곡ν κ°μ λ¨Έμ μμ λ¬Έμ λ₯Ό μ¬νν μ μμμ΅λλ€. saveRDS
λ° xgb.save.raw
μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. λμ xgb.save
λ° xgb.load
λ₯Ό μ¬μ©ν΄ 보μ
¨μ΅λκΉ? μ΄ ν¨μ μ§ν©μ XGBoost λͺ¨λΈμ "λ€μ΄ν°λΈ" νμμ μ¬μ©νλ©° R νκ²½μ νΉμ ν μμ±μ μ μ₯νμ§ μμ΅λλ€. R ν¨ν€μ§μμ PythonμΌλ‘ λͺ¨λΈμ μ μ‘νλ €λ κ²½μ°μ μ μ©ν©λλ€.
μμ μ μ₯μ λ¬Έμ κ° λμ§ μμ΅λλ€. λ¬Έμ λ Rμ΄ R μ½λλ₯Ό μ§λ ¬ννλ λ°©λ²μ μμ μ μμ΅λλ€. μ΄λ¬ν μ’ λ₯μ μ§λ ¬ν λ‘λμ μν₯μ μ€ μ μλ μλ‘μ΄ μ νμ 맀κ°λ³μλ₯Ό μμΈ‘μ μΆκ°νμ΅λλ€. λλ κ·Έκ²μ μ‘°μ¬ν΄ 보μμ§λ§ Python pickleμ λ¬Έμ μ λ§μ°¬κ°μ§λ‘ μ λ§ κΈ°λ°ν κ² κ°μ΅λλ€.
@trivialfis μ μ¬μ μΌλ‘ μ΄κ²μ μ°νν μ μλ μμΈ‘ κΈ°λ₯μ μ΅μ μ λν μμ΄λμ΄κ° μμ΅λκΉ? λ΄ μκ°μλ CPU λͺ λ Ήκ³Ό κ΄λ ¨μ΄ μμΌλ©° ν¨ν€μ§μμ μ²λ¦¬ν μ μλ κ²λ³΄λ€ Rμμ λ κΉμ μ μμ΅λλ€.
@hcho3 νμ¬ λ°μ΄ν° νμ΄νμ xgb.save.rawλ₯Ό μΆκ°νκ³ λμμ΄ λλμ§ νμΈνκ² μ΅λλ€. λ΄κ° λ³΄λΈ μμ μμλ μμΈ‘μ΄ μλνλ μ»΄ν¨ν°μμ xgb.save.rawλ₯Ό μ¬μ©νμ¬ μ΄κ²μ μλνμ§λ§ λΆννλ xgb.loadμμ μ¬μ ν numeric(0)μΌλ‘ μ΄μ΄μ§λλ€. λΆλͺ ν μ΄κ²μ λͺ¨λΈμ΄ μ΄λ―Έ saveRDSλ₯Ό ν΅ν΄ μ μ₯λ μ΄νμκΈ° λλ¬Έμ μμ±λ νκ²½μμ μ¬μ ν μλνμ§λ§ ν΄λΉ νλ‘μΈμ€μ λν 무μΈκ°κ° λͺ¨λΈμ μμμν¬ μ μμ΅λλ€.
λ΄κ° λ§ν μ μλ ν, λͺ¨λΈμ΄ μ¬μ©λλ λͺ¨λ νκ²½μ μ‘΄μ¬ν΄μΌ νλ λͺ¨λΈμ΄ μμ±λ νκ²½μ λν΄ μ¬μ ν 무μΈκ°κ° μμ΅λλ€. λλ κ·Έκ²μ΄ 무μμΈμ§ λͺ¨λ₯Έλ€.
μλμ, xgb.save
κ° μλλΌ xgb.save.raw
μ
λλ€.
@trivialfis XGBoost ν¨ν€μ§λ CRANμμ μ¬μ ν 0.90μ λλ€.
xgb.saveλ₯Ό μλνκ³ xgb.load()λ₯Ό ν΅ν΄ Rμ λ‘λνκ³ κ°μ μ«μ(0)λ₯Ό μ¬μ©νμ΅λλ€. xgb.saveμμ μ²¨λΆ μ°Έμ‘°
λν μ΄ μ€λ λμ μλΆλΆμμ λͺ¨λΈμ μμ±ν λμΌν μ»΄ν¨ν°μμ modelListμ λ°μ΄ν°λ₯Ό μ¬μ©νμ¬ λμΌν λ°©λ²μ ν μ€νΈνμ΅λλ€.
xgb.save, xgb.save.raw, saveRDS λ±μ μ¬λΌμ΄μ€ λ°©λ²μ κ΄κ³μμ΄ λͺ¨λΈμ΄ μμ±λ μ»΄ν¨ν° νκ²½μλ λ€λ₯Έ κ³³μμ μ¬μ©μ κΈμ§νλ 무μΈκ°κ° μμ΅λλ€.
μ κ³΅ν΄ μ£Όμ λͺ¨λΈ νμΌμ μ¬μ©νμ¬ λ¬Έμ λ₯Ό μ¬νν μ μμ΅λλ€. κ·Έλ¬λ λͺ¨λΈ νμΌμ΄ μ΄λ»κ² μμ±λμλμ§ μ μ μμ΅λλ€. λ λ§μ 컨ν μ€νΈλ₯Ό μ 곡ν μ μμ΅λκΉ?
OS X(μΉ΄ν리λ). μμ€μμ XGBoost λΉλ, 1.0(μμ€ν μμ μ§μλλ openMP). saveRDSλ₯Ό μ¬μ©νμ¬ μλ μ μ₯ν λͺ¨λΈμ λλ€. λλ κ·Έκ²μ λ€μ μ€ννκ³ λ€λ₯Έ λ°©λ²μ ν΅ν΄ μ μ₯νκ³ λ€μ λ³΄κ³ ν κ²μ λλ€.
λͺ¨λΈμ μ²μλΆν° λ€μ μμ±νκ³ xgb.saveλ₯Ό μ¬μ©νμ¬ μ μ₯νκ³ (μ: μμΈ‘ λ°μ΄ν°λ₯Ό μ μΈνκ³ saveRDS λλ readRDSλ₯Ό μ¬μ©νμ§ μμ) xgb.loadλ₯Ό μ¬μ©νμ¬ λ‘λνμ΅λλ€. λμΌν κ²°κ³Ό - λͺ¨λΈ μμ±μ μ¬μ©λ μ»΄ν¨ν° μμ€ν (OS X, XGB 1.0)μμλ μμΈ‘μ΄ μλνκ³ λ€λ₯Έ μμ€ν (Windows 7, XGB 0.9)μμλ μ€ν¨ν©λλ€. κ·Έκ²κ³Ό modelListλ₯Ό μ΄ λ©μμ§μ 첨λΆν©λλ€. μ΄ λ¬Έμ λ₯Ό μ§λ¨νλ λ° λμμ΄ λ μ μλ λ€λ₯Έ μμ μ΄ μμΌλ©΄ μλ €μ£ΌμΈμ.
xgb_model <- xgb.load("Z:/Desktop/newxgbModelSaved.xgb")
modelList <- readRDS("Z:/Desktop/modelList2.rdata")
attach(modelList)
predict(object=xgb_model, newdata=as.matrix(caretModel$trainingData[,!colnames(caretModel$trainingData) %in% ".outcome"]))
numeric(0)
@leedrake5 Windowsμμ XGBoost 1.0μ μ¬μ©ν μ μμ΅λκΉ?
@trivialfis μ΄κ²μ λͺ¨λΈ νμΌμ μ΄μ λ²μ κ³Όμ νΈνμ± λ¬Έμ μΌ μ μμ΅λλ€.
νμ€ν λ²μ μ μ λλ€. λ°©κΈ XGBoostμ 1.0 λ²μ μ μμ νκ³ CRANμμ 0.9λ₯Ό μ€μΉνμΌλ©° μμμ μ€λͺ ν λ°©λ²μ΄ μλνμ΅λλ€.
μ΅μ λ¦΄λ¦¬μ€ λ₯Ό μ¬μ©νμ¬ μμ€μμ 0.90μ μ€μΉνλ €κ³ μλνμ§λ§ dmlc-core ν΄λκ° λΉμ΄ μμΌλ―λ‘ Cmakeμμ νμν μ€λ₯κ° λ°μν©λλ€. κ·Έλ¬λ μ΄κ²μ κ³μν΄μ openMP κΈ°λ₯μ μ μ§νκ³ μΆμ΅λλ€.
λ΄κ° μ°Έμ‘°. Windowsμ 1.0.0 λ²μ μ μ€μΉνλ €κ³ νμ΅λκΉ?
μ΄μνκ²λ μ΄κ²μ΄ μ΄ μ€λ λμ μ΄κΈ° μ΄μ μμ΅λλ€. μλνμ§λ§ νλ‘μ νΈκ° λ μ΄μ κΈ°λ€λ¦΄ μ μκΈ° λλ¬Έμ μ§μ°μ΄ μμ κ²μ λλ€. μ΄κ²μ΄ λ¬Έμ λΌλ©΄ λ΄κ° λ³΄λΈ μ°λΆν¬ κ°μ μ΄λ―Έμ§μ μμ€μμ 1.0μ μ€μΉνλ©΄ κ°μ λ¬Έμ κ° ν΄κ²°λ κ²μ΄λΌκ³ μκ°ν©λλ€.
@leedrake5 λ€, XGBoost λ²μ κ³Ό μΌμΉν΄μΌ ν©λλ€. λͺ¨λ κ³³μμ 0.90μ μ¬μ©νκ±°λ λͺ¨λ κ³³μμ 1.0.0μ μ¬μ©νμμμ€.
@trivialfis λ°μ΄λ리 λͺ¨λΈ νμμ ν¬κ² λ³κ²½ν κ²μ κΈ°μ΅ν©λλ€. λ§λμ?
μλμ, μ°λ¦¬λ μ΄μ λ²μ κ³Ό νΈνλ©λλ€. 1.0μ νμ€ν 0.9μμ λͺ¨λΈμ λ‘λν΄μΌ ν©λλ€.
@trivialfis μ€λͺ κ°μ¬ν©λλ€. μ΄ κ²½μ° μ΄μ λ²μ κ³Όμ νΈνμ±μ μμνκ³ λ°λ‘λ₯Ό μ°ΎμμΌλ―λ‘ μ΄ ν°μΌμ λ²κ·Έλ‘ μ²λ¦¬ν΄ λ³΄κ² μ΅λλ€. μ΄λ²μ£Όμ λ΄μΌκ² λ€.
μ μκ°μλ μ μλ μ λͺ© λ³κ²½μ΄ κ±°κΎΈλ‘ λ κ² κ°μ΅λλ€. 1.0μμ μμ±λ λͺ¨λΈμ 0.90μμ μμΈ‘νλ λ° μ¬μ©ν μ μμ΅λλ€. λ²μ κ°μ μ΄λ μ λμ νΈνμ±μ΄ μλλμλμ§λ λͺ¨λ₯΄κ² μ§λ§ μ΅μν μ 보λ₯Ό μ 곡νλ μ€λ₯κ° λμμ΄ λ κ²μ λλ€.
μ΄λ°, λμ.
@trivialfis @leedrake5 κ° μꡬνλ κ²μ μλ°©ν₯ νΈνμ±, μ¦ 1.0.0μμ 0.90μΌλ‘ λͺ¨λΈμ λ‘λνλ κ²μ λλ€. μ΄κ²μ΄ μ°λ¦¬κ° μ½μνλ κ²μΈμ§ νμ€νμ§ μμ΅λλ€.
@leedrake5 Ubuntu κ°μ λ¨Έμ μ 1.0.0μ μ€μΉνλ €κ³ μλνλλ° μ΄μ RDS νμΌμ΄ μ λλ‘ λ‘λλκ³ μ€μ 벑ν°κ° νμλ©λλ€. λ°λΌμ λ²μ λ¬Έμ μΌ κ°λ₯μ±μ΄ ν½λλ€.
νΈμ§νλ€. μ€ν¬λ¦°μ·μ κ²½κ³ λ©μμ§λ Loading model from < 1.0.0, consider saving it again
μ
λλ€. λͺ¨λΈμ΄ 1.0.0μμ μμ±λμλ€λ μ μ κ°μν λ μ΄κ²μ μ¬κΈ°μ μμΌλ©΄ μλ©λλ€.
λλ λμνλ€. λ¬Έμ κ° λ¬΄μμΈμ§μ λν μλ ΄μ μ€μ νκ² λμ΄ λ§€μ° κΈ°μ©λλ€.
λΆννλ νλ‘λμ κ΄μ μμ λλ λ²μ (μκ³ , CRAN μ€μΉ)μΌλ‘ λ°°ν¬ν μ μλ λͺ¨λΈμ λ§λ€μ΄μΌ ν©λλ€. νμ§λ§ μ¬κΈ°μλΆν° XGBoostκ° μλνλλ‘ νλ λ°©λ²μ μκ³ μμ΅λλ€. μ΄κ²μ΄ μ λμ μΈ μκ³μ μ λλ€.
λ¦΄λ¦¬μ€ λλ νΈλ¦¬μμ λ€μ΄λ‘λν μμ€μμ 0.9λ₯Ό μ€μΉνλ λ° μ¬μ ν λ¬Έμ κ° μμ§λ§ λ¬Έμ λ₯Ό μ°Ύμ κ² κ°μ΅λλ€. cub, dmlc-core, rabit, λͺ¨λ μ΄ λ€μ΄λ‘λμμ λΉ ν΄λμ
λλ€. κ·Έλ€μ λν @
μ€ν¬λ¦°μ· μ°Έμ‘°:
μ, git νμ λͺ¨λμ μ¬μ©νλ―λ‘ λΉλ μ§μΉ¨μμ git clone --recursive
λ₯Ό μ¬μ©νμ¬ μμ€μμ μ€μΉνλλ‘ μμ²ν©λλ€. CRAN μ€μΉκ° λΆμ‘±ν μν©μ΄μ κ°μ? λͺ¨λ κ³³μμ 0.90μ μ¬μ©νμ¬ λ¬Έμ κ° ν΄κ²°λλ©΄ λͺ¨λ κ³³(Linux, Mac, Windows)μ CRAN μ€μΉλ₯Ό μ¬μ©ν μ μμ΅λκΉ?
μ - CRANμ λͺ¨λΈ μμ±μ ν° λμμ΄ λλ openMPλ₯Ό νμ©νμ§ μμ΅λλ€. λ°λΌμ μμ€μμ xgboost 0.90μ μ»΄νμΌνμ¬ λ€μ μλμν€λ λ°©λ²μ μμλ΄λ λ° μκ°μ ν μ ν κ²μ λλ€. μ΄ λ¬Έμ λ₯Ό μ§λ¨νλ λ° λμμ μ£Όμ μ κ°μ¬ν©λλ€.
@leedrake5
μμμ΄μ. μ§κΈμ git νμ λͺ¨λμ ν¬ν¨νμ¬ μ 체 μμ€ μ½λλ₯Ό κ°μ Έμ€λ λ° μ¬μ©ν μ μλ λͺ λ Ήμ΄ μμ΅λλ€.
git clone --recursive https://github.com/dmlc/xgboost -b release_0.90
μ΄κ²μ XGBoost μμ€ μ½λλ₯Ό κ°μ Έμμ rabit, cub, dmlc-core λλ ν 리λ₯Ό μ±μμΌ ν©λλ€. -b release_0.90
λ μ΅μ λ²μ μ΄ μλ 0.90 λ²μ μ μ»λ λ° μ¬μ©λ©λλ€.
κ³μ:
CRANμ openMPλ₯Ό νμ©νμ§ μμ΅λλ€
μ΄κ²μ μ€μ λ‘ 1.0.0μμ μμ λμμ΅λλ€. 곧 CRANμμ 1.0.0 λ²μ μ μ»μΌλ €κ³ λ Έλ ₯ν κ²μ λλ€.
κ°μ¬ν©λλ€. λͺ¨λ λ©΄μμ κ°μ¬ν©λλ€!
@hetong007 CRANμ 1.0.0μ μ μΆν μ μλμ?
@hcho3 μ ν¨ν μλμ κ°μ§κ° μλ€λ μ μ κ°μν λ μ’μ κ² κ°μ΅λλ€. μΌμ£ΌμΌ μμ μ μΆνκ² μ΅λλ€.
@hetong007 μ λ°μ΄νΈκ° μμ΅λκΉ? μ΄λ€ μμΌλ‘λ λμμ΄ λλ€λ©΄ μλ €μ£ΌμΈμ.
@hcho3 μ λ€. μλΌλ¦¬μ€ ν μ€νΈλ₯Ό μν νκ²½μ΄ μλμ§ λ¬»κ³ μΆμ΅λλ€. 0.9λΆν° μλΌλ¦¬μ€μ ν΄κ²°λμ§ μμ μ€λ₯κ° μμ΅λλ€. https://www.r-project.org/nosvn/R.check/r-patched-solaris-x86/xgboost-00check.html ν볡.
@hetong007 λ°©κΈ VirtualBoxμ ν¨κ» μ€νν μ μλ Oracleμμ Solaris VM μ΄λ―Έμ§λ₯Ό λ€μ΄λ‘λνμ΅λλ€. λ¬Έμ λ₯Ό μ¬νν΄ λ³΄κ² μ΅λλ€.
@hetong007 Solarisμμ R νκ²½μ μ€μ νλ λ° λ§μ λ¬Έμ κ° μμ΅λλ€. νΉν awk
μ κ°μ μ νΈλ¦¬ν°λ Solarisμμ λ€λ₯΄κ² μλνκΈ° λλ¬Έμ igraph
λ° testthat
$μ κ°μ R ν¨ν€μ§λ₯Ό μ€μΉν μ μμ΅λλ€. μ΄λ»κ² λ μ§νν΄μΌ ν μ§ λͺ¨λ₯΄κ² μ΅λλ€.
@hcho3 μ’ λ λͺ
ννκ² ν΄μ£Όμκ² μ΅λκΉ? testthat
κ° CRANμμ μλΌλ¦¬μ€ κ²μ¬λ₯Ό ν΅κ³Όνλ€λ©΄ install.packages('testthat')
λ₯Ό μ¬μ©νμ¬ R μ½μμ ν¨ν€μ§λ₯Ό μ€μΉν μ μμ΅λλ€.
@hetong007 igraph
ν¨ν€μ§λ κ΅¬μ± λ¨κ³μμ awk
λ₯Ό μ¬μ©νκ³ Solarisμ awk
λ GNU awkμ νΈνλμ§ μλ κΈ°λ₯μ
λλ€. GNU awkλ₯Ό μ€μΉν μ μμ§λ§ gawk
λΌκ³ ν©λλ€. Rμ΄ awk
gawk
λ₯Ό μ¬μ©νλλ‘ νλ λ°©λ²μ κ³μ μμλ΄λ €κ³ ν©λλ€.
@hcho3 μ’μ, λμ°νκ² λ€λ¦°λ€. μ§ν λ°©λ²μ λν μ§μλ μμ΅λλ€. λ°©κΈ CRANμμ igraph
μ κ²°κ³Ό νμ΄μ§λ₯Ό μ΄ν΄λ³΄μμ΅λλ€: https://cran.r-project.org/web/checks/check_results_igraph.html. μ°λ¦¬κ° λ λλΉ μ§μ§ μμ κ²μ΄λΌκ³ λλλλ€. μκ΄μμ΄ μ μΆνκ² μ΅λλ€.
@hetong007 κ°μ¬ν©λλ€. μΈμ κ°λ μλΌλ¦¬μ€ ν μ€νΈλ‘ λμκ°λ €κ³ ν©λλ€. λ°©λ²μ΄ μλ€κ³ νμ ν©λλ€.
@hetong007 μ λ€, μ½λ μ μΆμ release_1.0.0
λΈλμΉλ₯Ό μ¬μ©νμ
μΌ ν©λλ€.
@hcho3 μ¬μ νμΈ κ²½κ³ :
* checking whether package 'xgboost' can be installed ... WARNING
Found the following significant warnings:
amalgamation/../src/common/hist_util.cc:666:72: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct xgboost::tree::GradStats'; use assignment or value-initialization instead [-Wclass-memaccess]
See 'd:/RCompile/CRANguest/R-devel_gcc8/xgboost.Rcheck/00install.out' for details.
00install.out
νμΌμ μ¬κΈ°μ μμ΅λλ€(~72μκ° μ΄λ΄ μ¬μ© κ°λ₯): https://win-builder.r-project.org/v6XJQBjzgMaW/00install.out
λΉ λ₯Έ μμ μ΄ κ°λ₯νμ§ μμκΉμ?
@hetong007 μ΄κ² λΈλ‘컀μΈκ°μ? Memsetμ νμ€ν κ·Έλ¨(ꡬ쑰 λ°°μ΄)μ μ λ‘ννλ μλλ₯Ό λμ΄λ λ° μ¬μ©λμμ΅λλ€. μ΄κ²μ΄ CRANμ μ°¨λ¨νλ κ²½μ° R ν¨ν€μ§κ° λμ μΌλ° μμ±μλ₯Ό μ¬μ©νλλ‘ λ§€ν¬λ‘ κ°λλ₯Ό λ°°μΉν©λλ€.
@hcho3 λ€ μ°¨λ¨κΈ°μ λλ€. μ¬μ νμΈμ μλνλμ΄ μ μΆμ κ²½κ³ μμ΄ ν΅κ³Όν΄μΌ ν©λλ€. 맀ν¬λ‘λ μΆ©λΆν μ’μ κ² κ°μ΅λλ€. κ°μ¬ν©λλ€!
@hcho3 λ¨Όμ std::fill
λ₯Ό μ¬μ©ν΄ μ£Όμκ² μ΅λκΉ? μ»΄νμΌλ¬μ‘°μ°¨λ memset
λ‘ μ΅μ ννμ§ λͺ»ν μ μμ΅λλ€. κ°μμ μΈ μ±λ₯ μν₯μ λ―ΈμΉ λ§νΌ μ€μνμ§ μλ€κ³ μκ°ν©λλ€.
@hetong007 νμν λ³κ²½μ νμ΅λλ€(https://github.com/dmlc/xgboost/commit/3550b16a34055bc8ec33bf0b7006448e8c1a4eca). λ€μ μλν μ μλμ?
@trivialfis memset
λ₯Ό λ체νκΈ° μν΄ λ³λμ pull μμ²μ μ μΆνκ² μ΅λλ€.
@hcho3 μμ ν΄μ£Όμ μ κ°μ¬ν©λλ€! μ¬κ°ν λ¬Έμ κ° μμΌλ©΄ CRANμΌλ‘ κ°λ κ²μ λλ€.
@hcho3 κ·Έλμ 리ν리 κ΅μμ μ리μ€μμλ μ€ν¨ν©λλ€:
On Solaris it was quicker to diagnose the problems with the GCC compilers:
amalgamation/../src/common/io.cc:120:27: error: βPOSIX_FADV_SEQUENTIALβ
was not declared in this scope
posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
amalgamation/../src/common/io.cc:120:48: error: βposix_fadviseβ was not
declared in this scope
posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
As 'Writing R Extensions' told you, you need to use configure to test
for the presence of non-standard C/C++ functions. In this case, it
seems that line is not actually necessary.
@hetong007 λ°κ°μ΅λλ€. λ¬Έμ λ₯Ό λλ²κΉ νλ λ° μκ°μ ν μ ν΄ μ£Όμ μ κ°μ¬ν©λλ€. Windows λ° Linuxμμ XGBoostλ₯Ό ν μ€νΈν μ μλ μ μ ν ν μ€νΈ μμ€λ§ μμΌλ―λ‘ μ μ ν Linux νκ²½μμλ§ μ€νλλλ‘ ν΄λΉ λΌμΈμ 보νΈνκ² μ΅λλ€. μ΄μμ μΌλ‘λ λΉνμ€ C++ κΈ°λ₯μ΄ CIμ μΌλΆλ‘ λ¨Όμ ν μ€νΈλμ§ μλ ν μ¬μ©ν΄μλ μ λ©λλ€. λν λ€λ₯Έ λΉνμ€ C++ κΈ°λ₯μ λν μ½λλ² μ΄μ€λ₯Ό μ€μΊνκ³ μ κ±°ν΄μΌ ν©λλ€. cc @trivialfis
@hcho3 λ λμκ² μ’κ² λ€λ¦°λ€. 리ν리 κ΅μμ CRANμ λν μλ‘μ΄ μ μΆ λ§κ°μΌμ 2020-04-06μ λλ€. μμΈν μ€μΉ λ‘κ·Έμ κ΄μ¬μ΄ μμΌμλ©΄ https://cran.r-project.org/web/checks/check_results_xgboost.html μ λ°©λ¬Ένμμμ€.
@hetong007 μ»€λ° https://github.com/dmlc/xgboost/commit/d83db4844bae5969609e58cd6bb201e7831cfaa3 μμ λ¬Έμ λ₯Ό ν΄κ²°ν΄μΌ ν©λλ€. λ§μΉ¨λ΄ λλ μ΅μ Rμ΄ λ΄ Solaris VMκ³Ό ν¨κ» μλνκ³ XGBoostμ λν CRAN κ²μ¬λ₯Ό μ€νν μ μμμ΅λλ€.
@hcho3 νλ₯ν΄ ! Solarisμμ μνλ₯Ό ν΅κ³Όνλλ‘ νμμΌλ―λ‘ λ°μλ λ©λκΉ?
μ, μ§κΈ μ μΆν΄μΌ ν©λλ€.
μλ νμΈμ, μ λ Pythonκ³Ό μ μ¬ν λ¬Έμ μ μ§λ©΄ν΄ μμ΅λλ€. xgboost 1.0.1μ ν΅ν΄ λͺ¨λΈμ μ μ₯νκ³ xgboost 0.9λ₯Ό ν΅ν΄ λ‘λνλλ° μμΈ‘μ λΉ λͺ©λ‘μ λλ€. μ°λ¦¬ νλ‘λμ νκ²½μ xgboost 0.9λ₯Ό μ¬μ©νκ³ μκΈ° λλ¬Έμ xgboost-1.0μ ν΅ν΄ μ μ₯λ λͺ¨λΈμ xgboost 0.9μ λ‘λν μ μλ λ°©λ²μ΄ μλμ§ κΆκΈν©λλ€.
@hcho3 μ€λ μ·μ 곡μ ν μ μλ λ°©λ²μ΄ μλμ? μΆκ° μ μΆμλ μ μ©ν©λλ€.
@sunhs μ λ λΉμ·ν λ¬Έμ μ μ§λ©΄νκ³ μμ΅λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμμ΅λκΉ?
@giladmaya μλμ. μ¬λ¬ κ°μ§ λ°©λ²μ μλν ν λ§μΉ¨λ΄ λͺ¨λΈμ λ€μ νμ΅μν€λ©΄ μκ°μ΄ μ μ½λλ€λ κ²°λ‘ μ λ΄λ Έμ΅λλ€.
μλ‘μ΄ λ²μ μ λͺ¨λΈμ΄ μ΄μ λ²μ μμ μ§μλ κ²μ΄λΌκ³ μ½μν μ μκΈ° λλ¬Έμ λ«μ΅λλ€. PlayStation 4λ₯Ό ꡬμ νκ³ PlayStation 5μ©μΌλ‘ κ°λ°λ κ²μμ λ‘λνλ κ²κ³Ό κ°μ΅λλ€.
μ°λ¦¬λ μ΄μ λ²μ κ³Όμ νΈνμ±λ§μ μ½μνλ―λ‘ μ΄μ λ²μ μ μ¬μ©νμ¬ λͺ¨λΈμ μ μ₯νκ³ μ λ²μ μ μ¬μ©νμ¬ λ€μ λ‘λν μ μμ΅λλ€. μ΄λ λͺ¨λΈ νμμ΄ μκ°μ΄ μ§λ¨μ λ°λΌ μ μ§μ μΌλ‘ λ°μ ν μ μλλ‘ νκΈ° μν κ²μ λλ€.
κ°μ₯ μ μ©ν λκΈ
Linuxμμ λ¬Έμ λ₯Ό μ±κ³΅μ μΌλ‘ μ¬ννμ΅λλ€. 첨λΆλ μ€ν¬λ¦°μ·μ μ°Έμ‘°νμμμ€.
κ°μ λ°μ€λ₯Ό λλ‘λ°μ€μ μ λ‘λ μ€μ λλ€. κ·Έλ¬λ μ²μλΆν° μ€μΉνλ €λ κ²½μ° λ³΅μ μ§μΉ¨μ λ€μκ³Ό κ°μ΅λλ€.
install.packages(c("caret", "xgboost"))
κ·Έλ¦¬κ³ μ΄κ²μ μ΄μ μΉμν κ²°κ³Όλ₯Ό λ°ννμ΅λλ€.
μ°Έκ³ : λͺ μμ νΈμΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό μλνκ³ μμΈ‘λ§ μλνμ΅λλ€. λ λ€ λμΌν μ«μ(0) μλ΅μ μμ±νμ΅λλ€.