当前位置: 首页 > news >正文

公司做网站报价吐鲁番seo招聘

公司做网站报价,吐鲁番seo招聘,阳城网站建设,金华专业网站制作特征选择是特征工程中的重要问题#xff08;另一个重要的问题是特征提取#xff09;#xff0c;坊间常说#xff1a;数据和特征决定了机器学习的上限#xff0c;而模型和算法只是逼近这个上限而已。由此可见#xff0c;特征工程尤其是特征选择在机器学习中占有相当重要的… 特征选择是特征工程中的重要问题另一个重要的问题是特征提取坊间常说数据和特征决定了机器学习的上限而模型和算法只是逼近这个上限而已。由此可见特征工程尤其是特征选择在机器学习中占有相当重要的地位。 通常而言特征选择是指选择获得相应模型和算法最好性能的特征集工程上常用的方法有以下 1. 计算每一个特征与响应变量的相关性工程上常用的手段有计算皮尔逊系数和互信息系数皮尔逊系数只能衡量线性相关性而互信息系数能够很好地度量各种相关性但是计算相对复杂一些好在很多toolkit里边都包含了这个工具如sklearn的MINE得到相关性之后就可以排序选择特征了 2. 构建单个特征的模型通过模型的准确性为特征排序借此来选择特征另外记得JMLR03上有一篇论文介绍了一种基于决策树的特征选择方法本质上是等价的。当选择到了目标特征之后再用来训练最终的模型 3. 通过L1正则项来选择特征L1正则方法具有稀疏解的特性因此天然具备特征选择的特性但是要注意L1没有选到的特征不代表不重要原因是两个具有高相关性的特征可能只保留了一个如果要确定哪个特征重要应再通过L2正则方法交叉检验 4. 训练能够对特征打分的预选模型RandomForest和Logistic Regression等都能对模型的特征打分通过打分获得相关性后再训练最终模型 5. 通过特征组合后再来选择特征如对用户id和用户特征最组合来获得较大的特征集再来选择特征这种做法在推荐系统和广告系统中比较常见这也是所谓亿级甚至十亿级特征的主要来源原因是用户数据比较稀疏组合特征能够同时兼顾全局模型和个性化模型这个问题有机会可以展开讲。 6. 通过深度学习来进行特征选择目前这种手段正在随着深度学习的流行而成为一种手段尤其是在计算机视觉领域原因是深度学习具有自动学习特征的能力这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。 整体上来说特征选择是一个既有学术价值又有工程价值的问题目前在研究领域也比较热值得所有做机器学习的朋友重视。 目录 1 特征工程是什么 2 数据预处理   2.1 无量纲化     2.1.1 标准化     2.1.2 区间缩放法     2.1.3 标准化与归一化的区别   2.2 对定量特征二值化   2.3 对定性特征哑编码   2.4 缺失值计算   2.5 数据变换 3 特征选择   3.1 Filter     3.1.1 方差选择法     3.1.2 相关系数法     3.1.3 卡方检验     3.1.4 互信息法   3.2 Wrapper     3.2.1 递归特征消除法   3.3 Embedded     3.3.1 基于惩罚项的特征选择法     3.3.2 基于树模型的特征选择法 4 降维   4.1 主成分分析法PCA   4.2 线性判别分析法LDA 5 总结 6 参考资料 1 特征工程是什么   有这么一句话在业界广泛流传数据和特征决定了机器学习的上限而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢顾名思义其本质是一项工程活动目的是最大限度地从原始数据中提取特征以供算法和模型使用。通过总结和归纳人们认为特征工程包括以下方面 amp;lt;img srcquot;https://pic3.zhimg.com/50/20e4522e6104ad71fc543cc21f402b36_hd.pngquot; data-rawwidthquot;875quot; data-rawheightquot;967quot; classquot;origin_image zh-lightbox-thumbquot; widthquot;875quot; data-originalquot;https://pic3.zhimg.com/20e4522e6104ad71fc543cc21f402b36_r.pngquot;amp;gt;   特征处理是特征工程的核心部分sklearn提供了较为完整的特征处理方法包括数据预处理特征选择降维等。首次接触到sklearn通常会被其丰富且方便的算法模型库吸引但是这里介绍的特征处理库也十分强大   本文中使用sklearn中的IRIS鸢尾花数据集来对特征处理功能进行说明。IRIS数据集由Fisher在1936年整理包含4个特征Sepal.Length花萼长度、Sepal.Width花萼宽度、Petal.Length花瓣长度、Petal.Width花瓣宽度特征值都为正浮点数单位为厘米。目标值为鸢尾花的分类Iris Setosa山鸢尾、Iris Versicolour杂色鸢尾Iris Virginica维吉尼亚鸢尾。导入IRIS数据集的代码如下 from sklearn.datasets import load_iris#导入IRIS数据集 iris load_iris()#特征矩阵 iris.data#目标向量 iris.target2 数据预处理   通过特征提取我们能得到未经处理的特征这时的特征可能有以下问题 不属于同一量纲即特征的规格不一样不能够放在一起比较。无量纲化可以解决这一问题。信息冗余对于某些定量特征其包含的有效信息为区间划分例如学习成绩假若只关心“及格”或不“及格”那么需要将定量的考分转换成“1”和“0”表示及格和未及格。二值化可以解决这一问题。定性特征不能直接使用某些机器学习算法和模型只能接受定量特征的输入那么需要将定性特征转换为定量特征。最简单的方式是为每一种定性值指定一个定量值但是这种方式过于灵活增加了调参的工作。通常使用哑编码的方式将定性特征转换为定量特征假设有N种定性值则将这一个特征扩展为N种特征当原始特征值为第i种定性值时第i个扩展特征赋值为1其他扩展特征赋值为0。哑编码的方式相比直接指定的方式不用增加调参的工作对于线性模型来说使用哑编码后的特征可达到非线性的效果。存在缺失值缺失值需要补充。信息利用率低不同的机器学习算法和模型对数据中信息的利用是不同的之前提到在线性模型中使用对定性特征哑编码可以达到非线性的效果。类似地对定量变量多项式化或者进行其他的转换都能达到非线性的效果。   我们使用sklearn中的preproccessing库来进行数据预处理可以覆盖以上问题的解决方案。 2.1 无量纲化   无量纲化使不同规格的数据转换到同一规格。常见的无量纲化方法有标准化和区间缩放法。标准化的前提是特征值服从正态分布标准化后其转换成标准正态分布。区间缩放法利用了边界值信息将特征的取值区间缩放到某个特点的范围例如[0, 1]等。 2.1.1 标准化   标准化需要计算特征的均值和标准差公式表达为   使用preproccessing库的StandardScaler类对数据进行标准化的代码如下 amp;lt;img srcquot;https://pic2.zhimg.com/50/c7e852db6bd05b7bb1017b5425ffeec1_hd.pngquot; data-rawwidthquot;81quot; data-rawheightquot;48quot; classquot;content_imagequot; widthquot;81quot;amp;gt; from sklearn.preprocessing import StandardScaler#标准化返回值为标准化后的数据 StandardScaler().fit_transform(iris.data)2.1.2 区间缩放法   区间缩放法的思路有多种常见的一种为利用两个最值进行缩放公式表达为   使用preproccessing库的MinMaxScaler类对数据进行区间缩放的代码如下 amp;lt;img srcquot;https://pic2.zhimg.com/50/0f119a8e8f69509c5b95ef6a8a01a809_hd.pngquot; data-rawwidthquot;119quot; data-rawheightquot;52quot; classquot;content_imagequot; widthquot;119quot;amp;gt; from sklearn.preprocessing import MinMaxScaler#区间缩放返回值为缩放到[0, 1]区间的数据 MinMaxScaler().fit_transform(iris.data)2.1.3 标准化与归一化的区别   简单来说标准化是依照特征矩阵的列处理数据其通过求z-score的方法将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据其目的在于样本向量在点乘运算或其他核函数计算相似性时拥有统一的标准也就是说都转化为“单位向量”。规则为l2的归一化公式如下 amp;lt;img srcquot;https://pic1.zhimg.com/50/fbb2fd0a163f2fa211829b735194baac_hd.pngquot; data-rawwidthquot;113quot; data-rawheightquot;57quot; classquot;content_imagequot; widthquot;113quot;amp;gt;   使用preproccessing库的Normalizer类对数据进行归一化的代码如下 from sklearn.preprocessing import Normalizer#归一化返回值为归一化后的数据 Normalizer().fit_transform(iris.data)2.2 对定量特征二值化   定量特征二值化的核心在于设定一个阈值大于阈值的赋值为1小于等于阈值的赋值为0公式表达如下 amp;lt;img srcquot;https://pic2.zhimg.com/50/11111244c5b69c1af6c034496a2591ad_hd.pngquot; data-rawwidthquot;159quot; data-rawheightquot;41quot; classquot;content_imagequot; widthquot;159quot;amp;gt;   使用preproccessing库的Binarizer类对数据进行二值化的代码如下 from sklearn.preprocessing import Binarizer#二值化阈值设置为3返回值为二值化后的数据 Binarizer(threshold3).fit_transform(iris.data)2.3 对定性特征哑编码   由于IRIS数据集的特征皆为定量特征故使用其目标值进行哑编码实际上是不需要的。使用preproccessing库的OneHotEncoder类对数据进行哑编码的代码如下 from sklearn.preprocessing import OneHotEncoder#哑编码对IRIS数据集的目标值返回值为哑编码后的数据 OneHotEncoder().fit_transform(iris.target.reshape((-1,1)))2.4 缺失值计算   由于IRIS数据集没有缺失值故对数据集新增一个样本4个特征均赋值为NaN表示数据缺失。使用preproccessing库的Imputer类对数据进行缺失值计算的代码如下 from numpy import vstack, array, nan from sklearn.preprocessing import Imputer#缺失值计算返回值为计算缺失值后的数据 #参数missing_value为缺失值的表示形式默认为NaN #参数strategy为缺失值填充方式默认为mean均值 Imputer().fit_transform(vstack((array([nan, nan, nan, nan]), iris.data)))2.5 数据变换   常见的数据变换有基于多项式的、基于指数函数的、基于对数函数的。4个特征度为2的多项式转换公式如下 amp;lt;img srcquot;https://pic4.zhimg.com/50/d1c57a66fad39df90b87cea330efb3f3_hd.pngquot; data-rawwidthquot;571quot; data-rawheightquot;57quot; classquot;origin_image zh-lightbox-thumbquot; widthquot;571quot; data-originalquot;https://pic4.zhimg.com/d1c57a66fad39df90b87cea330efb3f3_r.pngquot;amp;gt;   使用preproccessing库的PolynomialFeatures类对数据进行多项式转换的代码如下 from sklearn.preprocessing import PolynomialFeatures#多项式转换 #参数degree为度默认值为2 PolynomialFeatures().fit_transform(iris.data)基于单变元函数的数据变换可以使用一个统一的方式完成使用preproccessing库的FunctionTransformer对数据进行对数函数转换的代码如下 from numpy import log1p from sklearn.preprocessing import FunctionTransformer#自定义转换函数为对数函数的数据变换 #第一个参数是单变元函数 FunctionTransformer(log1p).fit_transform(iris.data) 3 特征选择   当数据预处理完成后我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说从两个方面考虑来选择特征 特征是否发散如果一个特征不发散例如方差接近于0也就是说样本在这个特征上基本上没有差异这个特征对于样本的区分并没有什么用。特征与目标的相关性这点比较显见与目标相关性高的特征应当优选选择。除方差法外本文介绍的其他方法均从相关性考虑。   根据特征选择的形式又可以将特征选择方法分为3种 Filter过滤法按照发散性或者相关性对各个特征进行评分设定阈值或者待选择阈值的个数选择特征。Wrapper包装法根据目标函数通常是预测效果评分每次选择若干特征或者排除若干特征。Embedded嵌入法先使用某些机器学习的算法和模型进行训练得到各个特征的权值系数根据系数从大到小选择特征。类似于Filter方法但是是通过训练来确定特征的优劣。   我们使用sklearn中的feature_selection库来进行特征选择。 3.1 Filter 3.1.1 方差选择法   使用方差选择法先要计算各个特征的方差然后根据阈值选择方差大于阈值的特征。使用feature_selection库的VarianceThreshold类来选择特征的代码如下 from sklearn.feature_selection import VarianceThreshold#方差选择法返回值为特征选择后的数据 #参数threshold为方差的阈值 VarianceThreshold(threshold3).fit_transform(iris.data)3.1.2 相关系数法   使用相关系数法先要计算各个特征对目标值的相关系数以及相关系数的P值。用feature_selection库的SelectKBest类结合相关系数来选择特征的代码如下 from sklearn.feature_selection import SelectKBest from scipy.stats import pearsonr#选择K个最好的特征返回选择特征后的数据 #第一个参数为计算评估特征是否好的函数该函数输入特征矩阵和目标向量输出二元组评分P值的数组数组第i项为第i个特征的评分和P值。在此定义为计算相关系数 #参数k为选择的特征个数 SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k2).fit_transform(iris.data, iris.target)3.1.3 卡方检验   经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值因变量有M种取值考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距构建统计量 amp;lt;img srcquot;https://pic1.zhimg.com/50/7bc586c806b9b8bf1e74433a2e1976bc_hd.pngquot; data-rawwidthquot;162quot; data-rawheightquot;48quot; classquot;content_imagequot; widthquot;162quot;amp;gt;   不难发现这个统计量的含义简而言之就是自变量对因变量的相关性。用feature_selection库的SelectKBest类结合卡方检验来选择特征的代码如下 from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2#选择K个最好的特征返回选择特征后的数据 SelectKBest(chi2, k2).fit_transform(iris.data, iris.target)3.1.4 互信息法   经典的互信息也是评价定性自变量对定性因变量的相关性的互信息计算公式如下 amp;lt;img srcquot;https://pic3.zhimg.com/50/6af9a077b49f587a5d149f5dc51073ba_hd.pngquot; data-rawwidthquot;274quot; data-rawheightquot;50quot; classquot;content_imagequot; widthquot;274quot;amp;gt;   为了处理定量数据最大信息系数法被提出使用feature_selection库的SelectKBest类结合最大信息系数法来选择特征的代码如下 from sklearn.feature_selection import SelectKBestfrom minepy import MINE#由于MINE的设计不是函数式的定义mic方法将其为函数式的返回一个二元组二元组的第2项设置成固定的P值0.5def mic(x, y):m MINE()m.compute_score(x, y)return (m.mic(), 0.5)#选择K个最好的特征返回特征选择后的数据 SelectKBest(lambda X, Y: array(map(lambda x:mic(x, Y), X.T)).T, k2).fit_transform(iris.data, iris.target)3.2 Wrapper 3.2.1 递归特征消除法   递归消除特征法使用一个基模型来进行多轮训练每轮训练后消除若干权值系数的特征再基于新的特征集进行下一轮训练。使用feature_selection库的RFE类来选择特征的代码如下 from sklearn.feature_selection import RFE from sklearn.linear_model import LogisticRegression#递归特征消除法返回特征选择后的数据 #参数estimator为基模型 #参数n_features_to_select为选择的特征个数 RFE(estimatorLogisticRegression(), n_features_to_select2).fit_transform(iris.data, iris.target)3.3 Embedded 3.3.1 基于惩罚项的特征选择法   使用带惩罚项的基模型除了筛选出特征外同时也进行了降维。使用feature_selection库的SelectFromModel类结合带L1惩罚项的逻辑回归模型来选择特征的代码如下 from sklearn.feature_selection import SelectFromModel from sklearn.linear_model import LogisticRegression#带L1惩罚项的逻辑回归作为基模型的特征选择 SelectFromModel(LogisticRegression(penaltyl1, C0.1)).fit_transform(iris.data, iris.target)实际上L1惩罚项降维的原理在于保留多个对目标值具有同等相关性的特征中的一个所以没选到的特征不代表不重要。故可结合L2惩罚项来优化。具体操作为若一个特征在L1中的权值为1选择在L2中权值差别不大且在L1中权值为0的特征构成同类集合将这一集合中的特征平分L1中的权值故需要构建一个新的逻辑回归模型 from sklearn.linear_model import LogisticRegressionclass LR(LogisticRegression):def __init__(self, threshold0.01, dualFalse, tol1e-4, C1.0,fit_interceptTrue, intercept_scaling1, class_weightNone,random_stateNone, solverliblinear, max_iter100,multi_classovr, verbose0, warm_startFalse, n_jobs1):#权值相近的阈值self.threshold thresholdLogisticRegression.__init__(self, penaltyl1, dualdual, toltol, CC,fit_interceptfit_intercept, intercept_scalingintercept_scaling, class_weightclass_weight,random_staterandom_state, solversolver, max_itermax_iter,multi_classmulti_class, verboseverbose, warm_startwarm_start, n_jobsn_jobs)#使用同样的参数创建L2逻辑回归self.l2 LogisticRegression(penaltyl2, dualdual, toltol, CC, fit_interceptfit_intercept, intercept_scalingintercept_scaling, class_weight class_weight, random_staterandom_state, solversolver, max_itermax_iter, multi_classmulti_class, verboseverbose, warm_startwarm_start, n_jobsn_jobs)def fit(self, X, y, sample_weightNone):#训练L1逻辑回归super(LR, self).fit(X, y, sample_weightsample_weight)self.coef_old_ self.coef_.copy()#训练L2逻辑回归self.l2.fit(X, y, sample_weightsample_weight)cntOfRow, cntOfCol self.coef_.shape#权值系数矩阵的行数对应目标值的种类数目for i in range(cntOfRow):for j in range(cntOfCol):coef self.coef_[i][j]#L1逻辑回归的权值系数不为0if coef ! 0:idx [j]#对应在L2逻辑回归中的权值系数coef1 self.l2.coef_[i][j]for k in range(cntOfCol):coef2 self.l2.coef_[i][k]#在L2逻辑回归中权值系数之差小于设定的阈值且在L1中对应的权值为0if abs(coef1-coef2) self.threshold and j ! k and self.coef_[i][k] 0:idx.append(k)#计算这一类特征的权值系数均值mean coef / len(idx)self.coef_[i][idx] meanreturn self使用feature_selection库的SelectFromModel类结合带L1以及L2惩罚项的逻辑回归模型来选择特征的代码如下 from sklearn.feature_selection import SelectFromModel#带L1和L2惩罚项的逻辑回归作为基模型的特征选择 #参数threshold为权值系数之差的阈值 SelectFromModel(LR(threshold0.5, C0.1)).fit_transform(iris.data, iris.target)3.3.2 基于树模型的特征选择法   树模型中GBDT也可用来作为基模型进行特征选择使用feature_selection库的SelectFromModel类结合GBDT模型来选择特征的代码如下 from sklearn.feature_selection import SelectFromModel from sklearn.ensemble import GradientBoostingClassifier#GBDT作为基模型的特征选择 SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)4 降维   当特征选择完成后可以直接训练模型了但是可能由于特征矩阵过大导致计算量大训练时间长的问题因此降低特征矩阵维度也是必不可少的。常见的降维方法除了以上提到的基于L1惩罚项的模型以外另外还有主成分分析法PCA和线性判别分析LDA线性判别分析本身也是一个分类模型。PCA和LDA有很多的相似点其本质是要将原始的样本映射到维度更低的样本空间中但是PCA和LDA的映射目标不一样PCA是为了让映射后的样本具有最大的发散性而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法而LDA是一种有监督的降维方法。 4.1 主成分分析法PCA   使用decomposition库的PCA类选择特征的代码如下 from sklearn.decomposition import PCA#主成分分析法返回降维后的数据 #参数n_components为主成分数目 PCA(n_components2).fit_transform(iris.data)4.2 线性判别分析法LDA   使用lda库的LDA类选择特征的代码如下 from sklearn.lda import LDA#线性判别分析法返回降维后的数据 #参数n_components为降维后的维数 LDA(n_components2).fit_transform(iris.data, iris.target)5 总结   再让我们回归一下本文开始的特征工程的思维导图我们可以使用sklearn完成几乎所有特征处理的工作而且不管是数据预处理还是特征选择抑或降维它们都是通过某个类的方法fit_transform完成的fit_transform要不只带一个参数特征矩阵要不带两个参数特征矩阵加目标向量。这些难道都是巧合吗还是故意设计成这样方法fit_transform中有fit这一单词它和训练模型的fit方法有关联吗接下来我将在《使用sklearn优雅地进行数据挖掘》中阐述其中的奥妙 6 参考资料 FAQ: What is dummy coding?IRIS鸢尾花数据集卡方检验干货结合Scikit-learn介绍几种常用的特征选择方法机器学习中有哪些特征选择的工程方法机器学习中的数学(4)-线性判别分析LDA, 主成分分析(PCA)
http://www.huolong8.cn/news/78701/

