主要内容

分类自动化特征工程

gencfeatures函数使您能够在机器学习工作流的上下文中自动化特性工程过程。在将表格式训练数据传递给分类器之前,您可以使用gencfeatures.使用返回的数据来训练分类器。

根据机器学习工作流生成新功能。

  • 要为可解释的二进制分类器生成特征,请使用默认值TargetLearner的价值“线性”在对gencfeatures.然后,您可以使用返回的数据来训练二进制线性分类器。有关示例,请参见用生成的特征解释线性模型

  • 要生成可以导致更好的模型精度的特征,请指定TargetLearner = "包"在对gencfeatures.然后,您可以使用返回的数据来训练袋装集成分类器。有关示例,请参见生成新特征以提高装袋集成精度

为了更好地理解生成的特性,可以使用描述的功能FeatureTransformer对象。若要将相同的训练集特征转换应用于测试或验证集,请使用变换的功能FeatureTransformer对象。

用生成的特征解释线性模型

使用自动化的特性工程来生成新的特性。使用生成的特征训练一个线性分类器。解释生成的特征和训练的模型之间的关系。

加载病人数据集。从变量的子集创建一个表。显示表的前几行。

负载病人Tbl = table(年龄,舒张压,性别,身高,自我评估健康状况,...收缩压、体重、吸烟);头(台)
ans =8×8表年龄舒张性别身高SelfAssessedHealthStatus收缩期体重吸烟者  ___ _________ __________ ______ ________________________ ________ ______ ______ 38 93{‘男性’}71{‘优秀’}124 176真的43 77{‘男性’}69{‘公平’}109 163假38 83{‘女性’}{‘好’}64 125 131假40 75{‘女性’}{‘公平’}67 117 133假49 80{‘女性’}{‘好’}64 122 119假46 70{‘女性’}{‘好’}68 121 142错误33 88{‘女性’}{‘好’}64 130 142真的40 82{‘男性’}{‘好’}68 115 180false

中的变量生成10个新特性资源描述.指定吸烟者变量作为响应。默认情况下,gencfeatures假设新特征将用于训练二进制线性分类器。

rng (“默认”%用于再现性[T,NewTbl] =“抽烟”, 10)
T = FeatureTransformer与属性:类型:'分类' TargetLearner: '线性' NumEngineeredFeatures: 10 NumOriginalFeatures: 0 TotalNumFeatures: 10
NewTbl =100×11表zsc(收缩压。^ 2)eb8(舒张压)处置(收缩压)eb8(收缩压)处置(舒张压)zsc (kmd9) zsc (sin(年龄))zsc (sin(重量))zsc (Height-Systolic) zsc (kmc1)吸烟者  ________________ ______________ ____________ _____________ _____________ _________ _____________ ________________ ____________________ _________ ______ 0.15379 8 6 4 8真正-1.7207 0.50027 0.19202 0.40418 0.76177 -1.9421 - 2 1 1 2 0.30311 -0.22056 -1.1319 -0.4009 2.3431 1.1617假4 6 5 5 -0.85785 0.57695 0.50027 -1.037 -0.78898 -1.4456假2 22 2 0.83391 1.1495 1.3039 0.85162 -0.010294 false -0.14125 3 5 4 4 1.779 -1.3083 -0.42387 -0.34154 0.99368 false -0.28697 1 4 3 1 0.67326 1.3761 -0.72529 0.40418 1.3755 false 1.0677 6 8 6 6 -0.42521 1.5181 -0.72529 -1.5347 -1.4456 true -1.1361 4 2 2 5 -0.79995 1.1495 -1.0225 1.2991 1.1617 false -1.1361 3 2 2 3 -0.80136 0.46343 1.0806 1.2991 -1.208 false -0.71693 5 3 3 6 0.37961 -0.51304 0.16741 0.55333 -1.4456 false -1.2734 2 1 1 2 1.2572 1.3025 1.0978 1.4482 -0.010294 false -1.1361 1 2 2 1 1.001 -1.2545 -1.2194 1.0008 -0.010294 false 0.60534 1 6 5 1 -0.98493 -0.11998 -1.211 -0.043252 -1.208 false 1.0677 8 8 6 8 -0.27307 1.4659 1.2168 -0.34154 0.24706 true -1.2734 3 1 1 4 0.93395 -1.3633 -0.17603 1.0008 -0.010294 false 1.0677 7 8 6 8 -0.91396 -1.04 -1.2109 -0.49069 0.24706 true ⋮

T是一个FeatureTransformer对象,该对象可用于转换新数据newTbl控件生成的新特性资源描述数据。

为了更好地理解生成的特性,可以使用描述的对象函数。FeatureTransformer对象。例如,检查前两个生成的特性。

描述(T, 1:2)
类型IsOriginal数据源转换  ___________ __________ ______________ _______________________________________________________________ zsc(收缩压。^ 2)数字错误的收缩力量(2)标准化与z分数(= 15119.54,std = 1667.5858) eb8(舒张压)分类错误的舒张Equal-width装箱(箱子的数量= 8)

第一个专题newTbl的值的平方所创建的数值变量收缩压变量,然后将结果转换为z分数。第二个特点是newTbl类的值的分类变量舒张压变量分成8个等宽的箱子。

使用生成的特征来拟合一个线性分类器,而不需要任何正则化。

Mdl = fitclinear(NewTbl,“抽烟”λ= 0);

绘制用于训练的预测器的系数Mdl.请注意,fitclinear在拟合模型之前展开分类预测器。

