ipas 机器学习工程师 初级- 特徵工程:特徵选择

在机器学习中,直观的会认为资料量越大、特徵越多,能获得更好的预测结果,但实际上资料要判断是否有离群值(异常值)、是否资料不平衡、是否有杂讯(EX:NA值、误植、格式不一致)等等;特徵要担心是否有相依性问题(共线性)、维度灾难、过拟合、运算成本等等一堆问题,并不是绝对的「越多越好」。

--离群值 可能导致模型的预测偏差
--资料不平衡 可能导致模型偏向多数类别,影响公正性
--特徵之间可能存在相依性问题,也就是两个或多个特徵高度相关,EX:身高与体重、房屋面积与价格,模型会很难区分这些特徵的具体影响 或是试图解释不存在的关係,都可能导致模型的预测能力降低、模型解释能力下降(我们试图解释这个模型为甚么这么预测时,可能会出现类似这两个特徵高度相关 所以只要在乎其中一个特徵即可,而忽略了常理上会认为重要的特徵 之类的状况)、过于敏感(因为模型在试图解释不存在的关係 所以训练时 新增资料进去,模型参数可能会波动剧烈)
--维度灾难 EX:成百上千维,空间体积提高太快,因此数据变得很稀疏(也就是资料量不够的概念),EX:一维时 表现10个点 看起来蛮密集的,在提升到二维时,感觉变稀疏了,再提升到三维,感觉空间更空旷了
--过度细节导致模型容易过拟合

BTW 资料处理时 还要注意特徵的类别 是否需要进行编码、特徵是否稀疏(要挑适合的模型)等

所以

资料有数据清洗的方式,这边则提供几个最基础的特徵选择 (毕竟重点是考证嘛~)

1.设置变异数门槛:

设定一个特徵变异数的门槛值,当特徵的变异数低于此门槛值,即剔除此特徵
变异数:一组数据中 各个数值与平均值的偏差程度(一组数据中,每笔资料与此组数据平均值的差异的平方的平均值),也就是一个特徵的变异数越大,代表这个特徵的资料起伏越大;相反 变异数越小,代表此特徵的资料都非常相近逻辑就是:当一个特徵的变异数较小,代表这个特徵的所有数值都非常接近(也就是同质性很高),也就是这个特徵的讯息量很低、对模型贡献度很低,所以可以丢掉他 EX:资料中 全部都是男性,那将"性别"这个特徵栏位删除,对模型基本不会产生影响但缺点是 可能在某些情况下对目标(Target)预测有影响 EX:是否带伞跟是否走出建筑没太大关係,有伞没伞都可以走出建筑,但在雨天时是否带伞 就会对是否走吃出建筑有较大关係
from sklearn import feature_selection as fsfs.VarianceThreshold()

对于连续型(regression、有程度差异)的目标,可以採用f_regression, mutual_info_regression等
对于离散型(classification、无程度差异)的目标,可以採用chi2,mutual_info_classif等
根据每个特徵对目标的重要性,选择排名前K个特徵 或 前K%的特徵

from sklearn import feature_selection as fsfs.SelectKBest(fs.mutual_info_regression,percentile=10).fit_transform(X,y)#使用个数挑选、互信息回归、取前10%的特徵fs.SelectPercentile(fs.chi2,k=20).fit_transform(X,y)#使用百分比挑选、卡方检定、取前20个特徵

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章