美文网首页
机器学习——模型构建/特征筛选(2)

机器学习——模型构建/特征筛选(2)

作者: Bioinfor生信云 | 来源:发表于2023-12-06 09:46 被阅读0次

在R中创建模型

线性回归模型输出:

library(caret)
lm_lm    <- lm(Sale_Price ~ ., data = ames)
lm_glm   <- glm(Sale_Price ~ ., data = ames, 
                family = gaussian)
lm_caret <- train(Sale_Price ~ ., data = ames, 
                  method = "lm")

lm()和glm()是两个不同的算法引擎,可用于拟合线性模型,caret::train()是一个元引擎(聚合器),允许应用几乎任何直接引擎与method = "<method-name>"。

使用直接引擎计算预测类概率的语法。

元引擎使您在指定输入和提取输出的方式上更加一致,但不如直接引擎灵活。

重采样方法

重采样方法提供了一种替代方法,它允许重复的将感兴趣的模型拟合到部分训练数据并测试其在其他部分上的性能。两种最常用的重采样方法包括k-fold cross validation和bootstrapping。

k-折交叉验证

k-折交叉验证(k-fold cross-validation)是一种常用于评估机器学习模型性能的技术。它将数据集分成k个子集,然后进行k轮训练和测试。在每一轮中,模型会在k-1个子集上进行训练,并在剩下的一个子集上进行测试。这个过程重复k次,每次使用不同的子集作为测试集,其余的作为训练集。最终,得到k个性能评估的平均值,这些评估通常是精度、准确率、召回率等指标。

Bootstrapping

Bootstrapping是一种统计学上的重抽样技术,用于通过从原始数据集中有放回地抽取样本来估计统计量的分布。该技术可以用于估计参数的置信区间、模型评估等。Bootstrapping的基本思想是通过对原始数据的重复采样来近似地生成大量可能的抽样分布,从而更好地了解估计量的性质。

偏差方差权衡

预测误差可以分解为两个重要的子成分:“偏差”引起的误差和“方差”引起的误差。模型最小化偏差和方差的能力之间通常存在权衡。了解不同的错误来源如何导致偏差和方差有助于我们改进数据拟合过程,从而产生更准确的模型。

偏差

偏差是我们模型的预期(或平均)预测与我们试图预测的正确值之间的差异。它衡量的是模型的预测与正确值之间的总体差距有多远,这提供了一个模型与数据底层结构的符合程度的感觉。

超参数调优

超参数(又名调整参数)是“旋转旋钮” ,用于控制机器学习算法的复杂性,从而控制偏差-方差权衡。并非所有算法都有超参数(例如,普通最小二乘法);但是,大多数至少有一个或多个。

具有不同k值的k最近邻模型

k近邻模型的网格搜索结果,评估的k值范围为2-150。当k较小时,我们会看到由于高模型方差导致的高误差值,当k较大时,我们也会看到由于高模型偏差而导致的高误差值;在k = 46处找到最佳模型。

模型评价

评估模型性能的更合理方法是通过损失函数评估预测准确性。损失函数是将预测值与实际值进行比较的指标(损失函数的输出通常称为误差或伪残差). 在执行重采样方法时,我们评估验证集的预测值与实际目标值的比较。例如,在回归中,一种测量误差的方法是取给定观察值的实际值和预测值之间的差值(这是普通线性回归中残差的通常定义)。模型的整体验证误差是通过汇总整个验证数据集的误差来计算的。

回归模型

MSE:均方误差是平方误差的平均值。

RMSE:均方根误差。这只是取MSE 指标的平方根。

偏差:平均残差的缩写。本质上,它提供了模型在使用最大似然估计时解释一组数据的变化的程度。

MAE:平均绝对误差。

RMSLE:均方根对数误差

R2:这是一个流行的指标,表示可从自变量预测的因变量方差的比例。

分类模型

错误分类:这是整体错误。

Mean per class error:这是每个类的平均错误率。

MSE:均方误差。

交叉熵(又名对数损失或偏差):类似于MSE,但它包含预测概

率乘以真实类别的对数。

基尼指数:主要用于基于树的方法,通常称为纯度度量,其中较小的值表示节点主要包含来自单个类的观察值。

在应用分类模型时,我们经常使用混淆矩阵来评估某些性能指标。混淆矩阵只是一个将实际分类水平(或事件)与预测分类水平进行比较的矩阵。

准确性:总体而言,分类器正确的频率是多少?

精度:分类器预测事件的准确度如何?该指标与最大化真阳性与假阳性比率有关。

灵敏度(又名召回率):分类器对实际事件的分类准确度如何?该指标与最大化真阳性与假阴性的比率有关。

特异性:分类器对实际非事件的分类准确度如何?

