In one embodiment, a computer-implemented method includes receiving training data including a plurality of records, each record having a plurality of attributes. The training data is horizontally parallelized across two or more processing elements. This horizontal parallelizing includes dividing the training data into two or more subsets of records; assigning each subset of records to a corresponding processing element of the two or more processing elements; transmitting each subset of records to its assigned processing element; and sorting, at the two or more processing elements, the two or more subsets of records to two or more candidate leaves of a decision tree. The output from horizontally parallelizing is converted into input for vertically parallelizing the training data. The training data is vertically parallelized across the two or more processing elements. The decision tree is grown based at least in part on the horizontally parallelizing, the converting, and the vertically parallelizing.
Please help me write a proper abstract based on the patent claims. CLAIM: 1-7. (canceled) 8. A system comprising: a memory; and one or more computer processors, communicatively coupled to the memory, the one or more computer processors configured to: receive training data comprising a plurality of records, each of the plurality of records comprising a plurality of attributes; horizontally parallelize the training data across two or more processing elements, wherein to horizontally parallelize the training data, the one or more computer processors are further configured to: divide the training data into two or more subsets of records; assign each subset of records to a corresponding processing element of the two or more processing elements; transmit each subset of records to its assigned processing element; and sort, at the two or more processing elements, the two or more subsets of records to two or more candidate leaves of a decision tree; convert output from the horizontally parallelizing into input for vertically parallelizing the training data; vertically parallelize the training data across the two or more processing elements, wherein to vertically parallelize the training data, the one or more computer processors are further configured to: divide the training data into two or more subsets of attributes; assign each subset of attributes to a corresponding processing element of the two or more processing elements; and transmit each subset of attributes of the plurality of records to the assigned processing element for the subset of attributes; and grow the decision tree based at least in part on the horizontally parallelizing, the converting, and the vertically parallelizing. 9. The system of claim 8, wherein to convert the output from the horizontally parallelizing into the input for vertically parallelizing the training data, the one or more computer processors are further configured to: divide the two or more candidate leaves of the decision tree into two or more subsets of candidate leaves; and assign each of the two or more subsets of candidate leaves to a corresponding processing element of the two or more processing elements. 10. The system of claim 8, wherein to convert the output from the horizontally parallelizing into the input for vertically parallelizing the training data, the one or more computer processors are further configured to: receive statistics related to the two or more candidate leaves to which the two or more subsets of records were sorted; and aggregate the statistics for each of the two or more candidate leaves. 11. The system of claim 8, wherein to vertically parallelize the training data, the one or more computer processors are further configured to: calculate, at each of the two or more processing elements, an information gain of splitting a first candidate leaf on each of the attributes in the subset of attributes assigned to the processing element. 12. The system of claim 11, the one or more processors further configured to: aggregate results of the calculating the information gain; and determine how to split each of the two or more candidate leaves of the decision tree, based at least in part on the aggregated results. 13. The system of claim 12, wherein to grow the decision tree based at least in part on the horizontally parallelizing, the converting, and the vertically parallelizing, the one or more computer processors are further configured to update the decision tree based on the determining how to split each of the two or more candidate leaves. 14. A computer program product for generating a decision tree, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform a method comprising: receiving training data comprising a plurality of records, each of the plurality of records comprising a plurality of attributes; horizontally parallelizing the training data across two or more processing elements, wherein the horizontally parallelizing the training data comprises: dividing the training data into two or more subsets of records; assigning each subset of records to a corresponding processing element of the two or more processing elements; transmitting each subset of records to its assigned processing element; and sorting, at the two or more processing elements, the two or more subsets of records to two or more candidate leaves of a decision tree; converting output from the horizontally parallelizing into input for vertically parallelizing the training data; vertically parallelizing the training data across the two or more processing elements, wherein the vertically parallelizing the training data comprises: dividing the training data into two or more subsets of attributes; assigning each subset of attributes to a corresponding processing element of the two or more processing elements; and transmitting each subset of attributes of the plurality of records to the assigned processing element for the subset of attributes; and growing the decision tree based at least in part on the horizontally parallelizing, the converting, and the vertically parallelizing. 15. The computer program product of claim 14, wherein the converting the output from the horizontally parallelizing into the input for vertically parallelizing the training data comprises: dividing the two or more candidate leaves of the decision tree into two or more subsets of candidate leaves; and assigning each of the two or more subsets of candidate leaves to a corresponding processing element of the two or more processing elements. 16. The computer program product of claim 14, wherein the converting the output from the horizontally parallelizing into the input for vertically parallelizing the training data comprises: receiving statistics related to the two or more candidate leaves to which the two or more subsets of records were sorted; and aggregating the statistics for each of the two or more candidate leaves. 17. The computer program product of claim 14, wherein the vertically parallelizing the training data further comprises: calculating, at each of the two or more processing elements, an information gain of splitting a first candidate leaf on each of the attributes in the subset of attributes assigned to the processing element. 18. The computer program product of claim 17, further comprising: aggregating results of the calculating the information gain; and determining how to split each of the two or more candidate leaves of the decision tree, based at least in part on the aggregated results. 19. The computer program product of claim 18, wherein the growing the decision tree based at least in part on the horizontally parallelizing, the converting, and the vertically parallelizing comprises updating the decision tree based on the determining how to split each of the two or more candidate leaves. 20. The computer program product of claim 14, further comprising repeating the horizontally parallelizing, the converting, and the vertically parallelizing until the decision tree is complete.