二元逻辑回归可用于向量的概率预测,是一种分类算法。迭代方式可选择最小二乘法或梯度下降。
迭代之后会得到每个特征的系数。
公式(对于有N个特征的向量,其中w[i]为权):
f(x) = 1/(1+ e^[-(w0+w1*x1+w2*x2+...+wn*xn)])
例如有两个特征w1和w2(最小二乘后可得到,以及w0),即可使用公式来计算,在x1和x2的条件下,概率为多少。
实现代码 (C# with accord.net):
public class LogisticRegressionDemo
{
public static void Execute()
{
double[][] input =
{
new double[] { 55, 0 },
new double[] { 28, 0 },
new double[] { 65, 1 },
new double[] { 46, 0 },
new double[] { 86, 1 },
new double[] { 56, 1 },
new double[] { 85, 0 },
new double[] { 33, 0 },
new double[] { 21, 1 },
new double[] { 42, 1 },
};
double[] output =
{
0, 0, 0, 1, 1, 1, 0, 0, 0, 1
};
LogisticRegression regression = new LogisticRegression(2);
var trainer = new IterativeReweightedLeastSquares(regression);
double delta = 0;
do
{
// Perform an iteration
delta = trainer.Run(input, output);
} while (delta > 0.001);
var b1 = regression.Coefficients[1];
var b2 = regression.Coefficients[2];
var b0 = regression.Intercept;
var func = new Func<double, double, double>((x1, x2) =>
{
var result = 1 / (1 + Math.Exp(-b0 - b1 * x1 - b2 * x2));
return result;
});
var age = 79;
var smoking = 0;
var r = func(age, smoking);
Console.WriteLine("input x [age:{0}, smoking:{1}] is {2}", age, smoking, r);
}
}
static void Main(string[] args)
{
LogisticRegressionDemo.Execute();
Console.ReadLine();
}
本例使用了accord.net framework ,是不错的.NET机器学习算法学习库。