本文主要是介绍【ML--04】第四课 logistic回归,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、什么是逻辑回归?
当要预测的y值不是连续的实数(连续变量),而是定性变量(离散变量),例如某个客户是否购买某件商品,这时线性回归模型不能直接作用,我们就需要用到logistic模型。
逻辑回归是一种分类的算法,它用给定的输入变量(X)来预测二元的结果(Y)(1/0,是/不是,真/假)。我们一般用虚拟变量来表示二元/类别结果。你可以把逻辑回归看成一种特殊的线性回归,只是因为最后的结果是类别变量,所以我们需要用胜算比取对数来作为因变量(Dependent Variable)。简单来说,逻辑回归是利用logit 函数拟合数据来预测某一个事件发生的概率的。
2、逻辑回归的性质
逻辑回归其实是属于广义线性模型(Generalized Linear Model)的一部分,用于处理线性回归没法处理的问题,
因为如果你用线性回归去处理逻辑回归的二元或类别输出变量时候,最后的结果就是你会得到极低的校正R平方。当然广义线性模型是一个统计上用的非常广的模型,它包含了不止线性回归,逻辑回归,还有泊松回归,ANOVA等等,感兴趣的可以继续进行这方面的阅读。
3、什么是广义线性模型(GLM)?
广义线性回归的基本公式是
g(E(y)) = α + βx1 + γx2
这里,g()是联系函数(link function),E(y) 是目标输出变量Y的期望值,而α + βx1 + γx2 是输入变量的线性组合(α,β,γ 都是需要用数据估计的参数)。联系函数的作用是将输出变量Y的期望值和输入变量X的线性组合可以连接起来,起到一个桥的作用。
4、如何求解逻辑回归的参数方程。
使用逻辑回归的分类算法时,可以通过梯度下降算法求得拟合的参数。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。
5、如何评价逻辑回归的模型表现
1、AIC准则
2、AUC/ROC曲线
3、混淆矩阵 (confusion matrix)
6、python玩转逻辑回归(单机)
#加载需要的包
from sklearn.linear_model import LogisticRegression
#假设在训练样本中你有输入变量X还有输出变量Y,在检验样本中你有输入变量x_test
#创建逻辑回归的目标模型
model=LogisticRegression()
# 用训练样本来生成你的模型与相应的参数
model.fit(X,y)
model.score(X,y)
#显示参数和截距
print('Coefficient:\n',model.coef_)
print('Intercept:\n',model.intercept_)
##用训练的模型来预测模型中的输出变量Y#
predicted= model.predict(x_test)
7、R语言玩转逻辑回归(单机)
#训练样本
x <- cbind(x_train,y_train)
# 用训练样本来生成你的模型与相应的参数
logistic<-glm(y_train~.,data= x,family='binomial')
# 显示逻辑回归的结果
summary(logistic)
#用训练的模型来预测模型中的输出变量Y#
predicted=predict(logistic,x_test)
8、spark MLlib 玩转逻辑回归(分布式)
import org.apache.spark.ml.classification.LogisticRegression// Load training data
val training = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")val lr = new LogisticRegression().setMaxIter(10).setRegParam(0.3).setElasticNetParam(0.8)// Fit the model
val lrModel = lr.fit(training)// Print the coefficients and intercept for logistic regression
println(s"Coefficients: ${lrModel.coefficients} Intercept: ${lrModel.intercept}")// We can also use the multinomial family for binary classification
val mlr = new LogisticRegression().setMaxIter(10).setRegParam(0.3).setElasticNetParam(0.8).setFamily("multinomial")val mlrModel = mlr.fit(training)// Print the coefficients and intercepts for logistic regression with multinomial family
println(s"Multinomial coefficients: ${mlrModel.coefficientMatrix}")
println(s"Multinomial intercepts: ${mlrModel.interceptVector}")
9、相关资料
机器学习:从编程的角度去理解逻辑回归
http://www.tuicool.com/articles/rimMba2
【机器学习经典算法源码分析系列】– 逻辑回归
http://www.tuicool.com/articles/Mf6fEzF
机器学习教程 十七-逻辑回归公式的数学推导
http://www.tuicool.com/articles/nIJZvam
这篇关于【ML--04】第四课 logistic回归的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!