相关文章:

  • 门户网站 方案亚马逊跨境电商个人开店
  • 网站dw建设php网站开发事例
  • 做巧克力的网站大气蓝色wap网站模板
  • 东莞搜索引擎网站推广广告公司名称推荐
  • 教师在哪些网站可以做兼职ios移动网站开发工具
  • 网站开发用什么编程语言哈尔滨房产信息网官方网站
  • 河南快速网站备案wordpress本地打开慢
  • 网站建站平台源码化妆品行业的网站开发
  • 常用的网站有哪些ucenter整合wordpress
  • 汕头企业网站模板建站wordpress模板调用文件夹下
  • 安徽住房和建设网站wordpress 国产评论插件
  • 做火锅加盟哪个网站好网站更换域名备案
  • 外贸网站教程wordpress有点尴尬诶该页无法显示
  • 网站运营方案新乡建设企业网站
  • 网站收录很少却有排名盐城哪里做网站
  • 常州住房和城乡建设局网站首页不需要充值的传奇手游
  • 北京做胃镜哪好德胜门网站I衡阳网络营销公司
  • 薛城做网站龙山建设工程有限公司网站
  • 做虚假彩票网站判几年素锦wordpress
  • 投资手机网站源码dt网站设计
  • 毕业设计论文网站广州活动网站设计
  • 高端网站定制方案高端网站建设定制
  • 上海网站设计推荐刻wordpress 图片多
  • 做soho外贸网站销售管理系统c语言
  • vs2010 iis 网站开发西部数码网站管理助手 301
  • 网站建设教程微云网盘长春建站软件
  • 乐云seo网站建设公司湘潭网页定制
  • 自主建站网站找人做任务网站有哪些
  • 视频网站dedecms做电商网站要多少钱
  • 佛山新网站建设流程台州椒江网站建设