Beispiel #1
0
        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();
        }
Beispiel #2
0
        private double GetLeafSplitGain(BinInfo info)
        {
            var sumGradients    = info.SumGradients;
            var sumHessians     = info.SumHessians;
            var absSumGradients = Math.Abs(sumGradients);

            return((absSumGradients * absSumGradients) / (sumHessians));
        }
Beispiel #3
0
 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;
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 private void FindBestCategoricalSplit(BinInfo parent, double parentInformation, BinInfo[] bins, SplitInfo split,
                                       bool doesDefaultExist, GbmAlgorithmSettings algorithmSettings)
 {
     throw new NotImplementedException();
 }
Beispiel #6
0
 private void ScanFromLeft(BinInfo parentT, double parentTGain, BinInfo[] binsT, SplitInfo split, bool doesDefaultExist, GbmAlgorithmSettings algorithmSettings)
 {
     throw new NotImplementedException();
 }