का उपयोग कर स्पार्क में ग्रेडियेंट बूस्टिंग पेड़ के मामले में कक्षाओं की संभावनाओं की भविष्यवाणी करना यह ज्ञात है कि स्पार्क में जीबीटी एस आपको अब तक लेबल की भविष्यवाणी करता है।वृक्ष उत्पादन
मैं एक वर्ग के लिए भविष्यवाणी की संभावनाओं की गणना करने की कोशिश कर के बारे में सोच रहा था (जैसे कि सभी उदाहरणों एक निश्चित पत्ती के अंतर्गत आने वाले)
कोड का निर्माण करने के GBT के
import org.apache.spark.SparkContext
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.tree.GradientBoostedTrees
import org.apache.spark.mllib.tree.configuration.BoostingStrategy
import org.apache.spark.mllib.tree.model.GradientBoostedTreesModel
import org.apache.spark.mllib.util.MLUtils
//Importing the data
val data = sc.textFile("data/mllib/credit_approval_2_attr.csv") //using the credit approval data set from UCI machine learning repository
//Parsing the data
val parsedData = data.map { line =>
val parts = line.split(',').map(_.toDouble)
LabeledPoint(parts(0), Vectors.dense(parts.tail))
}
//Splitting the data
val splits = parsedData.randomSplit(Array(0.7, 0.3), seed = 11L)
val training = splits(0).cache()
val test = splits(1)
// Train a GradientBoostedTrees model.
// The defaultParams for Classification use LogLoss by default.
val boostingStrategy = BoostingStrategy.defaultParams("Classification")
boostingStrategy.numIterations = 2 // We can use more iterations in practice.
boostingStrategy.treeStrategy.numClasses = 2
boostingStrategy.treeStrategy.maxDepth = 2
boostingStrategy.treeStrategy.maxBins = 32
boostingStrategy.treeStrategy.subsamplingRate = 0.5
boostingStrategy.treeStrategy.maxMemoryInMB =1024
boostingStrategy.learningRate = 0.1
// Empty categoricalFeaturesInfo indicates all features are continuous.
boostingStrategy.treeStrategy.categoricalFeaturesInfo = Map[Int, Int]()
val model = GradientBoostedTrees.train(training, boostingStrategy)
model.toDebugString
यह मैं गहराई के 2 पेड़ देता है सादगी के लिए नीचे के रूप में 2:
Tree 0:
If (feature 3 <= 2.0)
If (feature 2 <= 1.25)
Predict: -0.5752212389380531
Else (feature 2 > 1.25)
Predict: 0.07462686567164178
Else (feature 3 > 2.0)
If (feature 0 <= 30.17)
Predict: 0.7272727272727273
Else (feature 0 > 30.17)
Predict: 1.0
Tree 1:
If (feature 5 <= 67.0)
If (feature 4 <= 100.0)
Predict: 0.5739387416147804
Else (feature 4 > 100.0)
Predict: -0.550117566730937
Else (feature 5 > 67.0)
If (feature 2 <= 0.0)
Predict: 3.0383669122382835
Else (feature 2 > 0.0)
Predict: 0.4332824083446489
मेरे सवाल यह है: मैं ऊपर पेड़ की तरह उपयोग कर सकते हैं भविष्यवाणी की संभावनाओं की गणना करने के:
पेड़ 1 से पेड़ 0 + पत्ती स्कोर से/(1 + exp (पत्ता स्कोर (पेड़ 1 से पेड़ 0 + पत्ती स्कोर से पत्ती स्कोर) भविष्यवाणी
exp के लिए इस्तेमाल किया सुविधा सेट में हर मामले के संबंध में))
यह मुझे एक प्रकार की संभावना देता है। लेकिन यह सुनिश्चित नहीं है कि यह करने का सही तरीका है या नहीं। इसके अलावा यदि कोई दस्तावेज समझाता है कि कैसे पत्ता स्कोर (भविष्यवाणी) की गणना की जाती है। अगर कोई साझा कर सकता है तो मैं वास्तव में आभारी रहूंगा।
कोई भी सुझाव शानदार होगा।
आप यहां संभाव्यता गणना कोड क्यों पेस्ट नहीं करते हैं। इससे समुदाय की मदद मिलेगी – Run2
बस – Run2
से ऊपर कुछ कोड जोड़ा गया यह एक्स (x)/(1 + exp (x)) = 1/(1 + exp (-x)) के बाद अन्य उत्तरों के समान है, और वजन पेड़ 0 के लिए सीखने की दर – Brian