StandardTrainersCatalog.LbfgsPoissonRegression 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
LbfgsPoissonRegression(RegressionCatalog+RegressionTrainers, LbfgsPoissonRegressionTrainer+Options) |
선형 회귀 모델을 사용하여 대상을 예측하는 고급 옵션을 사용하여 만듭니 LbfgsPoissonRegressionTrainer 다. |
LbfgsPoissonRegression(RegressionCatalog+RegressionTrainers, String, String, String, Single, Single, Single, Int32, Boolean) |
선형 회귀 모델을 사용하여 대상을 예측하는 만들기 LbfgsPoissonRegressionTrainer |
LbfgsPoissonRegression(RegressionCatalog+RegressionTrainers, LbfgsPoissonRegressionTrainer+Options)
선형 회귀 모델을 사용하여 대상을 예측하는 고급 옵션을 사용하여 만듭니 LbfgsPoissonRegressionTrainer 다.
public static Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer LbfgsPoissonRegression (this Microsoft.ML.RegressionCatalog.RegressionTrainers catalog, Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer.Options options);
static member LbfgsPoissonRegression : Microsoft.ML.RegressionCatalog.RegressionTrainers * Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer.Options -> Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer
<Extension()>
Public Function LbfgsPoissonRegression (catalog As RegressionCatalog.RegressionTrainers, options As LbfgsPoissonRegressionTrainer.Options) As LbfgsPoissonRegressionTrainer
매개 변수
회귀 카탈로그 트레이너 개체입니다.
트레이너 옵션.
반환
예제
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Trainers;
namespace Samples.Dynamic.Trainers.Regression
{
public static class LbfgsPoissonRegressionWithOptions
{
public static void Example()
{
// Create a new context for ML.NET operations. It can be used for
// exception tracking and logging, as a catalog of available operations
// and as the source of randomness. Setting the seed to a fixed number
// in this example to make outputs deterministic.
var mlContext = new MLContext(seed: 0);
// Create a list of training data points.
var dataPoints = GenerateRandomDataPoints(1000);
// Convert the list of data points to an IDataView object, which is
// consumable by ML.NET API.
var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints);
// Define trainer options.
var options = new LbfgsPoissonRegressionTrainer.Options
{
LabelColumnName = nameof(DataPoint.Label),
FeatureColumnName = nameof(DataPoint.Features),
// Reduce optimization tolerance to speed up training at the cost of
// accuracy.
OptimizationTolerance = 1e-4f,
// Decrease history size to speed up training at the cost of
// accuracy.
HistorySize = 30,
// Specify scale for initial weights.
InitialWeightsDiameter = 0.2f
};
// Define the trainer.
var pipeline =
mlContext.Regression.Trainers.LbfgsPoissonRegression(options);
// Train the model.
var model = pipeline.Fit(trainingData);
// Create testing data. Use different random seed to make it different
// from training data.
var testData = mlContext.Data.LoadFromEnumerable(
GenerateRandomDataPoints(5, seed: 123));
// Run the model on test data set.
var transformedTestData = model.Transform(testData);
// Convert IDataView object to a list.
var predictions = mlContext.Data.CreateEnumerable<Prediction>(
transformedTestData, reuseRowObject: false).ToList();
// Look at 5 predictions for the Label, side by side with the actual
// Label for comparison.
foreach (var p in predictions)
Console.WriteLine($"Label: {p.Label:F3}, Prediction: {p.Score:F3}");
// Expected output:
// Label: 0.985, Prediction: 1.110
// Label: 0.155, Prediction: 0.169
// Label: 0.515, Prediction: 0.400
// Label: 0.566, Prediction: 0.415
// Label: 0.096, Prediction: 0.169
// Evaluate the overall metrics
var metrics = mlContext.Regression.Evaluate(transformedTestData);
PrintMetrics(metrics);
// Expected output:
// Mean Absolute Error: 0.10
// Mean Squared Error: 0.01
// Root Mean Squared Error: 0.11
// RSquared: 0.89 (closer to 1 is better. The worst case is 0)
}
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count,
int seed = 0)
{
var random = new Random(seed);
for (int i = 0; i < count; i++)
{
float label = (float)random.NextDouble();
yield return new DataPoint
{
Label = label,
// Create random features that are correlated with the label.
Features = Enumerable.Repeat(label, 50).Select(
x => x + (float)random.NextDouble()).ToArray()
};
}
}
// Example with label and 50 feature values. A data set is a collection of
// such examples.
private class DataPoint
{
public float Label { get; set; }
[VectorType(50)]
public float[] Features { get; set; }
}
// Class used to capture predictions.
private class Prediction
{
// Original label.
public float Label { get; set; }
// Predicted score from the trainer.
public float Score { get; set; }
}
// Print some evaluation metrics to regression problems.
private static void PrintMetrics(RegressionMetrics metrics)
{
Console.WriteLine("Mean Absolute Error: " + metrics.MeanAbsoluteError);
Console.WriteLine("Mean Squared Error: " + metrics.MeanSquaredError);
Console.WriteLine(
"Root Mean Squared Error: " + metrics.RootMeanSquaredError);
Console.WriteLine("RSquared: " + metrics.RSquared);
}
}
}
적용 대상
LbfgsPoissonRegression(RegressionCatalog+RegressionTrainers, String, String, String, Single, Single, Single, Int32, Boolean)
선형 회귀 모델을 사용하여 대상을 예측하는 만들기 LbfgsPoissonRegressionTrainer
public static Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer LbfgsPoissonRegression (this Microsoft.ML.RegressionCatalog.RegressionTrainers catalog, string labelColumnName = "Label", string featureColumnName = "Features", string exampleWeightColumnName = default, float l1Regularization = 1, float l2Regularization = 1, float optimizationTolerance = 1E-07, int historySize = 20, bool enforceNonNegativity = false);
static member LbfgsPoissonRegression : Microsoft.ML.RegressionCatalog.RegressionTrainers * string * string * string * single * single * single * int * bool -> Microsoft.ML.Trainers.LbfgsPoissonRegressionTrainer
<Extension()>
Public Function LbfgsPoissonRegression (catalog As RegressionCatalog.RegressionTrainers, Optional labelColumnName As String = "Label", Optional featureColumnName As String = "Features", Optional exampleWeightColumnName As String = Nothing, Optional l1Regularization As Single = 1, Optional l2Regularization As Single = 1, Optional optimizationTolerance As Single = 1E-07, Optional historySize As Integer = 20, Optional enforceNonNegativity As Boolean = false) As LbfgsPoissonRegressionTrainer
매개 변수
회귀 카탈로그 트레이너 개체입니다.
- exampleWeightColumnName
- String
예제 가중치 열의 이름(선택 사항)입니다.
- optimizationTolerance
- Single
최적화 프로그램 수렴을 위한 임계값입니다.
- historySize
- Int32
헤시안을 추정하기 위해 기억해야 할 이전 반복 횟수입니다. 값이 낮을수록 더 빠르지만 정확도가 낮아집니다.
- enforceNonNegativity
- Boolean
음수가 아닌 가중치를 적용합니다.
반환
예제
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
namespace Samples.Dynamic.Trainers.Regression
{
public static class LbfgsPoissonRegression
{
public static void Example()
{
// Create a new context for ML.NET operations. It can be used for
// exception tracking and logging, as a catalog of available operations
// and as the source of randomness. Setting the seed to a fixed number
// in this example to make outputs deterministic.
var mlContext = new MLContext(seed: 0);
// Create a list of training data points.
var dataPoints = GenerateRandomDataPoints(1000);
// Convert the list of data points to an IDataView object, which is
// consumable by ML.NET API.
var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints);
// Define the trainer.
var pipeline = mlContext.Regression.Trainers.
LbfgsPoissonRegression(
labelColumnName: nameof(DataPoint.Label),
featureColumnName: nameof(DataPoint.Features));
// Train the model.
var model = pipeline.Fit(trainingData);
// Create testing data. Use different random seed to make it different
// from training data.
var testData = mlContext.Data.LoadFromEnumerable(
GenerateRandomDataPoints(5, seed: 123));
// Run the model on test data set.
var transformedTestData = model.Transform(testData);
// Convert IDataView object to a list.
var predictions = mlContext.Data.CreateEnumerable<Prediction>(
transformedTestData, reuseRowObject: false).ToList();
// Look at 5 predictions for the Label, side by side with the actual
// Label for comparison.
foreach (var p in predictions)
Console.WriteLine($"Label: {p.Label:F3}, Prediction: {p.Score:F3}");
// Expected output:
// Label: 0.985, Prediction: 1.109
// Label: 0.155, Prediction: 0.171
// Label: 0.515, Prediction: 0.400
// Label: 0.566, Prediction: 0.417
// Label: 0.096, Prediction: 0.172
// Evaluate the overall metrics
var metrics = mlContext.Regression.Evaluate(transformedTestData);
PrintMetrics(metrics);
// Expected output:
// Mean Absolute Error: 0.07
// Mean Squared Error: 0.01
// Root Mean Squared Error: 0.08
// RSquared: 0.93 (closer to 1 is better. The worst case is 0)
}
private static IEnumerable<DataPoint> GenerateRandomDataPoints(int count,
int seed = 0)
{
var random = new Random(seed);
for (int i = 0; i < count; i++)
{
float label = (float)random.NextDouble();
yield return new DataPoint
{
Label = label,
// Create random features that are correlated with the label.
Features = Enumerable.Repeat(label, 50).Select(
x => x + (float)random.NextDouble()).ToArray()
};
}
}
// Example with label and 50 feature values. A data set is a collection of
// such examples.
private class DataPoint
{
public float Label { get; set; }
[VectorType(50)]
public float[] Features { get; set; }
}
// Class used to capture predictions.
private class Prediction
{
// Original label.
public float Label { get; set; }
// Predicted score from the trainer.
public float Score { get; set; }
}
// Print some evaluation metrics to regression problems.
private static void PrintMetrics(RegressionMetrics metrics)
{
Console.WriteLine("Mean Absolute Error: " + metrics.MeanAbsoluteError);
Console.WriteLine("Mean Squared Error: " + metrics.MeanSquaredError);
Console.WriteLine(
"Root Mean Squared Error: " + metrics.RootMeanSquaredError);
Console.WriteLine("RSquared: " + metrics.RSquared);
}
}
}