主要内容

このペジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ベ邮箱ズ最適化を使用したモデル選択の自動化への移行

この例では,特定の学習データセットに対する複数の分類モデルをビルドし,ベイズ最適化を使用してそれらのハイパーパラメーターを最適化して,検定データセットでの性能が最適なモデルを選択する方法を示します。

複数のモデルに学習させてそれらのハイパーパラメーターを調整するには,多くの場合,数日間または数週間かかります。複数のモデルを自動的に開発および比較するスクリプトを作成するほうが,より高速になり得ます。ベ邮箱ズ最適化を使用してプロセスを高速化することもできます。異なるハイパーパラメーターのセットで各モデルに学習させる代わりに,少数の異なるモデルを選択し,ベイズ最適化を使用してそれらの既定のハイパーパラメーターを調整します。ベイズ最適化は,モデルの目的関数を最小化することにより特定のモデルに対するハイパーパラメーターの最適なセットを求めます。この最適化アルゴリズムは反復ごとに新しいハイパーパラメーターを戦略的に選択し,通常は,単純なグリッド検索よりも短時間で最適なハイパーパラメーターのセットに到達します。この例のスクリプトを使用すると,特定の学習データセットについてベイズ最適化を使用して複数の分類モデルに学習させ,検定データセットでの性能が最適なモデルを特定できます。

あるいは,選択した分類器のタイプとハイパーパラメーターの値において自動的に分類モデルを選択するには,fitcautoを使用します。たとえば,ベズ最適化および阿莎最適化による分類器の自動選択を参照してください。

標本デタの読み込み

この例ではcensus1994.matに保存されている1994年の国勢調査デタを使用します。このデータセットは,個人の年収が50000美元を超えるかどうかを予測するための,米国勢調査局の人口統計データから構成されます。この分類タスクでは,年齢,労働階級,教育レベル,婚姻区分,人種などが与えられた人の給与カテゴリを予測するモデルを近似します。

標本デタcensus1994を読み込み,デタセットの変数を表示します。

负载census1994
名称大小字节类属性描述20x74 2960 char adultdata 32561x15 1872567 table adultttest 16281x15 944467 table

census1994には学習デタセットadultdataおよび検定デタセット成人が含まれています。この例では、実行時間を短縮するために、関数datasampleを使用して元の表adultdataおよび成人5000年からそれぞれの学習観測値と検定観測値をサブサンプリングします(完全なデータセットを使用する場合は,この手順を省略できます)。

NumSamples = 5000;s = RandStream(“mlfg6331_64”);%用于重现性adultdata = datasample(s,adultdata,NumSamples,“替换”、假);adulttest = datasample(s,adulttest,NumSamples,“替换”、假);

学習デタセットの最初の数行をプレビュします。

头(adultdata)
ans =8×15表年龄workClass fnlwgt教育education_num marital_status种族职业关系性capital_gain capital_loss hours_per_week native_country薪水  ___ ___________ __________ ____________ _____________ __________________ _________________ ______________ _____ ______ ____________ ____________ ______________ ______________ ______ 39私人4.91 e + 05单身汉13未婚Exec-managerial相关黑人男性45 0 0美国< = 50 k 25私人2.2022 e + 05年11日7从未结过婚私生女白人男性0 0 45美国<=50K 24二等兵2.2761e+05 10 6离异杂工清洁工未婚白人女性0 0 58美国<=50K 51二等兵1.7329e+05 hs毕业生9离异其他服务非家庭成员白人女性0 0 40美国<=50K 54二等兵2.8029e+05某些大学10已婚公民配偶销售丈夫白人男性0 0 32美国<=50K 53联邦政府39643 hs毕业生9丧偶行政管理非家庭成员白人女性0 0 58美国<=50K52二等兵81859 hs毕业9已婚文明配偶机器操作检查丈夫白人男性0 0 48美国>50K二等兵1.2429e+05一些大学10已婚文明配偶行政牧师丈夫白人男性0 0 50美国<=50K

各行は,年齢,教育,職業など,成人1人の属性を表します。最後の列工资は個人の年収が$50,000以下か,$50,000を超えるかどうかを示します。

