Xgboost: Dask . рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рдлрд╝рд░ре░ 2017  ┬╖  46рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dmlc/xgboost

рд╣реИрд▓реЛ, рдореИрдВ рдбрд╕реНрдХ рдХрд╛ рд▓реЗрдЦрдХ рд╣реВрдВ, рдЬреЛ рдкрд╛рдпрдерди рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╕рдореБрджрд╛рдп рдХреЗ рднреАрддрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдпрд╛ рдИрдЯреАрдПрд▓ рдХреЗ рд▓рд┐рдП рдбреИрд╕реНрдХ рдкрд░ XGBoost рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд╣реИред

рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ Dask рдХреЗ рджреЛ рдШрдЯрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ:

  1. рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдгрд╛рд▓реА, рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдХрд╛рд░реНрдп рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдкрд░ рдирд┐рд░реНрдорд┐рддред рдпрд╣рд╛рдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдПрдкреАрдЖрдИ рд╕рдВрднрд╡рдд: dask.delayed рдФрд░ рд╕рдорд╡рд░реНрддреА.рдлреНрдпреВрдЪрд░ рд╣реИрдВ
  2. рдкрд╛рдВрдбрд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдЙрдкрд╕рдореБрдЪреНрдЪрдп, dask.dataframe рдлреАрдЪрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдкрдВрдбреЛрдВ рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рд▓реАрдирддрд╛ рд╕реЗ рдХрд░реАрдм рдЖрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣рд╛рдВ рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдиреЛрдЯрдмреБрдХ: https://gist.github.com/19c89d78e34437e061876a9872f4d2df
рд▓рдШреБ рд╕реНрдХреНрд░реАрдирдХрд╛рд╕реНрдЯ (рдЫрд╣ рдорд┐рдирдЯ): https://youtu.be/Cc4E-PdDSro

рдЖрд▓реЛрдЪрдирд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

рд╕рднреА 46 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@mrocklin рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдбрд╕реНрдХ рдХрд╛ рд╕реНрдХреЗрд▓реЗрд░ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕реНрдХреЗрд▓реЗрд░ рд░реИрдкрд░ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реА рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рдПрдХ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдЕрд░реНрдердкреВрд░реНрдг рд░реВрдк рд╕реЗ рдПрдХреАрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрддрд░ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддрд┐-рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕реНрддрд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдРрд╕реЗ рдХреБрдЫ рддрд░реАрдХреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ SKLearn рдФрд░ Dask рдПрдХ рджреВрд╕рд░реЗ рдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрд╣рд░реЗ рдирд╣реАрдВ рд╣реИрдВред

рдбрд╕реНрдХ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреАред рд╣рдорд╛рд░реЗ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рдВрдбрд╛ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд╣рд╛рдВ рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ рдбреИрд╕реНрдХ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдлрд┐рдЯ рд╣реЛрдЧрд╛ред

рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдорд▓реНрдЯреА-рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдбрд╕реНрдХ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕рд┐рд░реНрдл рдкрдВрдбреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ? рдпрд╛ рдХреНрдпрд╛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ XGBoost рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкрд╛рдВрдбрд╛ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдбрд╕реНрдХ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдмрдирд╛рддреЗ рд╣реИрдВ?

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреИрдЪ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдВрд╢рд┐рдХ_рдлрд┐рдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

cc @tqchen рдЬреЛ рдХреЛрдб рдХреЗ рд╡рд┐рддрд░рд┐рдд рднрд╛рдЧ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реИред

xgboost рдХреЗ рд╡рд┐рддрд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдЬреЙрдм рд▓реЙрдиреНрдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ xgboost рдореЗрдВ рдбреЗрдЯрд╛ рд╡рд┐рднрд╛рдЬрди рдлрд╝реАрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЬрд╛рд░реА рд░рдЦреЗрдВред

@mrocklin рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ xgboost-spark рдФрд░ xgboost-flink рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЬреЛ xgboost рдХреЛ рд╕реНрдкрд╛рд░реНрдХ/рдлрд╝реНрд▓рд┐рдВрдХ рдХреЗ рдореИрдкрдкрд╛рд░реНрдЯрд┐рд╢рди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Dask . рдореЗрдВ рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛

xgboost рдХреА рдУрд░ рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ XGBoost рд░реИрдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЯрд░ рдкреНрд░реЛрд╕реЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд╕реЗ рдПрдХ рдЯреНрд░реИрдХрд░ (рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЬреЙрдм рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ) рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

https://github.com/dmlc/xgboost/blob/master/jvm-packages/xgboost4j-spark/src/main/scala/ml/dmlc/xgboost4j/scala/spark/XGBoost.scala#L112 рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб рджреЗрдЦреЗрдВ

рд░реИрдмрд┐рдЯ рдХреЛ рдЕрдиреНрдп рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдЗрдерди рдкрдХреНрд╖ рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрди рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдбрд╕реНрдХ рд╕реЗ рдЕрдиреНрдп рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдЖрдорддреМрд░ рдкрд░ рдХрд╛рдлреА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИред рдЖрдк рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо (рд╕реНрдкрд╛рд░реНрдХ/рдлрд╝реНрд▓рд┐рдВрдХ/рдбрд╕реНрдХ) рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ xg-boost рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдпрд╛ рдпрд╣ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдкрд░ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣реИ?

