【机器学习与R语言】6-线性回归
1.理解回归
- 确定一个唯一的因变量(需预测的值)和一个或多个数值型的自变量(预测变量)之间的关系。
- 回归分析对数据间复杂关系建立模型,用来估计一种处理方法对结果影响和推断未来。也可用于假设检验。
- 线性回归:直线回归模型
- 简单线性回归:单一自变量
- 多元回归:多变量
也可对分类变量做回归:
- 逻辑回归:对二元分类的结果建模
- 泊松回归:对整型的计数数据建模
线性回归、逻辑回归、泊松回归以及其他许多回归都属于广义线性模型(GLM)。
1)简单线性回归
方程就是一条直线:
做回归分析时,设计对α和β寻找参数估计(一般用a和b来表示)。
2)普通最小二乘估计
普通最小二乘法(OLS):确定α和β的最优估计值,即斜率和截距的选择要使得误差(y的预测值与y的真实值之间的垂直距离,即残差)的平方和最小。
通过演算,使得误差平方最小的b值为:
即:
a的最优值为:
3)相关系数
Pearson相关系数:
经验规则(大拇指规则)来解释相关系数:
0.1-0.3弱相关;0.3-0.5中相关;0.5以上强相关,但必须根据上下文解释。
4)多元线性回归
多元回归方程:
可表示为:
经过推导(略),可计算向量β最佳估计:
可编写一个简单回归函数reg,输入y和x,返回一个估计的β系数矩阵:
reg <- function(y,x){
x <- as.matrix(x)
x <- cbind(Intercept=1,x)
#solve执行矩阵逆运算, %*%两个矩阵相乘
solve(t(x) %*% x) %*% t(x) %*% y
}
2.线性回归应用示例
预测医疗费用:利用病人的数据来预测他们的平均医疗费用,进而创建一个精算表来设定年度保费的价格。
1)收集数据
1338个案例,包括保险受益者,病人特点(年龄、性别、BMI、区域等)和历年计划计入的总医疗费用的特征。
数据下载:
链接: https://pan.baidu.com/s/1Hgn5jad2O1HCgNSJrzT9MA 提取码: vjr9
2)探索和准备数据
## Example: Predicting Medical Expenses ----
## Step 2: Exploring and preparing the data ----
insurance <- read.csv("insurance.csv", stringsAsFactors = TRUE)
str(insurance)
# summarize the charges variable
summary(insurance$expenses)
# histogram of insurance charges
hist(insurance$expenses)
# table of region
table(insurance$region)
# exploring relationships among features: correlation matrix
cor(insurance[c("age", "bmi", "children", "expenses")])
# visualing relationships among features: scatterplot matrix
pairs(insurance[c("age", "bmi", "children", "expenses")])
# more informative scatterplot matrix
library(psych)
pairs.panels(insurance[c("age", "bmi", "children", "expenses")])
两个变量相关性由椭圆形状表示:越拉伸相关性越强。每个变量的局部回归平滑曲线表示x轴和y轴变量之间的一般关系。倒U形(如age和bmi)
3)训练数据
## Step 3: Training a model on the data ----
ins_model <- lm(expenses ~ age + children + bmi + sex + smoker + region,
data = insurance)
ins_model <- lm(expenses ~ ., data = insurance) # this is equivalent to above
# see the estimated beta coefficients
ins_model
截距很难解释,没有内在意义,在实际中常常被忽略。
指定6个变量,但输出了10个系数:因为lm函数将虚拟编码自动应用于因子类型的变量中。
估计的系数是相对于参照类别解释的。
4)评估模型
## Step 4: Evaluating model performance ----
# see more detail about the estimated beta coefficients
summary(ins_model)
5)提高模型性能
①添加非线性关系
如添加一个高阶项到回归模型中,把模型当成多项式处理。比如年龄对医疗费用的影响可能不是恒定的,越老的人,治疗费越高,考虑将age创建一个新的非线性变量age^2
②将一个数值型变量转换为二进制指标
当一个特征的影响不是累积的,而是当特征的取值达到一个给定的阈值后才产生影响。比如BMI只有大于30时才有影响。
③加入相互作用的影响
当两个特征存在共同影响时,可考虑相互作用,如肥胖指标bmi30和吸烟指标smoker可能存在相互作用。
④综合以上三点一起改进
## Step 5: Improving model performance ----
# add a higher-order "age" term
insurance$age2 <- insurance$age^2
# add an indicator for BMI >= 30
insurance$bmi30 <- ifelse(insurance$bmi >= 30, 1, 0)
# create final model
ins_model2 <- lm(expenses ~ age + age2 + children + bmi + sex +
bmi30*smoker + region, data = insurance)
summary(ins_model2)
R方从0.75提高到了0.87,即模型现在能解释医疗费用变化的87%。
机器学习与R语言系列推文汇总:
【机器学习与R语言】1-机器学习简介
【机器学习与R语言】2-K近邻(kNN)
【机器学习与R语言】3-朴素贝叶斯(NB)
【机器学习与R语言】4-决策树
【机器学习与R语言】5-规则学习
【机器学习与R语言】6-线性回归
【机器学习与R语言】7-回归树和模型树
【机器学习与R语言】8-神经网络
【机器学习与R语言】9-支持向量机
【机器学习与R语言】10-关联规则
【机器学习与R语言】11-Kmeans聚类
【机器学习与R语言】12-如何评估模型的性能?
【机器学习与R语言】13-如何提高模型的性能?
【机器学习与R语言】6-线性回归的更多相关文章
- 【机器学习与R语言】9- 支持向量机
目录 1.理解支持向量机(SVM) 1)SVM特点 2)用超平面分类 3)对非线性空间使用核函数 2. 支持向量机应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 ...
- 【机器学习与R语言】7-回归树和模型树
目录 1.理解回归树和模型树 2.回归树和模型树应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理解回归树和模型树 决策树用于数值预测: 回归树:基于到达 ...
- 【机器学习与R语言】1-机器学习简介
目录 1.基本概念 2.选择机器学习算法 3.使用R进行机器学习 1.基本概念 机器学习:发明算法将数据转化为智能行为 数据挖掘 VS 机器学习:前者侧重寻找有价值的信息,后者侧重执行已知的任务.后者 ...
- 【机器学习与R语言】13- 如何提高模型的性能?
目录 1.调整模型参数来提高性能 1.1 创建简单的调整模型 2.2 定制调整参数 2.使用元学习来提高性能 2.1 集成学习(元学习)概述 2.2 bagging 2.3 boosting 2.4 ...
- 【机器学习与R语言】12- 如何评估模型的性能?
目录 1.评估分类方法的性能 1.1 混淆矩阵 1.2 其他评价指标 1)Kappa统计量 2)灵敏度与特异性 3)精确度与回溯精确度 4)F度量 1.3 性能权衡可视化(ROC曲线) 2.评估未来的 ...
- 【机器学习与R语言】11- Kmeans聚类
目录 1.理解Kmeans聚类 1)基本概念 2)kmeans运作的基本原理 2.Kmeans聚类应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解Km ...
- 【机器学习与R语言】10- 关联规则
目录 1.理解关联规则 1)基本认识 2)Apriori算法 2.关联规则应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解关联规则 1)基本认识 购物 ...
- 【机器学习与R语言】8- 神经网络
目录 1.理解神经网络 1)基本概念 2)激活函数 3)网络拓扑 4)训练算法 2.神经网络应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 1.理解神经网络 1) ...
- 【机器学习与R语言】5-规则学习算法
目录 1.分类规则原理 1.1 1R单规则算法 1.2 RIPPER算法 2. 规则学习应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估性能 5)提高性能 6)选择决策树中的分类规则 ...
随机推荐
- 这一篇 K8S(Kubernetes)我觉得可以了解一下!!!
点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 什么是Kubernetes? Kubernetes 是Google开源的分布式容器管理平台,是为 ...
- Noip模拟57 2021.9.20
规律总结:联考必爆炸 T1 2A 没$A$掉的大水题,但是是真的不知道$000$前面的$00$也算先导$0$,以后要长记性,这种东西不能再错了 再打三遍: $000$前面的$00$也算先导$0$ $0 ...
- Python课程笔记(二)
1.格式化输出 print("%d %d %s" % (15, 3.14, 12.8)) 对比C语言 printf("%d,%d,%s",15, 3.14, 1 ...
- 最详细的windows10系统封装教程
目录 自定义封装(定制)windows10教程 关于本教程及用到的工具的声明 第一阶段: 封装前的各种环境准备 安装vmware 创建虚拟机 对虚拟机进行分区 配置好BIOS 为虚拟机安装window ...
- C++实现一个SOAP客户端
目录 简介 实现客户端 准备xml文件 引入库文件 构建请求数据的xml 执行Http协议的POST方法 解析响应数据的xml 测试客户端 附件 简介 在C++中,一般使用gSOAP来实现客户端.服务 ...
- 30分钟通过Kong实现.NET网关
什么是Kong Openrestry是一个基于Nginx与Lua的高性能平台,内部有大量的Lua库.其中ngx_lua_moudule使开发人员能使用Lua脚本调用Nginx模块.Kong是一个Ope ...
- Docker+nginx搭建tomcat集群
1.环境准备: a.宿主机CentOS7 b.连接工具FinalShell c.镜像nginx1.20.1,tomcat (镜像拉取:docker pull 镜像名称) 2.创建nginx文件夹,to ...
- BugKu之备份是个好习惯
题目:备份是个好习惯 思路分析 打开题目,看到一个字符串. 联系到题目,就猜到肯定是源代码泄露,用工具扫一下,发现了index.php.bak,验证了我的猜想,下载下来看看. <?php /** ...
- Burp Suite Pro 2021.10 Full (macOS, Linux) -- 查找、发现和利用漏洞
申明:底层组件来自网络论坛或开源社区的分享,本站所有软件免费分享,仅供学习和测试使用,严禁用于任何商业用途!!! 请访问原文链接:https://sysin.cn/blog/burp-suite-pr ...
- win10+MX350显卡+CUDA10.2+PyTorch 安装过程记录 深度学习环境配置
https://blog.csdn.net/m0_37867091/article/details/105788637