デタの理解および分類モデルの選択

统计和机器学习工具箱™には,分類木,判別分析,単純ベイズ,最近傍,サポートベクターマシン(支持向量机),アンサンブル分類を含む,分類用の複数のオプションが用意されています。アルゴリズムの完全なリストにいては,分類を参照してください。

問題に使用するアルゴリズムを選択する前に,デタセットを検査します。国勢調査デタには注目すべき複数の特性があります。

  • デタは表形式であり,数値変数とカテゴリカル変数が両方含まれています。

  • デタには欠損値が含まれています。

  • 応答変数 (工资)には,2のクラス(バナリ分類)があります。

何かを仮定したり,データで十分に機能することが予測されるアルゴリズムの事前知識を使用しないで,単純に表形式のデータとバイナリ分類をサポートするすべてのアルゴリズムに学習させます。誤り訂正出力符号(ecoc)モデルは3以上のクラスがあるデタで使用されます。判別分析アルゴリズムおよび最近傍アルゴリズムは数値変数とカテゴリカル変数の両方が含まれるデータを解析しません。したがって,この例に適したアルゴリズムは,支持向量机,決定木,決定木のアンサンブル,および単純ベイズモデルです。

モデルのビルドおよびハ

プロセスを高速化するために,ハ邮箱パ,パラメ邮箱タ,最適化オプションをカスタマ邮箱ズします。“ShowPlots”として,“详细”を0として指定し,プロットの表示とメッセジの表示をそれぞれ無効にします。また,“UseParallel”真正的として指定してベイズ最適化を並列実行しますが,これには并行计算工具箱™が必要です。並列でのタイミングに再現性がないため,並列ベイズ最適化で再現性のある結果が生成されるとは限りません。

Hypopts = struct(“ShowPlots”假的,“详细”0,“UseParallel”,真正的);

並列プルを起動します。

Poolobj = gcp;

各近似関数を呼び出して,その名前と値のペアの引数“OptimizeHyperparameters”“汽车”に設定することにより,学習デタセットを近似し,パラメを簡単に調整できます。分類モデルを作成します。

支持向量机:多项式核支持向量机和高斯核支持向量机Mdls {1} = fitcsvm(adultdata,“工资”“KernelFunction”多项式的“标准化”“上”...“OptimizeHyperparameters”“汽车”“HyperparameterOptimizationOptions”, hypopts);Mdls {2} = fitcsvm(adultdata,“工资”“KernelFunction”“高斯”“标准化”“上”...“OptimizeHyperparameters”“汽车”“HyperparameterOptimizationOptions”, hypopts);%决策树Mdls {3} = fitctree(adultdata,“工资”...“OptimizeHyperparameters”“汽车”“HyperparameterOptimizationOptions”, hypopts);决策树的集合Mdls {4} = fitcensemble(adultdata,“工资”“学习者”“树”...“OptimizeHyperparameters”“汽车”“HyperparameterOptimizationOptions”, hypopts);%朴素贝叶斯Mdls {5} = fitcnb(adultdata,“工资”...“OptimizeHyperparameters”“汽车”“HyperparameterOptimizationOptions”, hypopts);
警告:在优化朴素贝叶斯'Width'参数时,建议您首先标准化所有的数值预测器。如果您已经这样做了,请忽略此警告。

目的曲線の最小値のプロット

ベイズ最適化の結果を各モデルから抽出し,ハイパーパラメーターの最適化の反復ごとに各モデルで観測された目的関数の最小値をプロットします。この目的関数値は学習デタセットを使用した5分割交差検証で測定される誤分類率に対応します。プロットはモデルごとの性能を比較します。