рдЕрдзрд┐рдХ рдареЛрд╕ рд░реВрдк рд╕реЗ, рдореИрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ:

  • рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░ рдореИрдВ рдПрдХ рд░реИрдмрд┐рдЯ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред Dask рдЗрди рд░реИрдмрд┐рдЯ рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред
  • рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░ рдХреБрдЫ рд╕реНрдерд╛рдиреАрдп XGBoost рд░рд╛рдЬреНрдп рдмрдирд╛рддрд╛ рд╣реВрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ
  • рдореИрдВ рдмрд╛рд░-рдмрд╛рд░ рдЗрд╕ рдкреНрд░рддрд┐-рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╡рд╕реНрддреБ рдкрд╛рдВрдбрд╛ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдпрд╛ рд╕реБрдиреНрди рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЦрд┐рд▓рд╛рддрд╛ рд╣реВрдВ
  • рдореИрдВ XGBoost рд╕реЗ рдХреБрдЫ рд╕рдВрдХреЗрдд рд╕реБрдирддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рд░реБрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкрд╛рдпрдерди рдПрдкреАрдЖрдИ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ?

рд╣рд╛рдБ, рдпрд╣рд╛рдБ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдВ https://github.com/dmlc/xgboost/blob/master/tests/distributed/ рдЕрдЬрдЧрд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдПред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдкрдХреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рддрд░рдл рд╕реЗ рдПрдХ рд░реИрдмрд┐рдЯ рдЯреНрд░реИрдХрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рд╕рдВрднрд╡рдд: рд╡рд╣ рд╕реНрдерд╛рди рдЬреЛ рдбрд╕реНрдХ рдбреНрд░рд╛рдЗрд╡ рдХрд░рддрд╛ рд╣реИ), рдпрд╣ рдпрд╣рд╛рдВ dmlc-submit рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ https://github.com/dmlc/dmlc-core /рдкреЗрдбрд╝/рдорд╛рд╕реНрдЯрд░/рдЯреНрд░реИрдХрд░/dmlc_tracker

рдареАрдХ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рдореЗрд░реА рд░реВрдкрд░реЗрдЦрд╛ рднрд░ рд░рд╣реА рд╣реВрдБ:

рдХрд┐рд╕реА рднреА XGBoost рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдПрдХ рд░реИрдмрд┐рдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ

рдбреНрд░рд╛рдЗрд╡рд░/рд╢реЗрдбреНрдпреВрд▓рд░ рдиреЛрдб рдкрд░ рд╣рдо рдПрдХ рд░реИрдмрд┐рдЯ рдЯреНрд░реИрдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ

envs = {'DMLC_NUM_WORKER' : nworker,
        'DMLC_NUM_SERVER' : nserver}

rabit = RabitTracker(hostIP=ip_address, nslave=num_workers)
envs.update(rabit.slave_envs())
rabit.start(args.num_workers)  # manages connections in background thread

рдореИрдВ PSTracker рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЧреБрдЬрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдпрд╣ рдЙрд╕реА рдХреЗрдВрджреНрд░реАрдХреГрдд рдорд╢реАрди рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рднреАрддрд░ рдХрд╣реАрдВ рдФрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЖрдЦрд┐рд░рдХрд╛рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░рд╛ рдЯреНрд░реИрдХрд░ (рдФрд░ рдкрд╕реНрдЯреНрд░реИрдХрд░реНрд╕?) рд╣реИ рдЬреЛ рд░реИрдмрд┐рдЯ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдмреНрд▓реЙрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред

rabit.join()  # join network

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдбреНрд╕ рдкрд░ рдореБрдЭреЗ рдЗрди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ (рдЬреЛ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рдбрд╕реНрдХ рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛) рдХреЛ рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдбрдВрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдмрд╕ xgboost.rabit.init() рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

import os
os.environ.update(envs)
xgboost.rabit.init()

рд░реИрдмрд┐рдЯ рдХреЛрдб рдХреЛ рджреЗрдЦрдХрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реА рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЯреНрд░реИрдХрд░ рд╣реЛрд╕реНрдЯ/рдкреЛрд░реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдкреНрд░рд╢рд┐рдХреНрд╖рдг

рдлрд┐рд░ рдореИрдВ рдЕрдкрдиреЗ numpy arrays/pandas dataframes/scipy sparse arrays рдХреЛ DMatrix рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рдХрдИ рдмреИрдЪ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдХреНрдпрд╛ рдЯреНрд░реЗрди рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдл рддрд░реАрдХрд╛ рд╣реИ? рдореИрдВ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ:

# Run training, all the features in training API is available.
# Currently, this script only support calling train once for fault recovery purpose.
bst = xgb.train(param, dtrain, num_round, watchlist, early_stopping_rounds=2)

рдХреНрдпрд╛ рд╣рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рдЖрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдЙрджрд╛рд╣рд░рдг рдбреЗрдЯрд╛рд╕реЗрдЯ / рд╕рдорд╕реНрдпрд╛

рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдорд╛рдирдХ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

