【ML--04】第四课 logistic回归

xiaoxiao2021-02-28  87

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

转载请注明原文地址: https://www.6miu.com/read-96132.html

最新回复(0)