2016-02-12 51 views
1

我正在使用SparkR,我需要知道如何預測它們的新值和準確性。預測R/SparkR中的新值和精度

這是輸入,sample of data.csv

Classes ‘data.table’ and 'data.frame': 100 obs. of 8 variables: 
$ LINESET  : chr "DG1000420" "DG1000420" "DG1000420" "DG1000420" ... 
$ TIMEINTERVAL: int 1383378600 1383394800 1383556800 1383679200 1383695400 1383718800 1383857400 1383873600 1383996000 1384269600 ... 
$ SmsIn  : num 77.4 76.6 99.2 63.7 10.7 ... 
$ SmsOut  : num 47.74 48.56 26.08 62.39 9.43 ... 
$ CallIn  : num 19.602 31.509 38.003 23.206 0.707 ... 
$ CallOut  : num 22.93 34.97 71.64 37.23 1.61 ... 
$ Internet : num 435 502 363 465 295 ... 
$ ValueAmp : num 39.8 32.9 81.4 94.3 54.2 ... 

我的模型是

glm(ValueAmp~SmsIn+SmsOut+CallIn+CallOut+Internet+TIMEINTERVAL,data=Consumi,family="gaussian") 

我想知道哪些是ValueAmp和新的價值觀他們的準確性。

我試圖做這樣的事情,正如databricks所說,但不是我所尋找的,我認爲,對於錯誤,我得到的值類似-30/+40 不是很準確嗎?

training<-createDataFrame(sqlContext,Consumi) 
model <- glm(ValueAmp ~SmsIn+SmsOut+CallIn+CallOut+Internet, 
      family = "gaussian", data =training) 
summary(model) 
preds<- predict(model,training) 
errors <- select(
    preds, preds$label, preds$prediction, preds$LINESET, 
    alias(preds$label - preds$prediction, "error")) 

那麼R或SparkR(最好是)有一種方法來估計具有高精度的新值嗎?

回答

1

首先您已經理解了Spark®線性模型與由工具(如R)提供的局部線性模型之間的區別。一般而言,它是一個近似值(通常使用Gradient Descent的某個變體實現)與精確值解決方案。雖然進一步保證最佳解決方案,但在大型數據集上使用通常費用昂貴。前者的規模很好,但只提供弱保證,並且可以高度依賴於輸入參數。

通常,當您使用漸變下降時,您必須調整模型參數。在SparkR和線性迴歸(高斯模型)的情況下,它們是:

  • α - 彈性淨混合參數
  • 拉姆達 - 正則化參數
  • 求解器 - 精確算法被用於訓練模型

選擇解算器後,必須對其餘參數進行調整,通常使用hyperparameter optimization的一些變體。不幸的是,沒有通用的方法,很大程度上取決於特定的數據集。

參見:

+0

清除一如既往地感謝。 – DanieleO