рдкрд╕реНрдЯреНрд░рд╛рдХрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

  • рдЯреНрд░реИрдХрд░ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреБрд╕реВрдЪрдХ (рдбреНрд░рд╛рдЗрд╡рд░) рдкрд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рднрд╛рд░реА рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
  • rabit.init . рдореЗрдВ env args рдХреЛ kwargs рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рдЪреВрдВрдХрд┐ рдЯреНрд░реА рдмреВрд╕реНрдЯрд┐рдВрдЧ рдПрдХ рдмреИрдЪреЗрдб рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рдЕрдВрддрд░реНрдЧреНрд░рд╣рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

    • рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╢рд╛рд░реНрдк (рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдмрд╕реЗрдЯ) рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

    • рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдорд┐рдиреА-рдмреИрдЪ рдлреИрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЗрдЯрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдкреВрд░реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рди рдмреИрдардирд╛ рдкрдбрд╝реЗ

    • рдпрд╣ https://github.com/dmlc/xgboost/blob/master/include/xgboost/c_api.h#L117 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрднреА рддрдХ рдПрдХ рдЕрдЬрдЧрд░ рдЖрд╡рд░рдг рдирд╣реАрдВ рд╣реИред

    • рдкрд╣рд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реАрдзреЗ рд╕рд░рдгреА рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛

рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдЬ рд╕реБрдмрд╣ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдерд╛ред рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо: https://github.com/mrocklin/dask-xgboost

рдЕрдм рддрдХ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХрд▓ рдЗрди-рдореЗрдореЛрд░реА рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╡рд┐рддрд░рд┐рдд рд╢рд┐рдХреНрд╖рдг рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдХреБрдЫ рд╕рд╡рд╛рд▓ рдЙрдареЗ:

  1. рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдФрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?
  2. рдмреВрд╕реНрдЯрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?
  3. рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ rabit.init рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╣реИрдВ? rabit.init рдореЗрдВ рдЗрдирдкреБрдЯ рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? slave_envs() рдХрд╛ рдкрд░рд┐рдгрд╛рдо rabit.init рдкрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реВрдЪреА рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреАрдирд╛рдо рдХреЛ --key рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╢рд╛рдпрдж DMLC рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд▓реЛрдЕрд░рдХреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
  4. рдХреНрдпрд╛ рд╢реБрджреНрдзрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ? рд╣рдо рджреЛ рдмреВрд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рддреБрд▓рдирд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдареАрдХ рдЙрд╕реА рдкрд░рд┐рдгрд╛рдо рдФрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?
  • рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдордп рдбреЗрдЯрд╛ рдзрд╛рд░рдХ рдХреА рддрд░рд╣ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдкрд╛рд╕ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдбрд╕реНрдХ (рд╕рд░рдгреА/рдбреЗрдЯрд╛рдлреНрд░реЗрдо) рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ xgboost рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

    • рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рдЗрди-рдореЗрдореЛрд░реА рдПрд░реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрднрд╡рддрдГ рдПрдХ рдбреЗрдЯрд╛ рдЗрдЯрд░реЗрдЯрд░ рдХреЛ xgboost рдкрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░рдХреЗ

  • рдЖрдк рдмреВрд╕реНрдЯрд░ рдХреЛ рдЕрдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рджреЛрдиреЛрдВ рддрд░рдл xgboost рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
  • рдЪреАрдЬреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
