逻辑回归(Logistic regression)

发布于 2024-02-27 19:13:48 字数 2400 浏览 25 评论 0

逻辑回归被广泛的应用在二分类上,它是一种线性模型通过

\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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

绅刃

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文