示例

library(pROC)
library(plotROC)
# 创建数据
set.seed(123)
response <- rbinom(200, size = 1, prob = .5)

set.seed(123)
curve1   <- rnorm(200, mean = response, sd = .40)

set.seed(123)
curve2   <- rnorm(200, mean = response, sd = .75)

set.seed(123)
curve3   <- rnorm(200, mean = response, sd = 2.0)

df <- tibble(response, curve1, curve2, curve3)

ggplot(df) + 
  geom_roc(aes(d = response, m = curve1), n.cuts = 0, size = .5, color = "#1E56F9") + 
  geom_roc(aes(d = response, m = curve2), n.cuts = 0, size = .5, color = "#7194F9") + 
  geom_roc(aes(d = response, m = curve3), n.cuts = 0, size = .5, color = "#B6C7F9") +
  geom_abline(lty = 'dashed') +
  annotate("text", x = .48, y = .46, label = c("No better than guessing"), 
           vjust = 1, angle = 34) +
  annotate("text", x = .3, y = .6, label = c("Ok"), 
           vjust = 1, angle = 33, color = "#B6C7F9") +
  annotate("text", x = .20, y = .75, label = c("Better"), 
           vjust = 1, angle = 33, color = "#7194F9") +
  annotate("text", x = .10, y = .96, label = c("Best"), 
           vjust = 1, angle = 33, color = "#1E56F9") +
  xlab("False positive rate") +
  ylab("True positive rate")

整合流程

为了说明此过程如何通过R 代码协同工作,让我们对住房数据进行简单评估

1.重采样方法:我们使用10-fold CV 重复5 次。

  1. 网格搜索:我们指定要评估的超参数值(k=2个,3个,4个,…,25).

  2. 模型训练和验证:我们使用预先指定的重采样过程( )、网格搜索( ) 和首选损失函数( ) 训练k最近邻( ) 模型。

示例

set.seed(123)
split <- initial_split(ames, prop = 0.7, strata = "Sale_Price")
ames_train  <- training(split)
ames_test   <- testing(split)

# 指定重采样策略
library(caret)
cv <- trainControl(
  method = "repeatedcv", 
  number = 10, 
  repeats = 5
)

# 创建超参数值网格
hyper_grid <- expand.grid(k = seq(2, 25, by = 1))

# 使用网格搜索调整 knn 模型
knn_fit <- train(
  Sale_Price ~ ., 
  data = ames_train, 
  method = "knn", 
  trControl = cv, 
  tuneGrid = hyper_grid,
  metric = "RMSE"
)

knn_fit
ggplot(knn_fit)
Ames数据评估k 值范围为2-25 的k 最近邻模型的网格搜索结果

分享此片推文即可获取代码

欢迎关注Bioinfor 生信云!

相关文章

  • 机器学习-初-傻瓜入门系列之该怎么学?

    一个机器学习的常规套路: 1.数据收集(爬虫的用处)和预处理2.特征选择和模型构建特称选择(特征工程):将人类认识...

  • 【特征工程】特征选择与特征学习

    特征选择与特征学习 在机器学习的具体实践任务中,选择一组具有代表性的特征用于构建模型是非常重要的问题。特征选择通常...

  • 入门

    了解机器学习 标签需要通过机器学习模型判断出的结果 特征机器学习模型进行判断的条件(可以是很多的变量) 模型机器学...

  • 对抗样本生成的近期工作( 2018年9月)

    绝大多数的机器学习模型,本质上来说,都是通过抽取数据特征,构建数学判别公式,用数学模型来模拟人的判断过程。在特征抽...

  • 手把手教你用Python实现自动特征工程!Python为何这么秀

    任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置。 特...

  • 使用R语言进行机器学习特征选择①

    特征选择是实用机器学习的重要一步,一般数据集都带有太多的特征用于模型构建,如何找出有用特征是值得关注的内容。 使用...

  • 特征工程-指标筛选

    数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。 在数据建模前期,很重要的一步是特征工程的构建,...

  • 特征选择与特征学习算法研究--笔记1

    特征选择与特征学习算法研究 2.1特征选择 特征选择过程特征选择是对数据进行预处理的机器学习算法,通过从数据中筛选...

  • 机器学习

    机器学习 Chapter One 样本和模型 样本 标签 特征 模型 模型定义了特征与标签之间的关系。例如,垃圾邮...

  • Spark机器学习笔记

    Spark机器学习笔记 机器学习 机器学习是数据通过算法构建出模型并对模型进行评估,评估的性能如果达到要求就拿这个...

网友评论

      本文标题:机器学习——模型构建/特征筛选(2)

      本文链接:https://www.haomeiwen.com/subject/fokywdtx.html