rabit.init(['DMLC_KEY1=VALUE1', 'DMLC_KEY2=VALUE2']
  • рдЖрдо рддреМрд░ рдкрд░ рд╡рд┐рддрд░рд┐рдд рдФрд░ рдПрдХрд▓ рдорд╢реАрди рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдмреВрд╕реНрдЯрд░ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ

    • рд╕рднреА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рд▓реМрдЯрд╛ рдмреВрд╕реНрдЯрд░ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

    • рднрд╡рд┐рд╖реНрдп рдХрд╣рдиреЗрд╡рд╛рд▓рд╛ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ, рдпрд╣ рд▓рдЧрднрдЧ рд╕рд┐рдВрдЧрд▓ рдорд╢реАрди рдХреЗрд╕ рдЬрд┐рддрдирд╛ рдХрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рджреЛ рдФрд░ рдкреНрд░рд╢реНрди (рдореБрдЭреЗ XGBoost рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЕрдиреБрднрд╡ рд╣реИ, рдХреГрдкрдпрд╛ рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ)ред

  1. рдХреНрдпрд╛ рдПрдХ рд╣реА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкрд░ рдПрдХрд╛рдзрд┐рдХ рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ? (XGBoost рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдмрд╛рдзреНрдп рд╣реИ?)
  2. рдпрджрд┐ рд╣рдо рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ XGBoost рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕рдХрд╛ рдбреЗрдЯрд╛ рдЙрд╕рдХреЗ рд╕рд╛рдерд┐рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИ?

рдХреМрди рд╕рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ?

рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рднрд╛рдЬрди (рдкрдВрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛) рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

  • рдпрджрд┐ рдбреЗрдЯрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд░реНрдЬрди рдХреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдЕрдкрдиреЗ рд╡рд┐рднрд╛рдЬрди рдкрд░ рдЕрд▓рдЧ рд╕реЗ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░реЗрдЧрд╛

рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрдкрд╛рд░реНрдХ/рдлреНрд▓рд┐рдВрдХ рдЬреИрд╕реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдореИрдкрдкрд╛рд░реНрдЯрд┐рд╢рди рдСрдкрд░реЗрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЗрд░реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдореЗрдВ 8 рдкрдВрдХреНрддрд┐рдпрд╛рдБ, 4 рдХреЙрд▓рдо рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо рджреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ

  • рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ 0 рдкрдВрдХреНрддрд┐ 0-3 . рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ
  • рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ 1 рдкрдВрдХреНрддрд┐ 4 -7 . рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ

рдареАрдХ рд╣реИ, рдЕрдм рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдереЛрдбрд╝рд╛ рд╕рд╛рдл рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреБрдЫ рдХреНрд╖рдорддрд╛ рд╣реЛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реБрдП рдереЗ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЕрднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИ:

  1. рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдбрд╕реНрдХ рдРрд░реЗ рдпрд╛ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВ, рдЗрд╕рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
  2. рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб/рд╡рд┐рднрд╛рдЬрди рдХрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ
  3. рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рдХрд╣реЗрдВ рдХрд┐ рд╡рд╣ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ/рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЛ рдареАрдХ-рдареАрдХ рдЬреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЙрди рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджреЗрдВ

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдкреНрд░рдмрдВрдзрдиреАрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдпрджрд┐ xgboost-python рдкрд░рд┐рдгрд╛рдо рдЖрдиреЗ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЖрдЬрдорд╛рдирд╛ рд╣реИред

рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЪрд╛рд░реЛрдВ рдУрд░ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХреГрддреНрд░рд┐рдо рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ numpy рдпрд╛ рдкрд╛рдВрдбрд╛ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрдм рддрдХ, рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

In [1]: import dask.dataframe as dd

In [2]: df = dd.demo.make_timeseries('2000', '2001', {'x': float, 'y': float, 'z': int}, freq='1s', partition_freq=
   ...: '1D')  # some random time series data

In [3]: df.head()
Out[3]: 
                            x         y     z
2000-01-01 00:00:00  0.778864  0.824796   977
2000-01-01 00:00:01 -0.019888 -0.173454  1023
2000-01-01 00:00:02  0.552826  0.051995  1083
2000-01-01 00:00:03 -0.761811  0.780124   959
2000-01-01 00:00:04 -0.643525  0.679375   980

In [4]: labels = df.z > 1000

In [5]: del df['z']

In [6]: df.head()
Out[6]: 
                            x         y
2000-01-01 00:00:00  0.778864  0.824796
2000-01-01 00:00:01 -0.019888 -0.173454
2000-01-01 00:00:02  0.552826  0.051995
2000-01-01 00:00:03 -0.761811  0.780124
2000-01-01 00:00:04 -0.643525  0.679375

In [7]: labels.head()
Out[7]: 
2000-01-01 00:00:00    False
2000-01-01 00:00:01     True
2000-01-01 00:00:02     True
2000-01-01 00:00:03    False
2000-01-01 00:00:04    False
Name: z, dtype: bool

In [8]: from dask.distributed import Client

In [9]: c = Client()  # creates a local "cluster" on my laptop

In [10]: from dask_xgboost import train
/home/mrocklin/Software/anaconda/lib/python3.5/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)

In [11]: param = {'max_depth': 2, 'eta': 1, 'silent': 1, 'objective': 'binary:logistic'}  # taken from example

In [12]: bst = train(c, param, df, labels)
/home/mrocklin/Software/anaconda/lib/python3.5/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)
/home/mrocklin/Software/anaconda/lib/python3.5/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)
/home/mrocklin/Software/anaconda/lib/python3.5/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)
/home/mrocklin/Software/anaconda/lib/python3.5/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)
[14:46:20] Tree method is automatically selected to be 'approx' for faster speed. to use old behavior(exact greedy algorithm on single machine), set tree_method to 'exact'
[14:46:20] Tree method is automatically selected to be 'approx' for faster speed. to use old behavior(exact greedy algorithm on single machine), set tree_method to 'exact'
[14:46:20] Tree method is automatically selected to be 'approx' for faster speed. to use old behavior(exact greedy algorithm on single machine), set tree_method to 'exact'
[14:46:20] Tree method is automatically selected to be 'approx' for faster speed. to use old behavior(exact greedy algorithm on single machine), set tree_method to 'exact'

In [13]: bst
Out[13]: <xgboost.core.Booster at 0x7fbaacfd17b8>

рдпрджрд┐ рдХреЛрдИ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб рдпрд╣рд╛рдВ рд╣реИ: https://github.com/mrocklin/dask-xgboost/blob/master/dask_xgboost/core.py

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВ XGBoost рдореЗрдВ рдирдпрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдореБрдЭреЗ рдЪреАрдЬреЗрдВ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИрдВред

рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦрд┐рд▓реМрдирд╛ рдЙрджрд╛рд╣рд░рдг https://github.com/dmlc/xgboost/tree/master/demo/data рдореЗрдВ рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ libsvm рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИ, рдФрд░ рдЗрд╕реЗ numpy рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдХреБрдЫ рднреА рдмрдбрд╝рд╛ (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)? рдпрд╛ рдордирдорд╛рдирд╛ рдЖрдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИ?

рдпрд╛, рд╢рд╛рдпрдж рдПрдХ рдмреЗрд╣рддрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: "рдЖрдк (рдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрдврд╝рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдФрд░) рдпрд╣рд╛рдВ рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ?"

рднрд╡рди рдЕрдм рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореИрдВ рдореЙрдбрд▓ рдХреЛ рд╡рд╛рдкрд╕ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (рдЕрдЪрд╛рд░/рдЕрдирдкрд┐рдХрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ) рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдбреЗрдЯрд╛ рдкрд░ bst.predict рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

Doing rabit call after Finalize

рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рдереА рдХрд┐, рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдореЙрдбрд▓ рд╕реНрд╡-рдирд┐рд╣рд┐рдд рд╣реИ рдФрд░ рдЕрдм рд░реИрдмрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдорд╢реАрди рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред predict рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИ?

рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдЕрднреА рднреА рд░реИрдмрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдореБрдЦреНрдпрддрдГ рдХреНрдпреЛрдВрдХрд┐ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ рдЕрднреА рднреА рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЗ рд╕рд╛рде рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рд╣реИред

рд╡реИрд╕реЗ рднреА рдордзреНрдпрдо рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ (рдХреНрд▓рд╕реНрдЯрд░ рдПрдирд╡реА рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА), рдХреБрдЫ pyspark рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ

рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рдХрдард┐рди рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (1 рдмрд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде 1 рдбреЗрдЯрд╛рд╕реЗрдЯ рдЖрдЬрд╝рдорд╛рдПрдВ)ред рдХрд╛рдЧрд▓ рдХреБрдЫ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд▓рдЧрднрдЧ 10 рдорд┐рд▓рд┐рдпрди рд╣реИрдВред

рдпрд╣ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдПрдпрд░рд▓рд╛рдЗрдВрд╕ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкреНрд░рдпреЛрдЧ рджрд┐рдЦрд╛рддреА рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджрд╕рд┐рдпреЛрдВ рд▓рд╛рдЦ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдФрд░ рджрд╕рд┐рдпреЛрдВ рдХреЙрд▓рдо рдореЗрдВ рд╣реИ (рд╣рдЬрд╛рд░реЛрдВ рдПрдХ-рд╣реЙрдЯ-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рдж?) рдЙрдирдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ 100k рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдирдореВрдирд╛ рд▓рд┐рдпрд╛ рдФрд░ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЗрд╕ рдирдореВрдиреЗ рд╕реЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯред рд╕рдВрднрд╡рдд: рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╣рдо рдЗрд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣реА рдХреЛрд░ рдкрд░ рдкрд╛рдВрдбрд╛ рдФрд░ xgboost рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдбреЗрдЯрд╛ рдкреНрд░реАрдкреЗ, рдкреИрд░рд╛рдореАрдЯрд░, рдпрд╛ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

In [1]: import pandas as pd

In [2]: df = pd.read_csv('train-0.1m.csv')

In [3]: df.head()
Out[3]: 
  Month DayofMonth DayOfWeek  DepTime UniqueCarrier Origin Dest  Distance  \
0   c-8       c-21       c-7     1934            AA    ATL  DFW       732   
1   c-4       c-20       c-3     1548            US    PIT  MCO       834   
2   c-9        c-2       c-5     1422            XE    RDU  CLE       416   
3  c-11       c-25       c-6     1015            OO    DEN  MEM       872   
4  c-10        c-7       c-6     1828            WN    MDW  OMA       423   

  dep_delayed_15min  
0                 N  
1                 N  
2                 N  
3                 N  
4                 Y  

In [4]: labels = df.dep_delayed_15min == 'Y'

In [5]: del df['dep_delayed_15min']

In [6]: df = pd.get_dummies(df)

In [7]: len(df.columns)
Out[7]: 652

In [8]: import xgboost as xgb
/home/mrocklin/Software/anaconda/lib/python3.5/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)

In [9]: dtrain = xgb.DMatrix(df, label=labels)

In [10]: param = {}  # Are there better choices for parameters?  I could use help here

In [11]: bst = xgb.train(param, dtrain)  # or other parameters here?
[17:50:28] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 124 extra nodes, 0 pruned nodes, max_depth=6
[17:50:30] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 120 extra nodes, 0 pruned nodes, max_depth=6
[17:50:32] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 120 extra nodes, 0 pruned nodes, max_depth=6
[17:50:33] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 116 extra nodes, 0 pruned nodes, max_depth=6
[17:50:35] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 112 extra nodes, 0 pruned nodes, max_depth=6
[17:50:36] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 114 extra nodes, 0 pruned nodes, max_depth=6
[17:50:38] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 106 extra nodes, 0 pruned nodes, max_depth=6
[17:50:39] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 116 extra nodes, 0 pruned nodes, max_depth=6
[17:50:41] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 104 extra nodes, 0 pruned nodes, max_depth=6
[17:50:43] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 100 extra nodes, 0 pruned nodes, max_depth=6

In [12]: test = pd.read_csv('test.csv')

In [13]: test.head()
Out[13]: 
  Month DayofMonth DayOfWeek  DepTime UniqueCarrier Origin Dest  Distance  \
0   c-7       c-25       c-3      615            YV    MRY  PHX       598   
1   c-4       c-17       c-2      739            WN    LAS  HOU      1235   
2  c-12        c-2       c-7      651            MQ    GSP  ORD       577   
3   c-3       c-25       c-7     1614            WN    BWI  MHT       377   
4   c-6        c-6       c-3     1505            UA    ORD  STL       258   

  dep_delayed_15min  
0                 N  
1                 N  
2                 N  
3                 N  
4                 Y  

In [14]: test_labels = test.dep_delayed_15min == 'Y'

In [16]: del test['dep_delayed_15min']

In [17]: test = pd.get_dummies(test)

In [18]: len(test.columns)  # oops, looks like the columns don't match up
Out[18]: 670

In [19]: dtest = xgb.DMatrix(test)

In [20]: predictions = bst.predict(dtest)  # this fails because of mismatched columns