p = length(Mdl.Beta);[sortedCoefs,expandedIndex] = sort(Mdl. coefs)。β,ComparisonMethod =“abs”);sortedExpandedPreds = mld . expandedpredictornames (expandedIndex);栏(sortedCoefs水平=“上”yticklabels(sortedExpandedPreds(1:2:end)) xlabel(“系数”) ylabel (“扩展预测”)标题(展开预测器的系数

图中包含一个轴对象。标题为Coefficients for Expanded Predictors的axes对象包含一个类型为bar的对象。

确定系数绝对值较大的预测因子。

bigCoefs = abs(sortedCoefs) >= 4;翻转(sortedExpandedPreds (bigCoefs))
ans =1 x7单元格列1到列3 {'zsc(收缩压.^2)'}{'eb8(收缩压)…'} {'q8(舒张期)…'}列4到6 {'eb8(舒张期)…'} {'q8(收缩期)>= 6'}{'q8(舒张期)…'}列7 {'zsc(Height-Sys…'}

您可以使用部分依赖图来分析级别具有较大绝对值系数的分类特征。的部分依赖关系图处置(舒张压)变量,其级别q8(舒张期)>= 3而且q8(舒张期)>= 6有大绝对值的系数。这两个水平对应着预测分数的显著变化。

plotPartialDependence (Mdl“处置(舒张压)”、Mdl.ClassNames NewTbl);

图中包含一个轴对象。标题为偏依赖Plot的axis对象包含2个类型为line的对象。这些对象表示0,1。

生成新特征以提高装袋集成精度

使用gencfeatures在训练袋装集成分类器之前设计新特征。在对新数据进行预测之前,对新数据集应用相同的特征转换。比较使用工程特性的集成的测试集性能与使用原始特性的集成的测试集性能。

阅读示例文件CreditRating_Historical.dat变成一个表。预测数据包括公司客户列表的财务比率和行业部门信息。响应变量由评级机构指定的信用评级组成。预览数据集的前几行。

信用评级=可读(“CreditRating_Historical.dat”);头(creditrating)
ans =8×8表ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA行业评级  _____ ______ ______ _______ ________ _____ ________ _______ 62394 0.013 0.104 0.036 0.447 0.142 3{“BB”}48608 0.232 0.335 0.062 1.969 0.281 8 {A} 42444 0.311 0.367 0.074 1.935 0.366 1 {A} 48631 0.194 0.263 0.062 1.017 0.228 - 4 {BBB的}43768 0.121 0.413 0.057 3.647 0.466 12 {' AAA '} 39255 -0.117 -0.799 0.01 0.179 0.082 - 4{“CCC”}62236 0.087 0.158 0.049 0.816 0.324 - 2 {BBB的}39354 0.005 0.181 0.034 2.597 0.388 7{“AA”}

的每一个值ID变量是唯一的客户ID,即长度(独特(creditrating.ID))等于在creditrating,ID变量是一个糟糕的预测器。删除ID变量,并将行业变量到a分类变量。

信用评级= removevars(信用评级,“ID”);creditrating。行业= categorical(creditrating.Industry);

转换评级对序数的响应变量分类变量。

creditrating。评级= categorical(creditrating.Rating,...“AAA”“AA”“一个”" BBB "“BB”“B”“CCC”),序数= true);

将数据划分为训练集和测试集。使用大约75%的观测数据作为训练数据,25%的观测数据作为测试数据。使用cvpartition

rng (“默认”用于分区的再现性c = cvpartition(creditrating.Rating,Holdout=0.25);trainingIndices = training(c);%训练集的指数testIndices =测试(c);%测试集的索引creditTrain =信用评级(trainingIndices,:);creditTest = creditrating(testIndices,:);

使用训练数据生成40个新特征来适应一个集合。默认情况下,这40个特性包括原始特性,可以被打包集成用作预测器。

[T,newCreditTrain] =“评级”现年40岁的...TargetLearner =“包”);T
T = FeatureTransformer with properties: Type: 'classification' TargetLearner: 'bag' NumEngineeredFeatures: 34 NumOriginalFeatures: 6 TotalNumFeatures: 40

创建newCreditTest通过应用存储在对象中的转换T对测试数据。

newCreditTest = transform(T,creditTest);

比较在原始特征上训练的袋装集合和在新特征上训练的袋装集合的测试集性能。

使用原始训练集训练一个袋装集合creditTrain.计算模型在原始测试集上的准确性信贷.使用混淆矩阵将结果可视化。

originalMdl = fitcensemble(信贷列车,“评级”方法=“包”);originalTestAccuracy = 1 - loss(originalMdl,creditTest,...“评级”LossFun =“classiferror”
originalTestAccuracy = 0.7604
predictedTestLabels = predict(originalMdl,creditTest);confusionchart (creditTest.Rating predictedTestLabels);

图包含一个confusimatrixchart类型的对象。

使用转换后的训练集训练一个袋装集合newCreditTrain.计算模型在转换后的测试集上的准确性newCreditTest.使用混淆矩阵将结果可视化。

newMdl = fitcensemble(newCreditTrain,“评级”方法=“包”);newTestAccuracy = 1 - loss(newMdl,newCreditTest,...“评级”LossFun =“classiferror”
newTestAccuracy = 0.7501
newPredictedTestLabels = predict(newMdl,newCreditTest);confusionchart (newCreditTest.Rating newPredictedTestLabels)

图包含一个confusimatrixchart类型的对象。

在转换后的数据上训练的袋装集合似乎优于在原始数据上训练的袋装集合。

另请参阅

|||||||