R-модели Tbats, распределенные по кластеру Spark с использованием SparkR? - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь найти сезонных клиентов с большим количеством данных, используя модель R в блоках данных Azure. В настоящее время я могу запустить приведенный ниже код Python / R, который использует модель R: «Tbats» в блоках данных и дает результаты, которые я хочу получить для небольшой группы клиентов. Тем не менее, он не работает в масштабе / параллельно / распределен как искровая работа, как это в настоящее время написано.

Если я переписываю это в sparkR, могу ли я даже использовать модель tbats? Я также был бы открыт для использования других моделей для определения сезонности, если нет способа запустить tbats в качестве распределенной искровой работы в блоках данных. Я вижу, что у sparkR есть библиотека ML "mLlib", но я не вижу модель сезонности, которую я могу использовать.

Или если я возьму этот код ниже и сделаю все это R (используя цикл применения? Вместо каждого цикла python?), Возможно ли выполнить масштабирование в кластере блоков данных?

Просто интересно, может ли кто-нибудь указать мне правильное направление, поскольку я очень новичок в этом. В конечном счете, я просто пытаюсь очень быстро идентифицировать сезонных клиентов, используя некоторую модель ML с большим количеством данных.

Спасибо!

for customerid, dataForCustomer in df2.groupby(by=['customer_id']):
    startYear = dataForCustomer.head(1).iloc[0].yr
    startMonth = dataForCustomer.head(1).iloc[0].mnth
    endYear = dataForCustomer.tail(1).iloc[0].yr
    endMonth = dataForCustomer.tail(1).iloc[0].mnth

    #Creating a time series object
    customerTS = stats.ts(dataForCustomer.usage.astype(int),
                          start=base.c(startYear,startMonth),
                          end=base.c(endYear, endMonth), 
                          frequency=12)
    r.assign('customerTS', customerTS)

    ##Here comes the R code piece
    try:
        seasonal = r('''
                        fit<-tbats(customerTS, seasonal.periods = 12,     
    use.parallel = TRUE)
                        fit$seasonal
                     ''')
    except: 
        seasonal = 1

    df_list.append({'customer_id': customerid, 'seasonal': seasonal})
...