1. An apparatus for providing resource allocation, the apparatus comprising: a data storage; and a processor communicatively connected to the data storage, the processor being configured to: determine a plurality of available resources and a plurality of applications; determine an input dataset, the input dataset comprising a plurality of data points indicating an expected resource usage occurring within a future time period and associated with one of the plurality of applications; classify the input dataset into a plurality of clusters based on proximity values of the resource requirements of a plurality of pre-provisioned resource configurations; and determine a plurality of pre-provisioned resource set types to pre-configure based on the plurality of available resources and the classified plurality of clusters; wherein a first pre-provisioned resource set type is configured to provide automatic resource scaling of a first plurality of the plurality of applications and a second pre-provisioned resource set type is configured to provide automatic resource scaling of a second plurality of the plurality of applications, the plurality of pre-provisioned resources types comprising the first and second pre-provisioned resource set types; and wherein the first pre-provisioned resource set type is distinct from the second pre-provisioned resource set type.