def loess_abstract(estimator, threshold, param, length, migration_time, utilization):
    """ The abstract Loess algorithm.

    :param estimator: A parameter estimation function.
     :type estimator: function

    :param threshold: The CPU utilization threshold.
     :type threshold: float

    :param param: The safety parameter.
     :type param: float

    :param length: The required length of the utilization history.
     :type length: int

    :param migration_time: The VM migration time in time steps.
     :type migration_time: float

    :param utilization: The utilization history to analize.
     :type utilization: list(float)

    :return: A decision of whether the host is overloaded.
     :rtype: bool
    """
    if len(utilization) < length:
        return False
    estimates = estimator(utilization[-length:])
    prediction = (estimates[0] + estimates[1] * (length + migration_time))
    return param * prediction >= threshold