рд╡реИрд╕реЗ рднреА, рдпрд╣рд╛рдБ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдПрдпрд░рд▓рд╛рдЗрдВрд╕ рдбреЗрдЯрд╛рд╕реЗрдЯ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЗрд░реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред

cc @TomAugspurger , рдЬреЛ рдЙрд╕ рддрд░рд╣ рдХреЗ рдЖрджрдореА рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдбрд╕реНрдХ рдФрд░ рдкреНрд░реЗрдбрд┐рдХреНрдЯ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореИрдВ рд╣рдореЗрд╢рд╛ рд░реИрдмрд┐рдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╢реБрджреНрдз рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд▓рд╕реА рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЛ рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрдВрднреАрд░ рдЕрд╡рд░реЛрдзрдХ рдирд╣реАрдВ рд╣реИред

рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рдореБрджреНрджреЛрдВ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рджреЛ рд╕рд╡рд╛рд▓:

  1. рдХреНрдпрд╛ рдореИрдВ рдПрдХ рд╣реА рд░реИрдмрд┐рдЯ рд╕рддреНрд░ рдореЗрдВ рдХрдИ рдмрд╛рд░ Booster.predict рдкрд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?
  2. рдХреНрдпрд╛ рдореИрдВ рдЕрд▓рдЧ рдереНрд░реЗрдб рдкрд░ rabit.init , Booster.predict рдФрд░ rabit.finalize рдкрд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдПрдХ рдирдпрд╛ рдЯреНрд░реИрдХрд░ рдмрдирд╛рддрд╛ рд╣реВрдВ, рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдкрд░ rabit.init рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрдм рдореИрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдзрд╛рдЧреЗ рдореЗрдВ Booster.predict рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ (рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдб рдкреВрд▓ рд░рдЦрддрд╛ рд╣реИ) рдореБрдЭреЗ Doing rabit call after Finalize рдЬреИрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред рдХреЛрдИ рд╕реБрдЭрд╛рд╡?

рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдЕрднреА рднреА рд░реИрдмрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдореБрдЦреНрдпрддрдГ рдХреНрдпреЛрдВрдХрд┐ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ рдЕрднреА рднреА рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЗ рд╕рд╛рде рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдБред рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реЗ рдореЗрд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдорд╢реАрди рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХреЛ рдХреНрд░рдордмрджреНрдз-рд╕реНрдерд╛рдирд╛рдВрддрд░рдг-deserialize рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдХреЛрдИ рд░реИрдмрд┐рдЯ рдиреЗрдЯрд╡рд░реНрдХ рди рд╣реЛред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реИрдмрд┐рдЯ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдмрд┐рдирд╛ рд░реИрдмрд┐рдЯ рдХреЗ рдбреЗрдЯрд╛ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдВ рд░реИрдмрд┐рдЯ-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдЙрджрд╛рд╣рд░рдг рдбреЗрдЯрд╛рд╕реЗрдЯ / рд╕рдорд╕реНрдпрд╛
рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдорд╛рдирдХ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛:

https://github.com/Microsoft/LightGBM/wiki/Experiments#parallel -experiment

XGBoost (#1950) рдХреЗ рдирдП рдмрд┐рдирд┐рдВрдЧ + рдлрд╛рд╕реНрдЯ рд╣рд┐рд╕реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦрд┐рд▓реМрдирд╛ рдЙрджрд╛рд╣рд░рдг https://github.com/dmlc/xgboost/tree/master/demo/data рдореЗрдВ рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ libsvm рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИ, рдФрд░ рдЗрд╕реЗ numpy рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЖрдкрдХреЛ рдЗрд╕ рдкреАрдЖрд░ рдореЗрдВ рд╕реНрдХреЗрд▓реЗрд░ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ: https://github.com/scikit-learn/scikit-learn/pull/935

@mrocklin рдореЙрдбрд▓ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ рд╡рд┐рддрд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реАрдорд╛ (рдЬрдм рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреА рд╣реИ) рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рд░реИрдмрд┐рдЯ рдХреЙрд▓ рд╣реБрдЖ)ред

рдЕрдм рдЬрдм рдЖрдк рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ rabit.init (рдмрд┐рдирд╛ рдХреБрдЫ рдкрд╛рд╕ рдХрд┐рдП, рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ) рдХрд░реЗрдВ

рд╣рд╛рдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИред dask-xgboost рдЕрдм рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: https://github.com/mrocklin/dask-xgboost/commit/827a03d96977cda8d104899c9f42f52dac446165

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб @tqchen рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореЗрд░реЗ рд╕реНрдерд╛рдиреАрдп рд▓реИрдкрдЯреЙрдк рдкрд░ рдПрдпрд░рд▓рд╛рдЗрдВрд╕ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдирдореВрдиреЗ рдкрд░ dask.dataframe рдФрд░ xgboost рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рдмрдХреЛ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдПрдХреНрд╕рдЬреАрдмреАрдУрд╕реНрдЯ рдХреЗ рдПрдкреАрдЖрдИ рддрддреНрд╡ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдпрд╛рдж рдЖ рд░рд╣реЗ рд╣реИрдВ?

In [1]: import dask.dataframe as dd

In [2]: import dask_xgboost as dxgb

In [3]: df = dd.read_csv('train-0.1m.csv')

In [4]: df.head()
Out[4]: 
  Month DayofMonth DayOfWeek  DepTime UniqueCarrier Origin Dest  Distance  \
