赞
踩
目录
原文参考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:
- /**
- * 逻辑回归的Demo
- */
- object LRDemo {
- def main(args: Array[String]): Unit = {
-
- // 加载训练数据
- val session = SparkSession
- .builder()
- .master("local[3]")
- .appName("LRDemo")
- .getOrCreate()
- val training = session.read.format("libsvm").load("C:\\tools\\spark-2.2.1\\data\\mllib\\sample_libsvm_data.txt")
-
- val lr = new LogisticRegression()
- .setMaxIter(10) // 设置最大迭代次数 默认100
- .setRegParam(0.3) // 设置正则化系数 默认0 用于防止过拟合
- .setElasticNetParam(0.8) // 正则化范式比(默认0),正则化有两种形式:L1(Lasso)和L2(Ridge),L1用于特征的稀疏化,L2用于防止过拟合
-
- // 训练模型
- val lrModel = lr.fit(training)
-
- // 打印coefficients和intercept
- println(s"每个特征对应系数Coefficients:${lrModel.coefficients} 截距Intercept: ${lrModel.intercept}")
-
- // 我们也可以使用多项式进行二元分类
- val mlr = new LogisticRegression()
- .setMaxIter(10) // 设置最大迭代次数 默认100
- .setRegParam(0.3) // 设置正则化系数 默认0 用于防止过拟合
- .setElasticNetParam(0.8) // 正则化范式比(默认0),正则化有两种形式:L1(Lasso)和L2(Ridge),L1用于特征的稀疏化,L2用于防止过拟合
- .setFamily("multinomial")
-
- val mlrModel = mlr.fit(training)
-
- println(s"Multinomial coefficients:${mlrModel.coefficientMatrix}")
- println(s"Multinomial coefficients:${mlrModel.interceptVector}")
- }
- }
待续~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。