Main Content

predict

半教師ありグラフベース分類器を使用した新しいデータのラベル付け

R2020b 以降

    説明

    label = predict(Mdl,X) は、半教師ありグラフベース分類器 Mdl に基づいて、テーブルまたは行列 X 内のデータに対する予測クラス ラベルのベクトルを返します。

    [label,score] = predict(Mdl,X) は、ラベルが特定のクラスから派生する尤度を示すスコアの行列も返します。X 内の各観測値について、予測クラス ラベルは、すべてのクラスの中で最大のスコアに対応します。

    すべて折りたたむ

    ラベル付けされたデータとラベル付けされていないデータの両方を使用して、SemiSupervisedGraphModel オブジェクトに学習させます。学習済みのモデルを使用して新しいデータにラベルを付けます。

    ラベル付けされたデータの観測値をランダムに 15 個生成し、その観測値が 5 個ずつ 3 つのクラスに属するようにします。

    rng('default') % For reproducibility
    labeledX = [randn(5,2)*0.25 + ones(5,2);
                randn(5,2)*0.25 - ones(5,2);
                randn(5,2)*0.5];
    Y = [ones(5,1); ones(5,1)*2; ones(5,1)*3];

    ラベル付けされていないデータの観測値を追加でランダムに 300 個生成し、各クラスに 100 個ずつ属するようにします。

    unlabeledX = [randn(100,2)*0.25 + ones(100,2);
                  randn(100,2)*0.25 - ones(100,2);
                  randn(100,2)*0.5];

    グラフベースの半教師あり手法を使用して、ラベル付けされていないデータにラベルを当てはめます。ラベル付けアルゴリズムとしてラベル拡散を指定し、自動的に選択されるカーネル スケール係数を使用します。関数 fitsemigraphSemiSupervisedGraphModel オブジェクトを返します。このオブジェクトの FittedLabels プロパティにはラベル付けされていないデータに当てはめられたラベルが、LabelScores プロパティには関連するラベル スコアが含まれます。

    Mdl = fitsemigraph(labeledX,Y,unlabeledX,'Method','labelspreading', ...
        'KernelScale','auto')
    Mdl = 
      SemiSupervisedGraphModel with properties:
    
                 FittedLabels: [300x1 double]
                  LabelScores: [300x3 double]
                   ClassNames: [1 2 3]
                 ResponseName: 'Y'
        CategoricalPredictors: []
                       Method: 'labelspreading'
    
    
    
    

    新しいデータの観測値をランダムに 150 個生成し、各クラスに 50 個ずつ属するようにします。検証のために、新しいデータの真のラベルを追跡します。

    newX = [randn(50,2)*0.25 + ones(50,2);
            randn(50,2)*0.25 - ones(50,2);
            randn(50,2)*0.5];
    trueLabels = [ones(50,1); ones(50,1)*2; ones(50,1)*3];

    SemiSupervisedGraphModel オブジェクトの関数 predict を使用して、新しいデータのラベルを予測します。混同行列を使用して、真のラベルを予測ラベルと比較します。

    predictedLabels = predict(Mdl,newX);
    confusionchart(trueLabels,predictedLabels)

    Figure contains an object of type ConfusionMatrixChart.

    newX 内の 150 個の観測値のうち、誤りのラベルが付けられた観測値はわずか 3 個です。

    入力引数

    すべて折りたたむ

    半教師ありグラフベース分類器。fitsemigraph によって返される SemiSupervisedGraphModel オブジェクトとして指定します。

    分類対象の予測子データ。数値行列またはテーブルを指定します。X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

    行列データ (fitsemigraph の呼び出しにおける XUnlabeledX) を使用して Mdl に学習させる場合、X を数値行列として指定します。

    • X の列に含まれている変数の順序は、Mdl に学習させた予測子変数の順序と同じでなければなりません。

    • インデックスが Mdl.CategoricalPredictors と一致する X の予測子は、カテゴリカル予測子として扱われます。

    表形式データ (fitsemigraph の呼び出しにおける TblUnlabeledTbl) を使用して Mdl に学習させる場合、X をテーブルとして指定します。

    • X 内のすべての予測子変数は変数名およびデータ型が、Mdl に学習させた (Mdl.PredictorNames に格納されている) 変数と同じでなければなりません。ただし、X の列の順序が Tbl の列の順序に対応する必要はありません。また、TblX に追加の変数 (応答変数など) を含めることができますが、predict はこれらを無視します。

    • predict は、複数列の変数、文字ベクトルの cell 配列ではない cell 配列、または順序カテゴリカル変数をサポートしません。

    fitsemigraph'Standardize',true に設定して Mdl に学習させた場合、学習データで計算された対応する平均と標準偏差を使用して X の列が標準化されます。

    データ型: single | double | table

    出力引数

    すべて折りたたむ

    予測クラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として返されます。label のデータ型は当てはめられたクラス ラベル Mdl.FittedLabels と同じで、その長さは X の行数と等しくなります。

    predict を使ってクラス ラベルを予測する方法の詳細については、アルゴリズムを参照してください。

    予測クラス スコア。数値行列として返されます。score のサイズは m 行 K 列です。m は X の観測値 (行) の数、K は Mdl.ClassNames のクラスの数です。

    score(m,k) はクラス k に属する X の観測値 m の尤度です。高いスコア値は尤度が高いことを示します。

    predict を使ってクラス スコアを予測する方法の詳細については、アルゴリズムを参照してください。

    詳細

    すべて折りたたむ

    類似度グラフ

    類似度グラフは、予測子データ (ラベル付けされたデータとラベル付けされていないデータの両方) 内の観測値間の局所的な近傍関係を無向グラフとしてモデル化します。グラフ内のノードは観測値を表し、無向のエッジは観測値間の接続を表します。

    任意の 2 つのノード i および j 間のペアワイズ距離 Disti,j が正である (またはあるしきい値よりも大きい) 場合、類似度グラフはエッジを使用して 2 つのノードを接続します。2 つのノード間のエッジは、ペアワイズ類似度 Si,j によって重み付けされます。ここで、指定されたカーネル スケール σ の値に対して Si,j=exp((Disti,jσ)2) です。

    類似度行列

    類似度行列は、類似度グラフの行列表現です。n 行 n 列の行列 S=(Si,j)i,j=1,,n には、類似度グラフで接続しているノード間のペアワイズ類似度の値が含まれます。グラフの類似度行列は、隣接行列とも呼ばれます。

    類似度グラフのエッジが無向であるため、類似度行列は対称です。Si,j = 0 の値は、類似度グラフのノード i と j が接続していないことを意味します。

    アルゴリズム

    ラベル付けされていない学習データにラベルを当てはめるために、fitsemigraph は、ラベル付けされた観測値とラベル付けされていない観測値の両方をノードとして使用して類似度グラフを作成し、ラベル伝播またはラベル拡散のいずれかを使用して、ラベル付けされた観測値からのラベル情報をラベル付けされていない観測値に分布させます。生成される SemiSupervisedGraphModel オブジェクトの FittedLabels プロパティと LabelScores プロパティに、ラベル付けされていないデータに当てはめられたラベルとラベル スコアがそれぞれ格納されます。

    新しい観測値 x のラベルを予測するために、関数 predict は隣接する観測値スコアの加重平均を使用して x のラベル スコア、つまり Fx=j=1nS(x,xj)Fxjj=1nS(x,xj) を計算します。

    • n は学習データの観測値の数です。

    • Fxj は学習観測値 xj (またはノード j) のラベル スコアの行ベクトルです。学習観測値におけるラベル スコアの計算の詳細については、アルゴリズムを参照してください。

    • S(x,xj) は新しい観測値 x と学習観測値 xj のペアワイズ類似度です。S(xi,xj) = Si,j類似度グラフで定義されています。

    Fx の最大スコアの列は、x の予測クラス ラベルに対応します。詳細は、[1]を参照してください。

    参照

    [1] Delalleau, Olivier, Yoshua Bengio, and Nicolas Le Roux. “Efficient Non-Parametric Function Induction in Semi-Supervised Learning.” Proceedings of the Tenth International Workshop on Artificial Intelligence and Statistics. 2005.

    バージョン履歴

    R2020b で導入