【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

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页