为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
机器学习

1.特征工程概述

特征工程其实是一个偏工程的术语,在数据库领域可能叫做属性选择,而在统计学领域叫变量选择,其实是一个意思:即最大限度地从原始数据中提取有用信息以供算法和模型使用,通过寻求最优特征子集等方法使模型预测性能最高。

我们以经典的鸢尾花数据iris为例,分别根据已有的特征选择的框架图,本人结合网络上给出的python代码总结,添加了运用R实现特征选择的方法,来对比两种语言的差异。

1导入数据

data("iris")
# 特征矩阵iris.data <- iris[, -length(iris)]# 目标向量iris.targer <- iris[, length(iris)]

4.2数据预处理

  • 标准化(要求数据符合正态性)

scale(iris.data, center = TRUE, scale = TRUE)# 或者运用BBmisc包中的normalize函数library(BBmisc)
normalize(iris.data)
  • 依据公式构建区间放缩函数

maxmin <- function(col) {
    maxmin <- (col - min(col))/(max(col) - min(col))    return(maxmin)}
maxmin(iris.data)
  • 归一化

此处的归一化是指依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”.归一化后样本各属性的平方和为1.

norm <- function(data) {
    norm = apply(data, 1, function(x) {
        x/sqrt(sum(x^2))
    })
    norm = t(norm)    return(norm)}
norm(iris.data)

标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布。而归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]区间内,因此区间放缩法是归一化的一种。

Filter法(过滤法)

按照变量内部特征或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数选择特征.与特定的学习算法无关,因此具有较好的通用性,作为特征的预筛选器非常合适。缺点主要是由于算法的评价标准独立于特定的学习算法,所选的特征子集在分类准确率方面通常低于Wrapper方法。

1.方差选择法

计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征.

library(mlr)# 创建tasktrain.task <- makeClassifTask(data = iris, target = "Species")# 查看变量选择可选方法listFilterMethods()# 选择计算方差,进行特征选择var_imp <- generateFilterValuesData(train.task, method = "variance", nselect = 3)
var_imp# 对衡量特征指标进行绘图plotFilterValues(var_imp, feat.type.cols = TRUE, n.show = 3)



作者:夜神moon
链接:https://www.jianshu.com/p/f6f6b0d6fc5c


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消