0   c-8       c-21       c-7     1934            AA    ATL  DFW       732   
1   c-4       c-20       c-3     1548            US    PIT  MCO       834   
2   c-9        c-2       c-5     1422            XE    RDU  CLE       416   
3  c-11       c-25       c-6     1015            OO    DEN  MEM       872   
4  c-10        c-7       c-6     1828            WN    MDW  OMA       423   

  dep_delayed_15min  
0                 N  
1                 N  
2                 N  
3                 N  
4                 Y  

In [5]: labels = df.dep_delayed_15min == 'Y'

In [6]: del df['dep_delayed_15min']

In [7]: df = df.categorize()

In [8]: df = dd.get_dummies(df)

In [9]: data_train, data_test = df.random_split([0.9, 0.1], random_state=123)

In [10]: labels_train, labels_test = labels.random_split([0.9, 0.1], random_state=123)

In [11]: from dask.distributed import Client

In [12]: client = Client()  # in a large-data situation I probably should have done this before calling categorize above (which requires computation)

In [13]: param = {}  # Are there better choices for parameters?

In [14]: bst = dxgb.train(client, {}, data_train, labels_train)
[14:00:46] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 120 extra nodes, 0 pruned nodes, max_depth=6
[14:00:48] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 120 extra nodes, 0 pruned nodes, max_depth=6
[14:00:50] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 122 extra nodes, 0 pruned nodes, max_depth=6
[14:00:53] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 118 extra nodes, 0 pruned nodes, max_depth=6
[14:00:55] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 120 extra nodes, 0 pruned nodes, max_depth=6
[14:00:57] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 114 extra nodes, 0 pruned nodes, max_depth=6
[14:00:59] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 118 extra nodes, 0 pruned nodes, max_depth=6
[14:01:01] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 118 extra nodes, 0 pruned nodes, max_depth=6
[14:01:04] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 94 extra nodes, 0 pruned nodes, max_depth=6
[14:01:06] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 102 extra nodes, 0 pruned nodes, max_depth=6

In [15]: bst
Out[15]: <xgboost.core.Booster at 0x7f689803af60>

In [16]: predictions = dxgb.predict(client, bst, data_test)

In [17]: predictions
Out[17]: 
Dask Series Structure:
npartitions=1
None    float32
None        ...
Name: predictions, dtype: float32
Dask Name: _predict_part, 9 tasks

рдореЗрд░рд╛ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдЙрджреНрджреЗрд╢реНрдп рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдмреНрд▓реЙрдЧрдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдФрд░ рд╡реНрдпрдХреНрддрд┐ рдЬрд┐рд╕реЗ XGBoost рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рд╣реЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рде рдЖрдПред (рдореИрдВ, рдпрд╣рд╛рдВ рд╣рд░ рдХрд┐рд╕реА рдХреА рддрд░рд╣, рдЙрд╕реА рд╕рдордп рдЗрд╕ рддрд░рд╣ рдХреА рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред)

рдореИрдВ рдПрдпрд░рд▓рд╛рдЗрдВрд╕ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ S3 рдмрд╛рд▓реНрдЯреА рдореЗрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдХреНрд░рд┐рдЯреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдиреНрдпрд╛рдп рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ @szilard рд╕реЗ рдкреНрд░рдпреЛрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХрд╛ рдиреНрдпрд╛рдп рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣рдо predictions > 0.5 рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП labels_test рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╢рд╛рдпрдж рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╡рд░реНрдЧреАрдХрд░рдг (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдиреБрд╕рдВрдзрд╛рди рдпрд╛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ) рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХрд╣рдиреЗрд╡рд╛рд▓рд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рддрд░реАрдХрд╛ рдЖрд░рдУрд╕реА рд╡рдХреНрд░ (рдПрдпреВрд╕реА) рдХреЗ рддрд╣рдд рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ "рд╡реНрдпрд╡рд╕рд╛рдп" рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдореАрдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЙрдбрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрд╛рджрд┐рддред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣рдо рд▓реЗрдмрд▓_рдЯреЗрд╕реНрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди> 0.5 рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╣рд╛рдВред рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ рдкрд░ рдЗрд╕рдХрд╛ рдорд╛рдзреНрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд╕рдЯреАрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рд╕реЗрдЯ рдЕрд╕рдВрддреБрд▓рд┐рдд рд╣реЛ (рдХреНрд▓рд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреНрд▓рд┐рдХ рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрднрд╛рд╡)ред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ ROC AUC рд╕реНрдХреЛрд░ рдПрдХ рдмреЗрд╣рддрд░ рдореАрдЯреНрд░рд┐рдХ рд╣реИред

from sklearn.metrics import roc_auc_score
print(roc_auc_score(labels_test, predictions))

рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ predictions рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдПрдХ 1D рд╕рд░рдгреА рд╣реИред

