public GbmTree Train(double[] gradients, double[] hessians) { _frame.RandomizeTrainingIndices(_algorithmSettings.RowSamplingRate); var sampledFeatures = _frame.GetRandomInputList(_algorithmSettings.ColumnSamplingRate); var sampledTrainingIndices = _frame.GetRandomTrainingIndices(); var rootBinInfo = new BinInfo(); foreach (var idx in sampledTrainingIndices) { rootBinInfo.Add(1, gradients[idx], hessians[idx]); } var tree = GbmTree.CreateEmptyTree(RootNodeIdx); var splitComputers = new Dictionary <string, SplitComputer>(); foreach (var feature in sampledFeatures) { var bin = _frame.GetBin(feature); splitComputers.Add(feature, new SplitComputer(feature, bin.NumberOfBins)); } while (true) { foreach (var feature in sampledFeatures) { } } throw new NotImplementedException(); }
private double GetLeafSplitGain(BinInfo info) { var sumGradients = info.SumGradients; var sumHessians = info.SumHessians; var absSumGradients = Math.Abs(sumGradients); return((absSumGradients * absSumGradients) / (sumHessians)); }
public BinInfoViewModel(BinInfo bi, INavigation navigation) : base(navigation) { Caption = bi.Caption; Description = bi.Description; Detail = bi.Detail; Value1 = bi.Value1; Value2 = bi.Value2; value3 = bi.Value3; ImageURL = bi.ImageURL; }
public SplitInfo() { Feature = String.Empty; IsNumerical = false; IsNull = true; IntegerThreshold = -1; LeftInfoTraining = new BinInfo(); RightInfoTraining = new BinInfo(); LeftCategoryIndices = null; LeftPrediction = Double.NaN; RightPrediction = Double.NaN; Gain = Double.MinValue; DefaultOnLeft = true; DoesDefaultExist = false; }
private void FindBestCategoricalSplit(BinInfo parent, double parentInformation, BinInfo[] bins, SplitInfo split, bool doesDefaultExist, GbmAlgorithmSettings algorithmSettings) { throw new NotImplementedException(); }
private void ScanFromLeft(BinInfo parentT, double parentTGain, BinInfo[] binsT, SplitInfo split, bool doesDefaultExist, GbmAlgorithmSettings algorithmSettings) { throw new NotImplementedException(); }