文章目录
- 实验思维导图
- 1. 收集、探索和准备数据
- 1.1 收集数据
- 1.2 探索和准备数据
- 2. 基于数据训练模型
- 2.1 使用线性回归函数
- 2.2 建立模型
- 3. 评估模型的性能
- 4. 提高模型的性能
- 4.1 将年龄非线性化
- 4.2 数值转换二进制
- 4.3 改进模型
- 资料
- Reference
实验思维导图
1. 收集、探索和准备数据
1.1 收集数据
insurance <- read.csv("~\\insurance.csv",stringsAsFactors=TRUE)
#将character类型数据转换为factors类型(略)
1.2 探索和准备数据
str(insurance)
#查看变量及变量类型等
summary(insurance$charges)
#查看收入的分布:最小值/四分之一值/中位数/平均值/四分之三值/最大值
hist(insurance$charges)
#收入直方图,随着收入增多消费频率降低
table(insurance$region)
#查看region的统计,东南方居住的患者稍多一些
cor(insurance[c("age","bmi","children","charges")])
#age、bmi、children、charges四个变量的相关系数矩阵
#对称结构,其中age与charges两个变量相关系数最大
pairs(insurance[c("age","bmi","children","charges")])
#age、bmi、children、charges四个变量的散点图矩阵
#对称结构,其中age与charge呈正相关关系
2. 基于数据训练模型
2.1 使用线性回归函数
ins_model <- lm(charges~age+children+bmi+sex+smoker+region,data = insurance)
#lm()探索charges与其他变量的相关性
2.2 建立模型
ins_model <- lm(charges~.,data = insurance)
#lm()探索charges与除charges所有变量的相关性
3. 评估模型的性能
summary(ins_model)
#参数注释:
#1.Residuals(残差)部分提供了预测误差的主要统计量,其中有一些统计量明显是相当大的。
#由于残差是真实值减去预测值,所以最大误差值29992.8 表明该模型至少对一个案例的费用少预测了将近三万元
#2.星号表示模型中每个特征的预测能力。3 颗星的出现表示显著性水平为 0,即该特征极不可能是与因变量无关的变量
#而一个通常的做法局势使用 0.05 的显著性水平来表示统计意义上的显著变量。
#3.多元 R 方值(判定系数)提供了一种度量模型性能的方式,即从整体上,模型能多大程度解释因变量的值。#它类似于相关系数,因为它的值越接近于 1.0,模型解释数据的性能就越好。
#1.Residuals(残差)这个案例中最大误差值为29992.8,预测值与实际值
#2.星号越多相关性越强
#3.R-squared(R²)越接近1模型性能越好
4. 提高模型的性能
4.1 将年龄非线性化
insurance$age2 <- insurance$age^2
#使年龄变为非线性数据
4.2 数值转换二进制
insurance$bmi30 <- ifelse(insurance$bmi >= 30,1,0)
#大于30岁的bmi替换为1,否则替换为0,即肥胖人士指标
#添加新属性
4.3 改进模型
ins_model2 <- lm(charges~age+age2+children+bmi+sex+bmi30*smoker+region,data = insurance)
#使用新参数非线性的age2、肥胖与吸烟的相互作用bmi30*smoker
summary(ins_model2)
#1.优化后的残差最小值及最大值都变小了;
#2.拥有表示模型中每个特征的预测能力的星号的变量也变多了;
#3.多元 R 方值由原来的 0.75 变为 0.86,更接近于 1,说明模型解释数据的性能变好了。
资料
Reference