Search in sources :

Example 11 with MultiLabel

use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.

the class CMLCRF method calClassProbs.

/**
     * marginal probabilities
     * @param assignmentProbs
     * @return
     */
public double[] calClassProbs(double[] assignmentProbs) {
    double[] classProbs = new double[numClasses];
    for (int a = 0; a < numSupports; a++) {
        MultiLabel assignment = supportCombinations.get(a);
        double prob = assignmentProbs[a];
        for (Integer label : assignment.getMatchedLabels()) {
            classProbs[label] += prob;
        }
    }
    return classProbs;
}
Also used : MultiLabel(edu.neu.ccs.pyramid.dataset.MultiLabel)

Example 12 with MultiLabel

use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.

the class CMLCRF method predictCombinationScore.

// todo fix: handle separately
private double predictCombinationScore(int labelComIndex, double[] classScores) {
    MultiLabel label = supportCombinations.get(labelComIndex);
    double score = 0.0;
    for (Integer l : label.getMatchedLabels()) {
        score += classScores[l];
    }
    if (considerPair) {
        score += combinationLabelPartScores[labelComIndex];
    }
    return score;
}
Also used : MultiLabel(edu.neu.ccs.pyramid.dataset.MultiLabel)

Example 13 with MultiLabel

use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.

the class SparseCBMOptimzer method updateGamma.

private void updateGamma(int n) {
    Vector x = dataSet.getRow(n);
    MultiLabel y = dataSet.getMultiLabels()[n];
    double[] posterior = cbm.posteriorMembership(x, y);
    for (int k = 0; k < cbm.numComponents; k++) {
        gammas[n][k] = posterior[k];
    }
}
Also used : MultiLabel(edu.neu.ccs.pyramid.dataset.MultiLabel) Vector(org.apache.mahout.math.Vector)

Example 14 with MultiLabel

use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.

the class BlockwiseCD method calEmpiricalCountForFeature.

private double calEmpiricalCountForFeature(int parameterIndex) {
    double empiricalCount = 0.0;
    int classIndex = parameterToClass[parameterIndex];
    int featureIndex = parameterToFeature[parameterIndex];
    if (featureIndex == -1) {
        for (int i = 0; i < dataSet.getNumDataPoints(); i++) {
            if (dataSet.getMultiLabels()[i].matchClass(classIndex)) {
                empiricalCount += 1;
            }
        }
    } else {
        Vector column = dataSet.getColumn(featureIndex);
        MultiLabel[] multiLabels = dataSet.getMultiLabels();
        for (Vector.Element element : column.nonZeroes()) {
            int dataIndex = element.index();
            double featureValue = element.get();
            if (multiLabels[dataIndex].matchClass(classIndex)) {
                empiricalCount += featureValue;
            }
        }
    }
    return empiricalCount;
}
Also used : MultiLabel(edu.neu.ccs.pyramid.dataset.MultiLabel) DenseVector(org.apache.mahout.math.DenseVector) Vector(org.apache.mahout.math.Vector)

Example 15 with MultiLabel

use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.

the class CRFF1Loss method calEmpiricalCountForLabelPair.

private double calEmpiricalCountForLabelPair(int parameterIndex) {
    double empiricalCount = 0.0;
    int start = parameterIndex - numWeightsForFeatures;
    int l1 = parameterToL1[start];
    int l2 = parameterToL2[start];
    int featureCase = start % 4;
    for (int i = 0; i < dataSet.getNumDataPoints(); i++) {
        MultiLabel label = dataSet.getMultiLabels()[i];
        switch(featureCase) {
            // both l1, l2 equal 0;
            case 0:
                if (!label.matchClass(l1) && !label.matchClass(l2))
                    empiricalCount += 1.0;
                break;
            // l1 = 1; l2 = 0;
            case 1:
                if (label.matchClass(l1) && !label.matchClass(l2))
                    empiricalCount += 1.0;
                break;
            // l1 = 0; l2 = 1;
            case 2:
                if (!label.matchClass(l1) && label.matchClass(l2))
                    empiricalCount += 1.0;
                break;
            // l1 = 1; l2 = 1;
            case 3:
                if (label.matchClass(l1) && label.matchClass(l2))
                    empiricalCount += 1.0;
                break;
            default:
                throw new RuntimeException("feature case :" + featureCase + " failed.");
        }
    }
    return empiricalCount;
}
Also used : MultiLabel(edu.neu.ccs.pyramid.dataset.MultiLabel)

Aggregations

MultiLabel (edu.neu.ccs.pyramid.dataset.MultiLabel)101 Vector (org.apache.mahout.math.Vector)22 MultiLabelClfDataSet (edu.neu.ccs.pyramid.dataset.MultiLabelClfDataSet)21 File (java.io.File)14 DenseVector (org.apache.mahout.math.DenseVector)13 CMLCRF (edu.neu.ccs.pyramid.multilabel_classification.crf.CMLCRF)12 Pair (edu.neu.ccs.pyramid.util.Pair)8 LBFGS (edu.neu.ccs.pyramid.optimization.LBFGS)7 ArrayList (java.util.ArrayList)7 MLMeasures (edu.neu.ccs.pyramid.eval.MLMeasures)6 CRFLoss (edu.neu.ccs.pyramid.multilabel_classification.crf.CRFLoss)6 MultiLabelClassifier (edu.neu.ccs.pyramid.multilabel_classification.MultiLabelClassifier)5 GeneralF1Predictor (edu.neu.ccs.pyramid.multilabel_classification.plugin_rule.GeneralF1Predictor)5 Collectors (java.util.stream.Collectors)5 EarlyStopper (edu.neu.ccs.pyramid.optimization.EarlyStopper)4 java.util (java.util)4 StopWatch (org.apache.commons.lang3.time.StopWatch)4 Config (edu.neu.ccs.pyramid.configuration.Config)3 DataSetUtil (edu.neu.ccs.pyramid.dataset.DataSetUtil)3 TRECFormat (edu.neu.ccs.pyramid.dataset.TRECFormat)3