R语言机器学习篇——逻辑回归2(多分类)

参考书籍:陈强.机器学习及R应用.北京:高等教育出版社,2020

在多分类的问题中,同样可用逻辑回归进行预测,这里的一些概念便不做过多介绍,重点说明参数的意义。

多分类回归参数意义

如果响应变量y分为k类,则多项逻辑模型有k-1个参数向量,假设将第一类作为参照类别,这里对参数的解释可采取如下思路

对于响应变量y归属于第k类的条件概率与属于第一类的条件概率之比为:

这就是事件属于第k类与属于第1类发生几率之比,也称为相对风险。

进一步讨论,如果某特征变量为离散变量(如性别、职业),则可通过几率比来解释变量对y的作用,假设该变量增加一单位,从,记上面条件概率的新值为,则可计算新几率与原几率的比率,即为“几率比”,也称为相对风险比率(RRR):

因此若参数为0.12时,几率比为1.13,这意味着参数增加一单位时,相对于参照方案,新几率变为原几率的1.13倍,

案例介绍

使用R包mlbench中的Glass数据集,此数据的响应变量Type包括6种玻璃的类别,为了法医学的目的,有时需要根据玻璃碎片折射率以及不同化学元素含量,预测犯罪现场的玻璃类别,因此特征变量包括RI(折射率)以及8种不同元素在相应氧化物中的重量占比,该数据集共有214个观测值,1个响应变量以及9个特征变量,最后呈现的部分数据如下所示

library(mlbench)
data(Glass)
head(Glass)  #展示数据前六行

运用对应的图像查看响应变量以及部分特征变量的关系,如下图所示

#条形图、箱线图
par(mfrow=c(1,2))
plot(Glass$Type,xlab="Glass Type",ylab="count",main="Barplot")
boxplot(Mg~Type,data=Glass,main="Mg Boxplot")

运用图像观察数据的大致特征之后,需要对数据集随机选取30%的数据作为测试集,剩下70%的作为训练集,并使用R的nnet包进行多项逻辑回归,其中函数multinom中的参数“maxit=500”表示最多迭代500次,默认值为100。在最终的输出结果为300次迭代后算法收敛,最后查看回归结果,如下:

#生成训练集、测试集
set.seed(1)
train_index<-sample(214,150)
train<-Glass[train_index,]
test<-Glass[-train_index,]

#多项逻辑回归
library(nnet)
fit<-multinom(Type~.,data=train,maxit=500) #maxit表示迭代次数
summary(fit)  #查看回归结果
#几率比
exp(coef(fit))

回归结果展示了多项逻辑回归的系数(每个特征变量有5行回归系数,都是以第1类的响应变量为参照类别),相应的标准误,以及残差偏离度和AIC。接下来可查看几率比或相对风险比率

通过观察几率比的结果,可得出如下结论(以特征变量RI为例,它是一个数值型变量):得到的5行几率比都以第一类响应变量为参考类别,当RI增加一单位时,则选择响应变量为2的几率为选择响应变量为1的8.334931e+130倍,同理选择响应变量为3的几率是选择1的5.232673e+13倍(待补充)

接下来运用训练集,查看训练误差,可得到预测的条件概率,也可直接预测得出响应变量的类别,这里用预测出的响应变量类别,得到混淆矩阵,再计算预测的准确率

#训练误差
prob_train<-predict(fit,type="probs")   #参数表示预测条件概率
head(prob_train)

pred_train<-predict(fit,type="class")     #class就是预测响应变量类别
head(pred_train)
table<-table(predicted=pred_train,Actual=train$Type) #混淆矩阵
table
Accuracy<-sum(diag(table))/sum(table)  #准确率
#[1] 0.7333333

上图为训练集预测响应变量类别的混淆矩阵,由于行列数较多,因此在计算准确率时,用diag直接得出主对角线上的数字,再用sum进行求和,最后计算出准确率为0.733,。接下来再去考察测试集的误差,并计算出可衡量多分类逻辑模型预测效果的Kappa指数

#测试误差
prob_test<-predict(fit,type="probs",newdata=test)
head(prob_test)
pred_test<-predict(fit,type="class",newdata=test)     
head(pred_test)
table<-table(predicted=pred_test,Actual=test$Type) 
table
Accuracy<-sum(diag(table))/sum(table)
#[1] 0.609375

#计算Kappa函数
library(vcd)
Kappa(table)

上图为测试集的混淆矩阵,根据它计算出的准确率为0.609,比训练集的低,这表示训练误差可能低估了真实的测试误差,虽然测试集的准确率较低,但由于是一个多分类问题,随机猜测是不现实的。

最后计算出Kappa指标,如下:

得出最后的指标为0.436,这意味着预测值与实际值之间具有中等一致性,说明预测效果一般。

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习的二分类逻辑回归是一种用于解决二分类问题的算法。它的基本思路是通过构建一个逻辑回归模型,将输入的特征映射到一个概率值,然后根据这个概率值进行分类逻辑回归使用sigmoid函数来处理hθ(x),这是因为sigmoid函数的取值范围在0到1之间,可以将线性回归的输出转化为一个概率值。通过sigmoid函数处理后,我们可以将概率值大于等于0.5的样本划分为正类,概率值小于0.5的样本划分为负类。这使得逻辑回归可以用于二分类问题。 代价函数的推导和偏导数的推导是为了求解逻辑回归模型的参数θ。通过最小化代价函数,我们可以得到最优的参数θ,使得模型的预测结果与真实标签最接近。 在正则化逻辑回归,我们引入正则化项的目的是为了避免过拟合。正则化项可以惩罚模型的参数,使得参数的值趋向于较小的数值,从而降低模型的复杂度。在正则化逻辑回归,一般不对θ1进行正则化,这是因为θ1对应的是截距项,它影响模型在原点的位置,不参与特征的权重调整。 综上所述,机器学习的二分类逻辑回归是一种通过构建逻辑回归模型,利用sigmoid函数将线性回归的输出转化为概率值,并通过最小化代价函数求解参数θ的算法。正则化逻辑回归则是在逻辑回归的基础上引入正则化项,避免过拟合问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [吴恩达机器学习逻辑回归(二分类)](https://blog.csdn.net/q642634743/article/details/118831665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [机器学习笔记——逻辑回归之二分类](https://blog.csdn.net/dzc_go/article/details/108855689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值