当前位置:   article > 正文

Spark算法初入门-逻辑回归篇3_regparam

regparam

目录

逻辑回归:

二项逻辑回归:

多项逻辑回归:


原文参考Apache Spark官方网站http://spark.apache.org/docs/2.2.0/ml-classification-regression.html#logistic-regression

逻辑回归
 

逻辑回归是预测分类相应的常用方法。广义线性回归的一个特例是预测结果的概率。在spark.ml逻辑回归中,可以使用二线逻辑回归来预测二元结果,或者可以使用多项逻辑回归来预测多类结果。使用该family参数在这两种算法之间继续宁选择,或者保持不设置,Spark将推断出正确的变量。

通过将family参数设置为“多项式”,可以将多项逻辑回归用于二进制分类。它将产生两组系数和两个截距。

但在不具有常量非零列的数据集上截断LogsticRegressionMode时,Spark MLlib为常量非零列输出零系数。

此行为与R glmnet相同,但是不同于LIBSVM。

---在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;之前我们也谈到了肿瘤分类的例子,区别一个肿瘤是恶性的还是良性的。

--来自黄海广老师的学习笔记-https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

二项逻辑回归:
 

我们从二元的分类问题开始讨论。

我们将因变量(dependent variable)可能属于的两个类分别成为负向类(negative class)和正向类(positive class),则因变量y∈0,1 ,其中0表示负向类,1表示正向类。

-------------------------上图来自黄海广老师个人学习笔记----https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

我们要用线性回归算法来解决一个分类问题,对于分类,y取值为0或者1,但如果你使用的线性回归,那么假设函数的输出值可能远大于1,或者远小于0,即使所有训练样本的标签y都等于0或1.尽管我们知道标签应该取值0或1,但是如果算法得到的值永远大于1或者小于0的话,就会觉得很奇怪。所以我们在接下来要研究的算法就叫做逻辑回归算法,这个算法的性质是:它的输出值永远在0到1之间。

Spark官网给出的逻辑回归的Demo:
 

  1. /**
  2. * 逻辑回归的Demo
  3. */
  4. object LRDemo {
  5. def main(args: Array[String]): Unit = {
  6. // 加载训练数据
  7. val session = SparkSession
  8. .builder()
  9. .master("local[3]")
  10. .appName("LRDemo")
  11. .getOrCreate()
  12. val training = session.read.format("libsvm").load("C:\\tools\\spark-2.2.1\\data\\mllib\\sample_libsvm_data.txt")
  13. val lr = new LogisticRegression()
  14. .setMaxIter(10) // 设置最大迭代次数 默认100
  15. .setRegParam(0.3) // 设置正则化系数 默认0 用于防止过拟合
  16. .setElasticNetParam(0.8) // 正则化范式比(默认0),正则化有两种形式:L1(Lasso)和L2(Ridge),L1用于特征的稀疏化,L2用于防止过拟合
  17. // 训练模型
  18. val lrModel = lr.fit(training)
  19. // 打印coefficients和intercept
  20. println(s"每个特征对应系数Coefficients:${lrModel.coefficients} 截距Intercept: ${lrModel.intercept}")
  21. // 我们也可以使用多项式进行二元分类
  22. val mlr = new LogisticRegression()
  23. .setMaxIter(10) // 设置最大迭代次数 默认100
  24. .setRegParam(0.3) // 设置正则化系数 默认0 用于防止过拟合
  25. .setElasticNetParam(0.8) // 正则化范式比(默认0),正则化有两种形式:L1(Lasso)和L2(Ridge),L1用于特征的稀疏化,L2用于防止过拟合
  26. .setFamily("multinomial")
  27. val mlrModel = mlr.fit(training)
  28. println(s"Multinomial coefficients:${mlrModel.coefficientMatrix}")
  29. println(s"Multinomial coefficients:${mlrModel.interceptVector}")
  30. }
  31. }

多项逻辑回归:
 

待续~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/547123
推荐阅读
相关标签
  

闽ICP备14008679号