@mrocklin рдПрдХ рдЕрдиреБрд╡рд░реНрддреА рдкреНрд░рд╢реНрди, рдХреНрдпрд╛ dask рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ? рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬреАрдЖрдИрдПрд▓ рдХреЗ рдХрд╛рд░рдг рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди xgboost рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рд░реВрдк рд╕реЗ рд╕рдордиреНрд╡рдп рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ xgboost рдХреЗ nthread рддрд░реНрдХреЛрдВ рдХреЛ рдЙрд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрддреНрддрд░ "рд╣рд╛рдВ" рд╣реИред рдбрд╕реНрдХ рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдиреНрдпреВрдордкреА, рдкрд╛рдВрдбрд╛, рдПрд╕рдХреЗрд▓рд░реНрди рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣реИ рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд┐рд░реНрдл рд╕реА рдФрд░ рдлреЛрд░рдЯреНрд░рд╛рди рдХреЛрдб рд╣реИрдВ, рдЬреЛ рдкрд╛рдпрдерди рдХреЗ рд╕рд╛рде рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВред GIL рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рд▓реЛрдЧ рдкрд╛рдЗрд╕реНрдкрд╛рд░реНрдХ рдЖрд░рдбреАрдбреА рдХреЗ рд╕рдорд╛рди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбреИрд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рджреЗрдЦреЗрдВ dask.bag ) рдФрд░ рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдореВрд╣ рдЕрд▓реНрдкрдордд рдореЗрдВ рд╣реИред

рддреЛ рд╣рд╛рдБ, Dask рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо XGBoost рдХреЛ рдПрдХрд╛рдзрд┐рдХ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ? рдореЗрд░реЗ рдЕрдм рддрдХ рдХреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓реЗ рдЙрдЪреНрдЪ CPU рдЙрдкрдпреЛрдЧ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░реЗ?

XGBoost рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ nthread рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдорд╢реАрди рдкрд░ (рдЙрд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдмрдЬрд╛рдп) рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реАрдкреАрдпреВ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрд╣ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдПрдХ рд╣реА рдорд╢реАрди рдХреЛ рдХрдИ рдХрд░реНрдордЪрд╛рд░реА рд╕реМрдВрдкреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП nthread рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╡рд░реНрдХрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрддрдо рдХреЛрд░ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд▓рдЧрднрдЧ 4 рдереНрд░реЗрдб рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдЬрд╝рд░реВрд░, рдореЗрдВ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
https://github.com/mrocklin/dask-xgboost/commit/c22d066b67c78710d5ad99b8620edc55182adc8f

рд╕реЛрдо, 20 рдлрд░рд╡рд░реА, 2017 рдХреЛ рд╢рд╛рдо 6:31 рдмрдЬреЗ, рддрд┐рдпрд╛рдирдХреА рдЪреЗрди рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

XGBoost рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реАрдкреАрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛
рдорд╢реАрди рдкрд░ рдзрд╛рдЧреЗ (рдЙрд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдмрдЬрд╛рдп) рдпрджрд┐ nthread рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдорд╢реАрдиред

рдЗрд╕рд▓рд┐рдП nthread рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ
рдХреЛрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд╣рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдкреНрд░рддрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ 4 рдзрд╛рдЧрд╛

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dmlc/xgboost/issues/2032#issuecomment-281205747 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AASszPELRoeIvqEzyJhkKumIs-vd0PHiks5reiJngaJpZM4L_PXa
.

рдиреЛрдЯрдмреБрдХ: https://gist.github.com/19c89d78e34437e061876a9872f4d2df
рд▓рдШреБ рд╕реНрдХреНрд░реАрдирдХрд╛рд╕реНрдЯ (рдЫрд╣ рдорд┐рдирдЯ): https://youtu.be/Cc4E-PdDSro

рдЖрд▓реЛрдЪрдирд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

@mrocklin рдорд╣рд╛рди рдбреЗрдореЛ! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рдо рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ 'tree_method': 'hist', 'grow_policy': 'lossguide' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди (рдФрд░ рд╕рдВрднрд╡рддрдГ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ) рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @ogriselред рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рд╕рдордп рдЫрд╣ рдорд┐рдирдЯ рд╕реЗ рдПрдХ рдорд┐рдирдЯ рддрдХ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдЗрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд░рд╣рд╛ рд╣реВрдБред рдХреНрдпрд╛ рдЯреНрд░реЗрди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ XGBoost рд╕рдВрдЪрд╛рд▓рди рд╣реИ рдФрд░ рд╣рдо рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

@tqchen рдпрд╛ @ogrisel рдпрджрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ https://github.com/mrocklin/dask-xgboost/blob/master/dask_xgboost/core.py рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рддреЛ рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реВрдЪреА рдореЗрдВ рд╡рд┐рджреЗрд╢реА рдХреЛрдбрдмреЗрд╕ рдХреЛ рджреЗрдЦрдирд╛ рд╣рдореЗрд╢рд╛ рдЙрдЪреНрдЪ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ рддреЛ рдореИрдВ рд░реАрдбрдореЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬреЛрдбрд╝реВрдВрдЧрд╛, рдкреАрдкреАрдкреАрдЖрдИ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╣рдо рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЯреНрд░реЗрди рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ

рдореИрдВрдиреЗ dask-xgboost рдХреЛ PyPI рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ https://github.com/dask/dask-xgboost рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ

рдпрд╣рд╛рдВ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП @tqchen рдФрд░ @ogrisel рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рд╕рд╣рдпреЛрдЧ рдиреЗ рдЗрд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ред

рдЕрдЧрд░ рд▓реЛрдЧ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдЙрдирдХреА рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рддрдм рддрдХ рдмрдВрджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

FabHan picture FabHan  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Str1ker17 picture Str1ker17  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tqchen picture tqchen  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nicoJiang picture nicoJiang  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

RanaivosonHerimanitra picture RanaivosonHerimanitra  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