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%。

https://www.sohu.com/a/228212348_349736


机器学习与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-线性回归的更多相关文章

  1. 【机器学习与R语言】9- 支持向量机

    目录 1.理解支持向量机(SVM) 1)SVM特点 2)用超平面分类 3)对非线性空间使用核函数 2. 支持向量机应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 ...

  2. 【机器学习与R语言】7-回归树和模型树

    目录 1.理解回归树和模型树 2.回归树和模型树应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理解回归树和模型树 决策树用于数值预测: 回归树:基于到达 ...

  3. 【机器学习与R语言】1-机器学习简介

    目录 1.基本概念 2.选择机器学习算法 3.使用R进行机器学习 1.基本概念 机器学习:发明算法将数据转化为智能行为 数据挖掘 VS 机器学习:前者侧重寻找有价值的信息,后者侧重执行已知的任务.后者 ...

  4. 【机器学习与R语言】13- 如何提高模型的性能?

    目录 1.调整模型参数来提高性能 1.1 创建简单的调整模型 2.2 定制调整参数 2.使用元学习来提高性能 2.1 集成学习(元学习)概述 2.2 bagging 2.3 boosting 2.4 ...

  5. 【机器学习与R语言】12- 如何评估模型的性能?

    目录 1.评估分类方法的性能 1.1 混淆矩阵 1.2 其他评价指标 1)Kappa统计量 2)灵敏度与特异性 3)精确度与回溯精确度 4)F度量 1.3 性能权衡可视化(ROC曲线) 2.评估未来的 ...

  6. 【机器学习与R语言】11- Kmeans聚类

    目录 1.理解Kmeans聚类 1)基本概念 2)kmeans运作的基本原理 2.Kmeans聚类应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解Km ...

  7. 【机器学习与R语言】10- 关联规则

    目录 1.理解关联规则 1)基本认识 2)Apriori算法 2.关联规则应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解关联规则 1)基本认识 购物 ...

  8. 【机器学习与R语言】8- 神经网络

    目录 1.理解神经网络 1)基本概念 2)激活函数 3)网络拓扑 4)训练算法 2.神经网络应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 1.理解神经网络 1) ...

  9. 【机器学习与R语言】5-规则学习算法

    目录 1.分类规则原理 1.1 1R单规则算法 1.2 RIPPER算法 2. 规则学习应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估性能 5)提高性能 6)选择决策树中的分类规则 ...

随机推荐

  1. the Agiles Scrum Meeting 10

    会议时间:2020.4.18 20:00 1.每个人的工作 今天已完成的工作 个人结对项目增量开发组:完成自动创建仓库功能 issues:增量组:准备评测机制,增加仓库自动创建和管理 团队项目增量开发 ...

  2. Noip模拟72 2021.10.9

    T1 出了个大阴间题 真就以为他出了个大阴间题就没写,打个暴力就跑了 数据范围显然摆明是状压 设$f[sta][0/1]$表示在已经选择的集合$sta$中,$A$的最大值是$A$还是$A+1$ 然后按 ...

  3. C语言基础资料,可以看看哦

    C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成.格式.以及良好的书写风格,使小伙伴对c语言有个初步认识. 例1:计算两个整数之和的c程序: #include main() { in ...

  4. C/C++中浮点数输出精度的问题

    本文使用C++语言书写,对于C的小伙伴们,如果编译不通过的话--就说明C里面没有这个内容,可以跳过 通常来说,我们书写程序主要只用整形变量 (signed/unsigned) (long/long l ...

  5. golang常用库:cli命令行/应用程序生成工具-cobra使用

    golang常用库:cli命令行/应用程序生成工具-cobra使用 一.Cobra 介绍 我前面有一篇文章介绍了配置文件解析库 Viper 的使用,这篇介绍 Cobra 的使用,你猜的没错,这 2 个 ...

  6. JAVA笔记7__接口应用/Object类/简单工厂模式/静态代理模式/适配器模式

    /** * 接口应用 */ public class Main { public static void main(String[] args) { Person p = new Person(&qu ...

  7. 测试开发【提测平台】分享13-远程搜索和路由$route使用实现新建提测需求

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 本篇继续提测平台开发,按惯例先给出学习的思维导图,以便快速了解学习知识和平台功能实现的重点. 基本知识点学习 远程搜索 显示的数据通过输入 ...

  8. 一文读懂什么是渲染管线(7k字)

    01 | 渲染基础 渲染(Render)定义 渲染在电脑绘图中是指软件从模型生成图像的过程,通俗讲就是在计算机里面给虚拟世界"拍照".渲染主要分为两种,一种是预渲染(pre-ren ...

  9. ABAP——系统状态&用户状态修改、查询

    前言:在ABAP开发中有时候会涉及到状态的变更,比如销售订单的系统状态变更未审批->已审批.设备的在运->报废等,在这里就需要用到标准函数I_CHANGE_STATUS.STATUS_CH ...

  10. 【JAVA】笔记(1)---JVM内存图;方法重载条件;输入方法;转义字符;强制类型转换;变量分类及区别;Java命名规范;

    Java命名规范: 1.包:全部字母小写: 2.类+接口:所有单词的首字母大写: 3.变量+方法:第一个单词的首字母小写,其余单词首字母大写: 3.常量名:所有字母均大写,且用下划线" _ ...