图保存N =长度(mdls);1:N mdl = mdls{i};results = mdls{i}.HyperparameterOptimizationResults;情节(结果。ObjectiveMinimumTrace,“标记”“o”“MarkerSize”5);结束Names = {“SVM-Polynomial”“SVM-Gaussian”“决策树”“Ensemble-Trees”“天真的贝叶斯};传奇(名称,“位置”“东北”)标题(“贝叶斯优化”)包含(“迭代次数”) ylabel (“最低目标值”

ベイズ最適化を使用してより適切なハイパーパラメーターセットを求めると,複数の反復にわたりモデルの性能が向上します。この場合,プロットは決定木のアンサンブルにデタの最高の予測精度があることを示しています。このモデルは,複数回の反復および異なるベイズ最適化のハイパーパラメーターのセットにわたり,一貫して適切に機能します。

検定セットによる性能のチェック

混同行列および受信者動作特性(ROC)曲線を使用して,検定データセットで分類器の性能をチェックします。

検定デタセットの予測したラベルおよびスコア値を見けます。

label = cell(N,1);score = cell(N,1);i = 1:N [label{i},score{i}] = predict(mdls{i},adulttest);结束

混同行列

各モデルの関数预测を使用して,検定観測値ごとに最も可能性の高いクラスを取得します。次に,関数confusionchartを使用して,検定データセットの予測したクラスおよび既知の(真正的)クラスをもつ混同行列を計算します。

图c = cell(N,1);i = 1:N subplot(2,3,i) c{i} = confusichart (adulttest.salary,label{i});标题(名字{我})结束

対角要素は、特定のクラスの正しく分類された以及ンスタンスの数を示しています。非対角要素は誤分類した観測値の邮箱ンスタンスです。

Roc曲線

各分類器のroc曲線をプロットすることにより,より精密に分類器の性能を検査します。関数perfcurveを使用してroc曲線のX座標およびY座標と,計算されたXおよびYに対する曲線の下の面積(auc)を取得します。

ラベル“< = 50 k”に対応するスコア値のroc曲線をプロットするには,関数预测から返されるスコア値の列の順序を確認します。列の順序は学習デタセットにおける応答変数のカテゴリの順序と同じです。カテゴリの順序を表示します。

C = categories(adultdata.salary)
c =2×1细胞{'<= 50k '} {'> 50k '}

Roc曲線をプロットします。

图保存AUC = 0 (1,N);i = 1: N [X, Y, ~, AUC (i)) = perfcurve (adulttest.salary,分数{我}(:1),“< = 50 k”);情节(X, Y)结束标题(“ROC曲线”)包含(“假阳性率”) ylabel (“真阳性率”)传说(名称,“位置”“东南”

中华民国曲線は,分類器の出力の異なるのしきい値に対する真陽性率対偽陽性率(すなわち,感度対1 -特異度)を示します。

棒グラフを使用してauc値をプロットします。しきい値にかかわらず真陽性率が常に1の完璧な分類器ではauc = 1になります。観測値を無作為にクラスに割り当てる分類器では,auc = 0.5になります。Aucの値が大きい場合,分類器の性能が高いことを示します。

图栏标题(“曲线下面积”)包含(“模型”) ylabel (“AUC”) xticklabels(name) xtickangle(30) ylim([0.85,0.925])

混同行列およびAUCの棒グラフに基づくと,決定木のアンサンブルとSVMモデルでは決定木モデルと単純ベイズモデルより高い精度が得られます。

最も有望なモデルの最適化の再開

さらなる反復にわたりすべてのモデルでベズ最適化を実行すると,計算量が増大する場合があります。代わりに,これまで適切に機能したモデルのサブセットを選択し,関数重新开始を使用してさらに30回の反復にわたり最適化を続けます。ベ邮箱ズ最適化の反復ごとに観測された目的関数の最小値をプロットします。

图保存selectedMdls = mdls([1,2,4]);newresults = cell(1,长度(select mdls));i = 1:length(selectedMdls) newresults{i} = resume(selectedMdls{i}.使用实例HyperparameterOptimizationResults,“MaxObjectiveEvaluations”, 30);情节(newresults{}。ObjectiveMinimumTrace,“标记”“o”“MarkerSize”5)结束标题(“简历贝叶斯优化”)包含(“迭代次数”) ylabel (“最低目标值”)({传奇“SVM-Polynomial”“SVM-Gaussian”“Ensemble-Trees”},“位置”“东北”

最初の30回の反復はベ最初の。次の30回の反復は関数重新开始の結果に対応します。最適化の再開は,最初の30回の反復後もさらに継続して損失が削減されるため,便利です。

参考

|||

関連するトピック