




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器学习原理与应用第2章
特征选择与降维本章学习目标(知识要点)了解特征选择的作用,熟悉特征选择一般框架和常用方法,掌握其实现原理和应用;掌握特征选择的常用方法;熟悉降维技术基本原理和主要技术;熟悉主成分分析技术的原理及应用。目录
特征选择简介
特征选择方法
降维技术
主成分分析
综合案例:基于feature_selector库
的商业信贷特征选择2.12.22.32.42.5特征选择简介2.11.特征选择目的1)避免维数灾难问题在现实任务中经常遇到维数灾难问题,即描述一个对象的特征集合非常大,例如一张图片包含百万级像素,一篇文章包含成千上万级词汇。通过特征选择可以减少特征个数,使得后续学习过程在低维空间中构建模型,大幅度减轻维数灾难问题,提高机器学习算法的效率。举例来说,100个平均分布的点能把一个单位区间以每个点距离不超过0.01采样;而当维度增加到10后,如果以相邻点距离不超过0.01小方格采样一单位超正方体,则需要1020
个采样点:所以,这个10维的超正方体也可以说是比单位区间大1018倍.如图任务:分类三角形和圆[1]1.特征选择目的2)降低噪音、提取有效信息庞大的特征集合可能只有少量的元素很相关,而另一些大量的特征则可能是无关或冗余的。所谓无关特征即与当前学习目标没有直接联系的特征,而冗余特征则不会给目标对象增加任何新信息,可以从其他特征推演出来。例如一篇描述足球比赛的文章,可能其中一些关键词足以让读者了解其主题,但是诸如大量的“的”、“是的”等词汇则并不能反映这篇文章的有效信息;而描述一个运动足球踢的“好”,“那么好”这个词相比于“精准”、“迅速”等词汇是冗余特征。去除不相关或冗余的特征往往会降低学习任务的难度,让机器学习算法抽丝剥茧,获取更重要的特征。1.特征选择目的3)降低过拟合风险特征数量越多,训练样本就会越稀疏。随着特征数量的增加,为了覆盖特征值,就需要更多的训练样本。如果没有足够的训练样本,就可能会出现过拟合问题。输入变量会增加模型本身的额外自由度,这些额外的自由度对于模型记住某些细节信息会有所帮助,但对于创建一个稳定性良好、泛化性能强的模型可能却没有好处,也就是说增加额外的不相关变量容易增大过拟合的风险,在新数据上可能表现不佳。而更少的输入维数通常意味着相应的更少的参数或更简单的结构,一定程度能帮助学习算法改善所学模型的通用性、降低过拟合风险的作用。2.特征选择步骤机器学习算法中采用特征选择技术的一般框架特征选择:就是如何选取一个包含所需要重要信息的特征子集。通常做法是先产生一个候选子集,接着对其重要性进行评估,然后根据评价结果产生下一个候选子集,再对其进行评估,如此循环持续进行,直到无法产生一个更好的候选子集为止。两个关键环节:子集搜索、子集评价2.特征选择步骤
2.特征选择步骤
目录
特征选择简介
特征选择方法
降维技术
主成分分析
综合案例:基于feature_selector库
的商业信贷特征选择2.12.22.32.42.5◎过滤式方法
◎包裹式方法◎嵌入式方法特征选择方法2.22.2特征选择方法特征选择方法(根据特征选择模块与机器学习算法之间的关系)过滤式(Filter)方法特征选择过程独立,与后续学习器的训练无关。包裹式(Wrapper)方法特征选择过程与机器学习算法有关,特征选择依赖于学习器的性能作为特征子集的评价准则,两者迭代进行。嵌入式(Embedding)方法特征选择过程与机器学习算法有关,特征选择与学习器训练过程融为一体,在学习器训练过程中自动进行特征选择。2.2.1过滤式方法
2.2.1过滤式方法单变量过滤式方法每个特征在特征空间中独立地进行排序不需要考虑特征之间的相互关系优点是计算效率高,不易过拟合缺点是不太能去掉冗余特征代表性方法包括方差检验法、卡方检验法、皮尔森相关系数法、互信息法等多变量过滤式方法考虑特征变量之间的相互关系常用基于相关性和一致性的特征选择优点是能够自然地处理冗余特征情况代表性方法Relief算法等2.2.1过滤式方法
2.2.1过滤式方法上述可以直接利用sklearn包的方差特征选择函数实现,如下述代码所示#载入数据fromsklearn.datasetsimportload_irisiris=load_iris()#加载方差检验特征选择函数fromsklearn.feature_selectionimportVarianceThreshold
var=VarianceThreshold(threshold=1)#threshold为方差的阈值,默认0;这里剔除方差小于#1的特征var=var.fit_transform(iris.data)#返回特征选择后的特征2.2.1过滤式方法
2.2.1过滤式方法直接利用sklearn包的卡方检验特征选择函数实现,如下述代码所示#载入数据fromsklearn.datasetsimportload_irisiris=load_iris()
#加载卡方检验特征选择函数fromsklearn.feature_selectionimportSelectKBest#移除topK外的特征fromsklearn.feature_selectionimportchi2#卡方检验
model=SelectKBest(chi2,k=5)#根据卡方统计量选择前k个值最高的特征model.fit_transform(iris.data,iris.target)var=model.get_support(True)#返回特征选择后的特征
2.2.1过滤式方法
2.2.1过滤式方法Pearson相关系数特征选择法可以直接利用sklearn包以及Scipy的pearsonr函数实现,如下述代码所示#载入数据fromsklearn.datasetsimportload_irisiris=load_iris()
#加载Pearson相关系数法fromsklearn.feature_selectionimportSelectKBest#移除topK外的特征fromscipy.statsimportpearsonr#计算皮尔森相关系数fromnumpyimportarray
#SelectKBest第一个参数为计算评估特征是否好的函数,该函数的输入为特征矩阵和类别向量,输出二元组(评分,P值)的数组,数组第i项为第i个特征的评分和P值。model=SelectKBest(lambdaX,Y:array(map(lambdax:pearsonr(x,Y),X.T)).T,,k=3)#根据皮尔森相关系数选择前k个值最高的特征model.fit_transform(iris.data,iris.target)var=model.get_support(True)#返回特征选择后的特征2.2.1过滤式方法案例(基于互信息的特征选择)1.数据集此次采用数据集Paribas,该数据为法国巴黎银行个人用户理赔的匿名数据,可从/c/bnp-paribas-cardif-claims-management/data下载,部分数据如下所示,Paribas中每个数据样本的特征向量包含133维特征,既有数值型特征,也有文本型特征;target代表数据样本的类别标签2.2.1过滤式方法案例(基于互信息的特征选择)2.安装sklearn包等,引入特征选择相关库#引入基础依赖包importpandasaspdimportmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_splitfromsklearn.feature_selectionimportmutual_info_classiffromsklearn.feature_selectionimportSelectKBest3.导入数据以及预处理#导入20000条样本示例数据df=pd.read_csv('paribas-train.csv',nrows=20000)#过滤非数字类特征numerics=['int16','int32','int64','float16','float32','float64']
numerical_features=list(df.select_dtypes(include=numerics).columns)
data=df[numerical_features]#划分特征数据和类别标签,并对数据进行训练集和测试集划分X=data.drop(['target','ID'],axis=1)#特征向量集合
y=data['target']#类别标签序列
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=101)2.2.1过滤式方法案例(基于互信息的特征选择)4.基于互信息度量对特征进行排序#计算训练集中每个特征与类别标签之间的互信息mutual_info=mutual_info_classif(X_train.fillna(0),y_train)mi_series=pd.Series(mutual_info)mi_series.index=X_train.columns#根据互信息值对特征进行排序,并绘制柱形图mi_series.sort_values(ascending=False).plot.bar(figsize=(20,8))5.选择排名最高的特性k_best_features=SelectKBest(mutual_info_classif,k=10).fit(X_train.fillna(0),y_train)print('Selectedtop10features:{}'.format(X_train.columns[k_best_features.get_support()]))最终选出来的特征为:按照互信息的特征排序2.2.2包裹式方法过滤式方法独立于任何特定的分类器。缺点完全忽略了所选特征子集对机器学习算法性能的影响,因此所选择的特征子集不一定对于模型是最佳的。与过滤式方法区别包裹式方法假定最优特征子集应当依赖于算法中的归纳偏置(即算法本身的一些启发式假设)。基于此,包裹式方法直接把最终将要使用的模型性能作为特征子集的评价标准包裹式方法目的为给定的模型选择最有利于其性能的特征子集。2.2.2包裹式方法给定预定义的机器学习算法,以分类算法为例,一个典型的包裹式方法将执行以下步骤:1)搜索特征的子集。2)通过分类器的性能来评价所选择的特征子集。3)重复步骤1和步骤2,直至达到某一条件。包裹式方法框架2.2.2包裹式方法机器学习算法中常用的包裹式方法1.RFE(RecursiveFeatureElimination)基本思想:RFE是一个经典的包裹式方法,它使用一个机器学习模型来进行多轮训练,每轮训练后,删除掉若干个重要性低的特征,再基于新的特征集进行下一轮训练,直到特征数满足自己的设定。主要步骤:1)RFE通过首先在原始特征上训练模型(例如分类模型),并为每个特征指定一个权重系数。2)将拥有最小绝对值权重的特征将从特征集中被剔除。3)如此迭代递归,直至剩余的特征数量达到所需的特征数量2.2.2包裹式方法sklearn包中集成了RFE的函数实现,如下述代码:#加载数据fromsklearnimportdatasetsiris=datasets.load_iris()
#加载REF特征选择函数和分类模型fromsklearn.feature_selectionimportRFEfromsklearn.linear_modelimportLogisticRegression#逻辑斯蒂分类模型
model=LogisticRegression()rfe=RFE(estimator=model,n_features_to_select=1,step=1)
rfemodel=rfe.fit_transform(iris.data,iris.target)2.2.2包裹式方法2.2. RFECV(RecursiveFeatureElimination-CrossValidation)RFECV是RFE的扩展,它通过交叉验证的方式执行RFE,以此来选择最佳数量的特征。主要步骤:1)指定一个外部的机器学习算法,比如SVM分类算法(在下一章中会详细介绍),通过该算法对所有特征子集进行交叉验证,以评估学习器的性能损失。2)对于某个特征,如果减少特征会造成性能损失,那么将不会去除该特征。3)最终筛选得到的特征子集作为所挑选的特征。2.2.2包裹式方法sklearn包同样提供了RFECV函数实现供直接调用,如下述代码:fromsklearn.svmimportSVCfromsklearn.model_selectionimportStratifiedKFoldfromsklearn.feature_selectionimportRFECVfromsklearn.datasetsimportmake_classification#创建一个分类模型X,y=make_classification(n_samples=1000,n_features=25,n_informative=3,n_redundant=2,n_repeated=0,n_classes=2,n_clusters_per_class=1,random_state=0)svc=SVC(kernel="linear")#SVC线性分类模型#创建RFECV特征选择模型,交叉验证使用roc_auc指标评估特征rfecv=RFECV(estimator=svc,step=1,cv=StratifiedKFold(2),scoring='roc_auc',min_features_to_select=1)rfecv.fit(X,y)2.2.2包裹式方法案例(基于Paribas数据的包裹式方法应用),详细代码见书和课程案例资源包。1.安装sklearn以及mlxtend包,引入特征选择相关库函数2.导入数据以及预处理3.借助包裹式方法前向搜索特征子集
在该数据集中,所选择的特征子集如下: Index(['v10','v14','v23','v34','v38','v45','v50','v61','v72','v129'],dtype='object')4.根据最终所选的特征子集验证算法性能该算法在训练集和测试集的性能指标分别如下:Trainset:RandomForestsroc-auc:0.7209127288873236Testset:RandomForestsroc-auc:0.71488149019708462.2.3嵌入式方法基本思想嵌入式方法在学习器训练过程中自动地进行特征选择,是一种将特征选择与学习器训练完全融合的特征选择方法,即将特征选择融入学习器的优化过程中。该方法先使用某些机器学习算法和模型进行训练,得到各个特征的权重系数以判断特征的优劣,然后再进行过滤。这种方式同时继承了过滤式方法和包裹式方法的优势,既同包裹式方法一样与分类器有交互,又同过滤式方法一样不需要迭代地评估特征集,因此计算效率高。嵌入式方法分类第一种是剪枝方法,它首先利用所有的特征来训练一个模型,然后试图通过将相应的系数降为0来消除一些特征。第二种是带有内置机制的模型用于特征选择,如ID3和C4.5。第三种是带有目标函数的正则化模型,它能通过最小化拟合误差使得特征系数足够小甚至精确为零。
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法
2.2.3嵌入式方法3.ElasticNet正则ElasticNet正则是Ridge正则和Lasso正则的折中,形式表示为:ElasticNet需要调整平衡两个正则之间的权重。ElasticNet正则在sklearn包中提供了现成函数可直接使用,代码如下:#加载数据fromsklearn.datasetsimportload_irisiris=load_iris()#数据和标签预处理fromsklearn.preprocessingimportStandardScalerscaler=StandardScaler()#对数据进行归一化预处理x=scaler.fit_transform(iris.data)y=iris.target
#加载正则化的线性模型fromsklearn.linear_modelimportElasticNet#ElasticNet正则EN=ElasticNet(alpha=1.0,l1_ratio=0.5)EN.fit(x,y)print(EN.coef_)#输出ElasticNet正则化后的系数值
2.2.3嵌入式方法
2.2.3嵌入式方法
#导入全部示例数据titanic=pd.read_csv('Datasets/Titanic/titanic.csv')print(titanic.isnull().sum())titanic.drop(labels=['Age','Cabin'],axis=1,inplace=True)
titanic=titanic.dropna()print(titanic.isnull().sum())print(titanic.head())#对部分文字类型特征数值化data=data=titanic[['Pclass','Sex','SibSp','Parch','Fare','Embarked']].copy()#剔除对于Survived#分类缺少区分度的特征,例如Name等。sex={'male':0,'female':1}data['Sex']=data['Sex'].map(sex)ports={'S':0,'C':1,'Q':2}data['Embarked']=data['Embarked'].map(ports)#划分特征数据和类别标签,并对数据进行训练集和测试集划分X=data.copy()y=titanic['Survived']X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)2.2.3嵌入式方法4.模型训练(采用逻辑斯蒂回归算法学习分类器,并施加L1正则)scaler=StandardScaler()scaler.fit(X_train)
sel_=SelectFromModel(
LogisticRegression(C=0.5,
penalty='l1',#这里选L1正则对特征进行约束
solver='liblinear',
random_state=10))
sel_.fit(scaler.transform(X_train),y_train)
features=X_train.columns[sel_.get_support()]
print(features)#查看被筛选出来的特征#从数据集中删除系数为零的特征X_train_lasso=pd.DataFrame(sel_.transform(X_train))
X_test_lasso=pd.DataFrame(sel_.transform(X_test))
X_train_lasso.columns=X_train.columns[(sel_.get_support())]
X_test_lasso.columns=X_train.columns[(sel_.get_support())]最终留下以下特征作为最终的特征的子集:Index(['Pclass','Sex','SibSp','Fare','Embarked'],dtype='object')2.2.3嵌入式方法5.根据最终所选的特征子集验证算法性能#创建一个函数来评价逻辑斯蒂回归模型基于所选特征子集在训练集和测试集上的性能defrun_logistic(X_train,X_test,y_train,y_test):scaler=StandardScaler().fit(X_train)logit=LogisticRegression(random_state=44,max_iter=500)logit.fit(scaler.transform(X_train),y_train)print('Trainset')pred=logit.predict_proba(scaler.transform(X_train))print('LogisticRegressionroc-auc:{}'.format(roc_auc_score(y_train,pred[:,1])))print('Testset')pred=logit.predict_proba(scaler.transform(X_test))print('LogisticRegressionroc-auc:{}'.format(roc_auc_score(y_test,pred[:,1])))run_logistic(X_train_lasso,X_test_lasso,y_train,y_test)2.2.3嵌入式方法该算法在训练集和测试集的性能指标分别如下:TrainsetLogisticRegressionroc-auc:0.8358038830715533TestsetLogisticRegressionroc-auc:0.8517065868263471目录
特征选择简介
特征选择方法
降维技术
主成分分析
综合案例:基于feature_selector库
的商业信贷特征选择2.12.22.32.42.5降维技术2.32.3降维技术
2.3降维技术降维技术分类线性降维方法非线性降维方法2.3降维技术
2.3降维技术
2.3降维技术1.线性降维方法
另一类线性降维方法则是使用线性投影函数实现高维空间向低维空间的转变。LDA(LinearDiscriminantAnalysis)的核心思想是将高维空间中的数据点映射到低维空间中,使得同类点之间的距离尽可能接近,不同类点之间的距离尽可能远。
LDA在sklearn包中可以直接调用,如下示例代码所示importnumpyasnpimportmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3Dfromsklearn.datasets.samples_generatorimportmake_classification#生成数据和标签X,y=make_classification(n_samples=1000,n_features=3,n_redundant=0,n_classes=3,n_informative=2,n_clusters_per_class=1,class_sep=0.5,random_state=10)#LDA降维fromsklearn.discriminant_analysisimportLinearDiscriminantAnalysislda=LinearDiscriminantAnalysis(n_components=2)#设定降维至2维向量lda.fit(X,y)X_new=lda.transform(X)2.3降维技术1.线性降维方法PCA(PrincipalComponentAnalysis)[]即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是通过某种线性投影,将高维的数据映射到低维的空间中表示,并且期望在所投影的维度上数据的方差最大(最大方差理论),以此使用较少的数据维度,同时保留较多的原数据点的特性。PCA在sklearn包中可以直接调用,如下示例代码所示
.importnumpyasnpfromsklearn.decompositionimportPCA#创建数据矩阵X=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])#设定两个主成分pca=PCA(n_components=2)2.3降维技术2.基于流形学习的方法基于流形数据进行建模方法即流形学习(ManifoldLearning)是以非线性方式进行降维的主流技术。流形学习假设高维数据分布在一个特定的低维空间结构(流形)上,然后试图在低维空间上保持原有高维空间中数据的结构特征,并求出相应的嵌入映射,以实现维数约简或者数据可视化。瑞士卷(Swissroll)数据投影图图为利用流行假设将瑞士卷(Swissroll)数据投影到低维空间的效果。图第一行所示,Swissroll分为两类,在三维空间看起来很难区分,但通过流行假设映射到二维空间就能很轻易地区分开。但是,流形假设并不总是能成立,如图第二行所示,决策线为x=5,但在二维空间的决策线比在三维空间的要复杂。因此,在训练模型之前先降维能够加快训练速度2.3降维技术2.基于流形学习的方法传统经典方法MDSIsoMapLELLESNEMDSMDS是一种通过保留样本在高维空间中的不相似性来降低数据维度的方法,所谓不相似性即为样本之间的距离。根据距离的度量方式不同可以将其分为度量型MDS(metricMDS)和非度量MDS(non-metricMDS)。度量型MDS通过计算不同样本之间距离的度量值进行降维,而非度量型则仅考虑距离的排序信息。2.3降维技术
2.3降维技术sklearn中提供了MDS函数可以直接调用实现#加载数据fromsklearn.datasetsimportload_digitsX,_=load_digits(return_X_y=True)
from
sklearn.manifold
import
MDS#MDSembedding
=
MDS(n_components=2)
X_transformed
=
embedding.fit_transform(X[:100])
print(X_transformed.shape)2.3降维技术IsoMapIsoMap考虑高维空间中每个点和它最邻近k个点的测地距离(即两点在流形数据上最短曲线距离),基于测地距离作为数据差异度量,利用多维尺度变换算法(MDS)进行降维,以保持每个节点和其局部邻近节点之间的距离关系。IsoMap算法步骤:
2.3降维技术sklearn中提供了IsoMap函数可以直接调用实现:#加载数据fromsklearn.datasetsimportload_digitsX,_=load_digits(return_X_y=True)
fromsklearn.manifoldimportIsomap#IsoMap embedding=Isomap(n_components=2)#结果数据保留2个维度X_transformed=embedding.fit_transform(X[:100])#拟合模型及变换print(X_transformed.shape)2.3降维技术
2.3降维技术sklearn中提供了函数可以直接调用实现:#加载数据fromsklearn.datasetsimportload_digitsX,_=load_digits(return_X_y=True)
fromsklearn.manifoldimportSpectralEmbedding#LEembedding=SpectralEmbedding(n_components=2)#结果数据保留2个维度X_transformed=embedding.fit_transform(X)#拟合模型及变换print(X_transformed.shape)2.3降维技术
2.3降维技术sklearn中提供了LLE函数可以直接调用实现:#加载数据fromsklearn.datasetsimportload_digitsX,_=load_digits(return_X_y=True)fromsklearn.manifoldimportLocallyLinearEmbedding#LLEembedding=LocallyLinearEmbedding(n_components=2)#结果数据保留2个维度X_transformed=embedding.fit_transform(X)#拟合模型及变换print(X_transformed.shape)2.3降维技术
2.3降维技术sklearn中提供了函数可以直接调用实现:#加载数据fromsklearn.datasetsimportload_digitsX,_=load_digits(return_X_y=True)
fromsklearn.manifoldimportTSNE#t-SNEX_embedded=TSNE(n_components=2,learning_rate='auto',init='random').fit_transform(X)X_transformed=embedding.fit_transform(X)#拟合模型及变换print(X_transformed.shape)2.3降维技术流形学习方法对比方法保留的几何属性优点缺点MDS样本在高维空间中的不相似性1.不需要先验知识,计算简单2.保留了数据在原始空间的相对关系,可视化效果比较好1.无法通过参数化等方法融入先验知识,以对嵌入过程进行干预2.认为各个维度对目标样本的贡献相同IsoMap点对测地距离1.保持流形的全局几何结构
2.适用于学习内部平坦的低维流形1.对于数据量较大的情况,计算效率较低2.不适于学习有较大曲率的流形LE局部邻域相似度1.计算简洁2.通过求解稀疏矩阵的特征值问题解来求出整体最优解,计算效率非常高1.对算法参数和数据采样密度较敏感2.不能有效保持流形的全局几何结构LLE局部线性重构关系1.可以学习任意维的局部线性的低维流形2.算法归结为稀疏矩阵特征分解,计算复杂度相对较小3.可以处理非线性的数据,能进行非线性降维。1.所学习的流形必须是不闭合的,且样本集在流形上是稠密的2.对样本中的噪声和邻域参数比较敏感,不同的参加对最后的降维结果有很大影响。SNEt-SNE局部距离1.非线性降维效果相较上述方法较好1.大规模高维数据时,效率显著降低2.参数对不同数据集较为敏感2.3降维技术流形学习方法对比a)b)2.3降维技术流形学习方法对比c)2.3降维技术3.基于神经网络的方法自编码器是一种用于高效编码的无监督学习人工神经网络,其目标是通过使用比输入变量更少维数的隐藏变量预测输入,并通过训练该网络,使其输出尽可能与输入相似,从而尽可能多地将信息编码到低维隐藏变量中。在结构上,自编码器的最简单形式是一个前馈非递归神经网络,它与多层感知器(MLP)非常相似,具有输入层、输出层以及连接它们的一个或多个隐藏层。然而自编码器和MLP之间的差异在于,在自编码器中,输出层具有与输入层相同数量的节点,并且不是训练预测给定的目标值,而是将它们自己作为目标值投入训练。因此自编码器属于无监督学习模型。自编码器主要由两个部分组成,编码器和解码器。在最简单的情况下,一个自编码器只有一个隐藏层,该隐藏层接收输入并将其映射到输出上。自编码器损失函数(例如MSE)来训练网络上的模型参数。2.3降维技术3.基于神经网络的方法2.3降维技术4.基于图表示学习的方法图表示学习通过重构图的拓扑关系来得到其低维稠密的节点特征表示(Rrepresentation),这种低维表示又可称作嵌入(Embedding)。所得到的嵌入式特征表示不仅维持了原始的数据特征信息,同时还可以捕捉图的全局拓扑联系,并能有效应用于推荐、社群发现等下游任务中。经典的方法包括:网络嵌入方法(NetworkEmbedding),主要以基于矩阵分解以及基于随机游走这类非深度学习方法为代表;图神经网络方法(GraphNeuralNetwork),包括图自编码器、图递归神经网络、图卷积网络等。图神经网络目录
特征选择简介
特征选择方法
降维技术
主成分分析
综合案例:基于feature_selector库
的商业信贷特征选择2.12.22.32.42.5主成分分析(PrincipalComponentsAnalysis,PCA)2.42.4主成分分析(PCA)主成分分析是实现数据降维、数据可视化最常用的方法之一,它通过线性变换的方式将原始变量重新组合成一组新的互相无关的新变量,同时根据实际需要从中取出几个较少的变量尽可能多地反映原始变量的信息,这些不相关的低维变量称为主成分(PrincipalComponents)。二维数据中的主成分2.4主成分分析(PCA)1.PCA的基本过程给定一组数据,可以通过低维且不相关的变量对其进行表征(即主成分),第一个主成分就是从数据差异性最大(即方差最大)的方向提取出来,第二个主成分则来自数据差异性次大的方向,且该方向与第一个主成分方向正交(在二维平面中即垂直),如果是高维度数据,则可以依次类推,找到第三主成分,第四主成分等等。从中可知,PCA的关键在于找到低维不相关的变量(即主成分)。
2.4主成分分析(PCA)3.示例数据了解PCA方法的实现,代码如下1)安装sklearn等包,引入PCA相关库函数,生成数据矩阵importnumpyasnpimportmatplotlib.pyplotaspltimportseabornassnsfromsklearn.decompositionimportPCAsns.set()rng=np.random.RandomState(1)X=np.dot(rng.rand(2,2),rng.randn(2,200)).T#生成随机数据矩阵plt.scatter(X[:,0],X[:,1])#根据X绘制散点图plt.axis('equal')plt.show()在空间中随机生成一个数据矩阵,包含200个样本,每个样本为两维度,分别为其x和y坐标,其坐标投影数据矩阵投影2.4主成分分析(PCA)
主成分向量2.4主成分分析(PCA)PCA优势仅需要以方差衡量信息量,不需要考虑数据集以外的因素。各主成分之间正交,可消除原始数据成分间相互影响的因素,降低数据的冗余度,识别更主要的特征。通过PCA可以对高维度数据进行降维和可视化,从而便于看到数据本质。计算方法简单,易于实现。局限性:主成分各个特征维度缺乏可解释性。由于依靠忽略不重要、冗余特征达到降维,有一定的信息损失,因而有可能影响最终的学习器效果。目录
特征选择简介
特征选择方法
降维技术
主成分分析
综合案例:基于feature_selector库
的商业信贷特征选择2.12.22.32.42.5综合案例:基于feature_selector库的商业信贷特征选择2.52.5综合案例:基于feature_selector库的商业信贷特征选择案例背景个人商业信贷问题在现实的风控场景中很常见,面对一个新申请的借贷用户,银行通常需要综合用户即借款人的身份、职业、贷款、收入等信息,判定用户的信用风险等级,从整体上评估用户的偿还能力与信用风险,从而解决用户准入和风险定价问题。由于用户的相关信息众多,在风险评估分析前,往往需要特征选择方法对数据进行预处理,帮助识别更有利于风险评估的特征。1.数据准备以个人商业信贷数据为案例了解数据特征选择技术的实际应用。所实验的个人商业信贷数据可从/WillKoehrsen/feature-selector/tree/master/data下载,原始数据集总数据量为10000条数据样本,共包含122个变量特征,图给出了部分数据样本以及部分特征和特征值情况个人商业信贷数据2.5综合案例:基于feature_selector库的商业信贷特征选择案例步骤2.导入特征选择库feature_selector打开cmd转到feature_selector所在安装目录,输入一下命令pythonsetup.pybuildpythonsetup.pyinstall3.引入库函数并读入数据fromfeature_selectorimportFeatureSelector#feature_selector包定义了若干特征选择方法importpandasaspdtrain=pd.read_csv('data/credit_example.csv')train_labels=train['TARGET']train.head()train=train.drop(columns=['TARGET'])fs=FeatureSelector(data=train,labels=train_labels)2.5综合案例:基于feature_selector库的商业信贷特征选择案例步骤4.筛选特征五种特征选择方法用于过滤无用或不重要的特征:筛选缺失率大于指定阈值的特征。筛选只有一个唯一值的特征。筛选大于指定相关系数的线性相关特征。筛选0重要度的特征:feature_selector包利用机器学习算法计算特征的重要度,所谓重要度即该特征对机器学习算法进行优化时的贡献程度(如分类正确率提升程度),0重要度即对机器学习算法的优化没有贡献的特征。筛选累积重要度低的特征。数据集特征缺失率情况数据集特征唯一值情况2.5综合案例:基于feature_selector库的商业信贷特征选择案例步骤4.筛选特征特征相关度重要度特征2.5综合案例:基于feature_selector库的商业信贷特征选择案例步骤4.筛选特征上述五种方法对商业信贷数据进行特征筛选,可以筛选出的特征数量为:17个特征缺失率超过60%。4个特征仅出现1种特征值。24个特征对Pearson
相关系数高于0.975。74个特征0重要度。119个低重要度特征未贡献累计重要度达到99%。重要度排名靠前的特征2.5综合案例:基于feature_selector库的商业信贷特征选择案例步骤5.剔除特征剔除上述满足条件的冗余或者不重要的特征,实现代码如下:train_no_missing=fs.remove(methods=['missing'])#剔除缺失值的特征train_no_missing_zero=fs.remove(methods=['missing','zero_importance'])#剔除缺失值和0重要性的的特征all_to_remove=fs.check_removal()#删除前通过该函数可以查看所有将被剔除的特征train_removed=fs.remove(methods='all')#剔除所有不重要的特征最终剔除的特征数量总数为149个。如下图所示为部分被剔除的特征:被剔除的部分特征本章小结特征选择选取原始特征集合的有效子集子集搜索子集评价特征选择典型算法过滤式方法包裹式方法嵌入式方法降维技术线性降维方法非线性降维方法支持向量机主成分分析(PCA)习题概念题简述特征选择和降维的共同点与区别。简述过滤式方法、包裹式方法以及嵌入式方法之间的主要区别,并描述其各自的算法框架。简述降维技术包括哪些经典方法,及其常见应用场景。对比不同流形学习方法的优缺点。简述主成分分析为什么具有数据降噪能力。调研主成分分析技术的变体算法,例如KPCA等,对其进行对比分析。操作题请对任意高维稠密矩阵实现PCA降维。请实现第2.5节特征选择案例。参考文献TangJ,AlelyaniS,LiuH.FeatureSelectionforClassification:AReview[J].DataClassification:AlgorithmsandApplications,2014:37-64.Robnik-ŠikonjaM,KononenkoI.Theoreticalandempiricalanalysisofrelieffandrrelieff[J].Machinelearning,2003,53(1-2):23-69.PengH,LongF,DingC.Featureselectionbasedonmutualinformation:criteriaofmax-dependency,max-relevance,andmin-redundancy[J].IEEETransactionsonPatternAnalysisandMachineIntelligence,2005:1226-1238,.BattitiR.Usingmutualinformationforselectingfeaturesinsupervisedneuralnetlearning[J].IEEETransactionsonNeuralNetworks,1994,5:537-550.KwokN,ChoiC.InputfeatureselectionforclassificationproblemsIEEETransactionsonNeuralNetworks,2002,13:143-159.PengH,LongF,DingC.Featureselectionbasedonmutualinformation:criteriaofmax-dependency,max-relevance,andmin-redundancyIEEETransactionsonPatternAnalysisandMachineIntelligence,2005,27:1226-1238.EstévezPA,TesmerM,PerezA,etal.Normalizedmutualinformationfeatureselection[J].IEEETransactionsonNeuralNetworks,2009,20:189-201.CloseHN,BhattacharyyaDK,KalitaJK.MIFS-ND:amutualinformation-basedfeatureselectionmethod[J].ExpertSystemswithApplications,2014,41(14):6371-6385.BennasarM,HicksY,SetchiR.FeatureselectionusingJointMutualInformationMaximisation[J].ExpertSystemswithApplications,2015,42(22):8520-8532.KohaviR,JohnGH.Wrappersforfeaturesubsetselection[J].Artificialintelligence,1997,97(1-2):273–324.QuinlanJR.Inductionofdecisiontrees[J].Machinelearning,1986,1(1):81–106.QuinlanJR.C4.5:ProgramsforMachineLearning[M].MorganKaufmann,1993.TibshiraniR.Regressionshrinkageandselectionviathelasso[J].JournaloftheRoyalStatisticalSociety,1996:267-288.ZouH.Theadaptivelassoanditsoracleproperties[J].JournaloftheAmericanstatisticalassociation,2006,101(476):1418-1429.HuangJ,HorowitzJL,MaS.Asymptoticpropertiesofbridgeestimatorsinsparsehigh-dimensionalregressionmodels[J].TheAnnalsofStatistics,2008,36(2):587-613.SureshB,GanapathirajuA.Lineardiscriminantanalysis-abrieftutorial[J].InstituteforSignalandinformationProcessing,1998,18:1-8.JolliffeIT.Principalcomponentanalysisandfactoranalysis[J].Principalcomponentanalysis,1986:115-128.CoxTF,MichaelAC.Multidimensionalscaling,2000.Tenenbaum,JB,VinDS,JohnCL.Aglobalgeometricframeworkfornonlineardimensionalityreduction[J].Science,2000,290(5500):2319-2323.BelkinMandNiyogiP.Laplacianeigenmapsfordimensionalityreductionanddatarepresentation[J].Neuralcomputation.15(6).2003:1373-1396参考文献BelkinMandNiyogiP.Laplacianeigenmapsfordimensionalityreductionanddatarepresentation[J].Neuralcomputation.15(6).2003:1373-1396RoweisST,LawrenceKS.Nonlineardimensionalityreductionbylocallylinearembedding.Science,2000,290(5500):2323-2326.HintonGE,SamTR.Stochasticneighborembedding.Advancesinneuralinformationprocessingsystems,2003.HeX,CaiD,YanS,ZhangHJ.Neighborhoodpreservingembedding[C].TenthIEEEInternationalConferenceonComputerVision,2005:1208-1213.HeXF,NiyogiP.LocalityPreservingProjections[C].Proceedingsofthe16thInternationalConferenceonNeuralInformationProcessingSystems,2003:153-160.DonohoDL,GrimesC.Hessianeigenmaps:Locallylinearembeddingtechniquesforhigh-dimensionaldata.ProceedingsoftheNationalAcademyofSciences,2003,100(10):5591-5596.Zhang,ZY,WangJ.MLLE:Modifiedlocallylinearembeddingusingmultipleweights[C].Advancesin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省实验中学广州市天河区附属实验学校2021-2022学年八年级下学期期中物理试题(含答案)
- 基层中医药知识培训课件
- (一模)哈三中2025届高三第一次模拟考试 英语试题(含答案)
- 物业管理服务委托及管理费支付协议
- 安东尼奇妙的冒险故事读后感
- 项目执行工作计划书与时间表安排
- 山西省晋中市太谷区职业中学校2024-2025学年高一上学期期末考试生物试题
- 企业文件保密制度表格化处理记录
- 三农问题社会调查方法与技术指导书
- 离职员工知识产权保密协议
- 标识标牌制作及安装项目技术方案
- 医疗器械物价收费申请流程
- DB3410T 34-2024特定地域单元生态产品价值核算规范
- 江苏红豆实业股份有限公司偿债能力分析
- 青岛中石化输油管道爆炸事故调查报告
- 2024年苏州职业大学高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 充电桩采购安装投标方案(技术方案)
- 教科版小学科学六年级下册单元练习试题及答案(全册)
- 《Java程序设计》电子课件
- 乳腺癌患者的疼痛护理课件
- 研课标说教材修改版 八年级下册
评论
0/150
提交评论