逻辑回归(Logistic regression)
逻辑回归被广泛的应用在二分类上,它是一种线性模型通过
\begin{equation}
f(w) := \lambda\, R(w) +
\frac1n \sum_{i=1}^n L(w;x_i,y_i)
\label{eq:regPrimal}
\ .
\end{equation}
公式去训练模型,其损失函数如下:
$$ L(w;x,y) := \log(1+\exp( -y w^T x)) $$
对于分类问题该算法输出一个逻辑回归模型。我们输入新的数据会输出相应的分类标签,通过该模型进行预测的函数如下:
$$\mathrm{f}(z) = \frac{1}{1 + e^{-z}}$$
在这里默认情况下 $z = w^T x$,如果 $\mathrm{f}(w^T x) > 0.5$ 输出是+1 否则是 -1,因此不像 SVMs(svm 是根据 z > 0 来判断的,这里是 0.5)。
Logistic 回归分析可以推广到多分类 Logistic 回归进行训练和预测的多类分类问题。例如,K 可能的结果,一个结果可以作为一个 分支,和其他的 K−1 结果可分别对回归结果的分支。
多类分类问题,该算法将输出一个 Logistic 回归模型,其中包含 K−1 Logistic 回归模型回归分析出第一类。给出了一个新的数据点,K−1 将并行运行,并具有最大概率的类将被选择作为预测类。
我们实现了两个算法解决 logistic 回归:mini-batch 梯度下降和 L-BFGS。我们建议在 L-BFGS 更快的收敛比 mini-batch 梯度下降。
例子(Example)
下面的代码加载了多类型数据集并将它分割成训练集和测试集,然后使用 LogisticRegressionWithLBFGS 逻辑回归模型来训练测试集和相关评估
val PATH = "file:///Users/lzz/work/SparkML/"
import org.apache.spark.SparkContext
import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS, LogisticRegressionModel}
import org.apache.spark.mllib.evaluation.MulticlassMetrics
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.util.MLUtils
// Load training data in LIBSVM format.
val data = MLUtils.loadLibSVMFile(sc, PATH+"data/mllib/sample_libsvm_data.txt")
// Split data into training (60%) and test (40%).
val splits = data.randomSplit(Array(0.6, 0.4), seed = 11L)
val training = splits(0).cache()
val test = splits(1)
// Run training algorithm to build the model
val model = new LogisticRegressionWithLBFGS().setNumClasses(10).run(training)
// Compute raw scores on the test set.
val predictionAndLabels = test.map { case LabeledPoint(label, features) =>
val prediction = model.predict(features)
(prediction, label)
}
// Get evaluation metrics.
val metrics = new MulticlassMetrics(predictionAndLabels)
val precision = metrics.precision
println("Precision = " + precision)
// Save and load model
//model.save(sc, "myModelPath")
//val sameModel = LogisticRegressionModel.load(sc, "myModelPath")
Precision = 1.0
Name: Syntax Error.
Message:
StackTrace:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Java 实现几种排序算法
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论