# 常見問題
此文檔包含有關 xgboost 的常見問題。
## 如何調參
參閱 [_參數調整指南_](how_to/param_tuning.html)
## 模型的描述
參閱 [_介紹 Boosted Trees_](model.html)
## 我有一個很大的數據集
XGBoost 被設計為 memory efficient(高效使用內存)的。通常數據符合你的內存就可以處理問題(這通常意味著數百萬個實例)。 如果內存不足,請查看 [外部存儲器版本](https://github.com/dmlc/xgboost/tree/master/doc/external_memory.md) 或 xgboost 的 [分布式版本](https://github.com/dmlc/wormhole/tree/master/learn/xgboost) 。
## 在平臺 X(Hadoop/Yarn, Mesos)上運行 xgboost
XGBoost 的分布式版本被設計為可移植到各種環境。 分布式 XGBoost 可以移植到任何支持 [rabit](https://github.com/dmlc/rabit) 的平臺上。 你可以直接在 Yarn 上運行 xgboost 。理論上 Mesos 和其他資源分配引擎也可以很容易地支持。
## 為什么不在 X(Spark, Hadoop)之上實現分布式 xgboost
我們需要知道的第一個事實是分布式并不一定能解決所有的問題。 相反,它會產生更多的問題,如更多的通信開銷和容錯。 最終的問題還是要回到如何推動每個計算節點的限制,并使用更少的資源來完成任務(從而減少通信和失敗的機會)。
為了實現這些,我們決定在單個節點 xgboost 中重用優化,并在其上構建分布式版本。 機器學習中的通信需求是相當簡單的,因為我們可以依賴于一套有限的 API(在我們的案例中)。 這樣的設計使我們能夠重用大部分代碼,同時可以移植到 Hadoop/Yarn, MPI, SGE 等主流平臺上。 最重要的是,它推動了我們可以使用的計算資源的限制。
## 如何將模型移植到我自己的系統中
XGBoost 的模型和數據格式是可交換的,這意味著一種語言訓練的模型可以加載到另一種語言。 這意味著您可以使用 R 訓練模型,同時使用 Java 或 C++ 進行預測,這在生產系統中更為常見。 您還可以使用分布式版本訓練模型,并從 Python 加載它們以進行一些交互式分析。
## 你支持 LambdaMART 嗎
是的,xgboost 實現了 LambdaMART 。在 [_參數_](parameter.html) 中可以查看到你想要的部分。
## 如何處理缺失值
xgboost 默認是支持缺失值的。
## 運行結果略有不同
由于浮點求和順序和多線程的非確定性,可能會發生這種情況。 雖然一般的準確性通常會保持不變。