| #------------------------------------------------------------- |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| #------------------------------------------------------------- |
| |
| # 2013-10-08: THIS IS THE ATTEMPT TO IMPLEMENT HIDDEN STATE AS "HIDDEN REPORTS" |
| # THE FIRST TERMS IN THE REPORTS MATRIX ARE THE HIDDEN REPORTS, THE LAST ARE THE KNOWN REPORTS |
| # |
| # THIS VERSION IS WITH "TRADITIONAL" REGRESSIONS |
| # |
| |
| # hadoop jar SystemDS.jar -f test/scripts/applications/impute/wfundInputGenerator.dml -exec singlenode |
| # -args |
| # test/scripts/applications/impute/initial_reports |
| # test/scripts/applications/impute/initial_reports_preprocessed |
| # test/scripts/applications/impute/CReps |
| # test/scripts/applications/impute/RegresValueMap |
| # test/scripts/applications/impute/RegresFactorDefault |
| # test/scripts/applications/impute/RegresParamMap |
| # test/scripts/applications/impute/RegresCoeffDefault |
| # test/scripts/applications/impute/RegresScaleMult |
| |
| is_GROUP_4_ENABLED = 1; # = 1 or 0 |
| num_known_terms = 6; # 20; # The number of known term reports, feel free to change |
| num_predicted_terms = 1; # The number of predicted term reports, feel free to change |
| |
| num_terms = 2 * num_known_terms + num_predicted_terms; |
| num_attrs = 19; |
| |
| # Indicator matrix for the "known" values that should not be matched to hidden reports: |
| disabled_known_values = matrix (0.0, rows = num_attrs, cols = num_known_terms); |
| disabled_known_values [4, 3] = 1.0; |
| disabled_known_values [5, 3] = 1.0; |
| disabled_known_values [6, 3] = 1.0; |
| disabled_known_values [7, 3] = 1.0; |
| |
| initial_reports_unprocessed = read ($1); |
| initial_reports = matrix (0.0, rows = num_attrs, cols = num_terms); |
| initial_reports [, 1:num_known_terms] = |
| initial_reports_unprocessed [, 1:num_known_terms]; |
| initial_reports [, (num_known_terms + num_predicted_terms + 1):num_terms] = |
| initial_reports_unprocessed [, 1:num_known_terms]; |
| |
| num_frees_per_term = 13; |
| if (is_GROUP_4_ENABLED == 1) { |
| num_frees_per_term = 15; |
| } |
| |
| num_frees = (num_known_terms + num_predicted_terms) * num_frees_per_term; |
| |
| zero = matrix (0.0, rows = 1, cols = 1); |
| |
| # --------------------------------------------------------- |
| # GENERATE AN AFFINE MAP FROM FREE VARIABLES TO THE REPORTS |
| # AFFINE MAP = LINEAR MAP + INITIAL (DEFAULT) REPORTS |
| # All free variables are mapped to the "HIDDEN" reports |
| # --------------------------------------------------------- |
| |
| CReps = matrix (0.0, rows = (num_terms * num_attrs), cols = num_frees); |
| |
| for (t in 1:(num_known_terms + num_predicted_terms)) |
| { |
| dt = (t-1) * num_attrs; |
| df = (t-1) * num_frees_per_term; |
| # constraint that row1 = row2 + row3 + row4 + row5 + row6 + row7 |
| # translated to free vars: row1 = free1 + free2 + free3 + free4 + free5 + free6 |
| CReps [dt + 1, df + 1] = 1.0 + zero; |
| CReps [dt + 1, df + 2] = 1.0 + zero; |
| CReps [dt + 1, df + 3] = 1.0 + zero; |
| CReps [dt + 1, df + 4] = 1.0 + zero; |
| CReps [dt + 1, df + 5] = 1.0 + zero; |
| CReps [dt + 1, df + 6] = 1.0 + zero; |
| CReps [dt + 2, df + 1] = 1.0 + zero; |
| CReps [dt + 3, df + 2] = 1.0 + zero; |
| CReps [dt + 4, df + 3] = 1.0 + zero; |
| CReps [dt + 5, df + 4] = 1.0 + zero; |
| CReps [dt + 6, df + 5] = 1.0 + zero; |
| CReps [dt + 7, df + 6] = 1.0 + zero; |
| |
| # row 8 is free variable not appearing in any non-free variable |
| CReps [dt + 8, df + 7] = 1.0 + zero; |
| |
| # constraint that row9 = row10 + row11 + row12 + row13 + row14 + row15 |
| # translated to free vars: row9 = free8 + free9 + free10 + free11 + free12 + free13 |
| CReps [dt + 9, df + 8] = 1.0 + zero; |
| CReps [dt + 9, df + 9] = 1.0 + zero; |
| CReps [dt + 9, df + 10] = 1.0 + zero; |
| CReps [dt + 9, df + 11] = 1.0 + zero; |
| CReps [dt + 9, df + 12] = 1.0 + zero; |
| CReps [dt + 9, df + 13] = 1.0 + zero; |
| CReps [dt + 10, df + 8] = 1.0 + zero; |
| CReps [dt + 11, df + 9] = 1.0 + zero; |
| CReps [dt + 12, df + 10] = 1.0 + zero; |
| CReps [dt + 13, df + 11] = 1.0 + zero; |
| CReps [dt + 14, df + 12] = 1.0 + zero; |
| CReps [dt + 15, df + 13] = 1.0 + zero; |
| |
| # constraint that row16 = row14 + row15 |
| # translated to free vars: row16 = free14 + free15 |
| if (is_GROUP_4_ENABLED == 1) { |
| CReps [dt + 16, df + 14] = 1.0 + zero; |
| CReps [dt + 16, df + 15] = 1.0 + zero; |
| CReps [dt + 17, df + 14] = 1.0 + zero; |
| CReps [dt + 18, df + 15] = 1.0 + zero; |
| } |
| |
| # constraint that row19 = total cost (all free variables) |
| # translated to free vars: row19 = all free variables |
| CReps [dt + 19, df + 1] = 1.0 + zero; |
| CReps [dt + 19, df + 2] = 1.0 + zero; |
| CReps [dt + 19, df + 3] = 1.0 + zero; |
| CReps [dt + 19, df + 4] = 1.0 + zero; |
| CReps [dt + 19, df + 5] = 1.0 + zero; |
| CReps [dt + 19, df + 6] = 1.0 + zero; |
| CReps [dt + 19, df + 7] = 1.0 + zero; |
| CReps [dt + 19, df + 8] = 1.0 + zero; |
| CReps [dt + 19, df + 9] = 1.0 + zero; |
| CReps [dt + 19, df + 10] = 1.0 + zero; |
| CReps [dt + 19, df + 11] = 1.0 + zero; |
| CReps [dt + 19, df + 12] = 1.0 + zero; |
| CReps [dt + 19, df + 13] = 1.0 + zero; |
| if (is_GROUP_4_ENABLED == 1) { |
| CReps [dt + 19, df + 14] = 1.0 + zero; |
| CReps [dt + 19, df + 15] = 1.0 + zero; |
| } |
| } |
| |
| |
| # --------------------------------------------------------- |
| # GENERATE AN AFFINE MAP FROM REPORTS TO REGRESSION FACTORS |
| # AFFINE MAP = LINEAR MAP + A VECTOR OF DEFAULTS |
| # --------------------------------------------------------- |
| |
| # We have three types of regressions: |
| # 1. For "hidden" reports: |
| # x[t] ~ aggregate[t], x[t-1], (x[t-1] - x[t-2]) |
| # 2. For "observed" reports: |
| # y[t] ~ x[t] (with coefficient 1) |
| # 3. For some parameters: the regularization equations. |
| # All regressions follow the 4-factor pattern. |
| num_factors = 4; |
| |
| # We have one regression equation per time-term for each attribute, |
| # plus a few "special" regularization regression equations: |
| num_regularization_regs = 12; |
| if (is_GROUP_4_ENABLED == 1) { |
| num_regularization_regs = 16; |
| } |
| |
| num_reg_eqs = num_terms * num_attrs + num_regularization_regs; |
| |
| RegresValueMap = matrix (0.0, rows = (num_reg_eqs * num_factors), cols = (num_terms * num_attrs)); |
| RegresFactorDefault = matrix (0.0, rows = (num_reg_eqs * num_factors), cols = 1); |
| |
| # All regression equations for the same attribute share the same parameters, regardless |
| # of the term; some parameters are shared across multiple attributes, (those attributes |
| # whose behavior is believed to be similar) as specified in the table below: |
| |
| num_params = 28; |
| if (is_GROUP_4_ENABLED == 1) { |
| num_params = 35; |
| } |
| |
| # Factors: -self[t] total[t] self[t-1] self[t-1]- |
| # self[t-2] |
| # PARAMS: |
| # Group 1: 1.0 prm#01 prm#08 prm#09 Row #01 = free#01 + ... + free#06 |
| # Group 1: " prm#02 prm#10 prm#11 Row #02 = free#01 |
| # Group 1: " prm#03 " " Row #03 = free#02 |
| # Group 1: " prm#04 " " Row #04 = free#03 |
| # Group 1: " prm#05 " " Row #05 = free#04 |
| # Group 1: " prm#06 " " Row #06 = free#05 |
| # Group 1: " prm#07 " " Row #07 = free#06 |
| # -------------------------------------------------------------------- |
| # Group 2: 1.0 prm#12 prm#13 prm#14 Row #08 = free#07 |
| # -------------------------------------------------------------------- |
| # Group 3: 1.0 prm#15 prm#22 prm#23 Row #09 = free#08 + ... + free#13 |
| # Group 3: " prm#16 prm#24 prm#25 Row #10 = free#08 |
| # Group 3: " prm#17 " " Row #11 = free#09 |
| # Group 3: " prm#18 " " Row #12 = free#10 |
| # Group 3: " prm#19 " " Row #13 = free#11 |
| # Group 3: " prm#20 " " Row #14 = free#12 |
| # Group 3: " prm#21 " " Row #15 = free#13 |
| # -------------------------------------------------------------------- |
| # GROUP-4 ZEROS: FIVE PARAMETERS REVOKED |
| # Group 4: 1.0 prm#29 prm#32 prm#33 Row #16 = free#14 + free#15 |
| # Group 4: " prm#30 prm#34 prm#35 Row #17 = free#14 |
| # Group 4: " prm#31 " " Row #18 = free#15 |
| # -------------------------------------------------------------------- |
| # Group 5: 1.0 prm#26 prm#27 prm#28 Row #19 = free#01 + ... + free#15 |
| # |
| # (The aggregates in Groups 1..4 regress on the total cost in Group 5; |
| # the total cost in Group 5 regresses on the intercept.) |
| |
| # THE LAST REGULARIZATION "REGRESSION" EQUATIONS: |
| # Factors: 1.0 -1.0 0.0 0.0 |
| # PARAMS: |
| # prm#27 1.0 0.0 0.0 |
| # prm#28 0.0 0.0 0.0 |
| # prm#08 0.0 0.0 0.0 |
| # prm#09 0.0 0.0 0.0 |
| # prm#10 0.0 0.0 0.0 |
| # prm#11 0.0 0.0 0.0 |
| # prm#13 0.0 0.0 0.0 |
| # prm#14 0.0 0.0 0.0 |
| # prm#22 0.0 0.0 0.0 |
| # prm#23 0.0 0.0 0.0 |
| # prm#24 0.0 0.0 0.0 |
| # prm#25 0.0 0.0 0.0 |
| # prm#32 0.0 0.0 0.0 # GROUP-4 ZEROS: |
| # prm#33 0.0 0.0 0.0 # THESE EQUATIONS |
| # prm#34 0.0 0.0 0.0 # USE REVOKED PARAMETERS |
| # prm#35 0.0 0.0 0.0 # AND DO NOT APPEAR |
| |
| |
| # -------------------------------------------------------------- |
| # FIRST, AN AFFINE MAP FROM HIDDEN REPORTS TO REGRESSION FACTORS |
| # -------------------------------------------------------------- |
| |
| for (t in 1 : (num_known_terms + num_predicted_terms)) |
| { |
| for (i in 1 : num_attrs) |
| { |
| reg_index = ((t-1) * num_attrs - 1 + i) * num_factors; |
| |
| if (i < 19) |
| { |
| agg_i = 19; |
| if (i >= 2 & 1 <= 7) {agg_i = 1;} |
| if (i >= 10 & 1 <= 15) {agg_i = 9;} |
| if (i >= 17 & 1 <= 18) {agg_i = 16;} |
| |
| RegresValueMap [reg_index + 1, (t-1) * num_attrs + i] = -1.0 + zero; # 1st factor: -x[t] |
| RegresValueMap [reg_index + 2, (t-1) * num_attrs + agg_i] = 1.0 + zero; # 2nd factor: aggregate[t] |
| if (t == 1) { |
| RegresValueMap [reg_index + 3, i] = 1.0 + zero; # For t = 1 the 3rd factor is x[t] = x[1] |
| } else { |
| RegresValueMap [reg_index + 3, (t-2) * num_attrs + i] = 1.0 + zero; # 3rd factor: x[t-1] |
| } |
| if (t >= 3) { |
| RegresValueMap [reg_index + 4, (t-2) * num_attrs + i] = 1.0 + zero; # 4th factor is |
| RegresValueMap [reg_index + 4, (t-3) * num_attrs + i] = -1.0 + zero; # x[t-1] - x[t-2] |
| } |
| } |
| |
| # Regression for the TOTAL: |
| |
| if (i == 19) |
| { |
| if (t >= 2) { |
| RegresValueMap [reg_index + 1, (t-1) * num_attrs + 19] = -1.0 + zero; # 1st factor: -x[t] |
| RegresFactorDefault [reg_index + 2, 1] = 1.0 + zero; # 2nd factor: Intercept |
| RegresValueMap [reg_index + 3, (t-2) * num_attrs + 19] = 1.0 + zero; # 3rd factor: x[t-1] |
| } |
| if (t >= 3) { |
| RegresValueMap [reg_index + 4, (t-2) * num_attrs + 19] = 1.0 + zero; # 4th factor is |
| RegresValueMap [reg_index + 4, (t-3) * num_attrs + 19] = -1.0 + zero; # x[t-1] - x[t-2] |
| } |
| } |
| } |
| } |
| |
| # ----------------------------------------------------------------- |
| # SECOND, AN AFFINE MAP FROM OBSERVED REPORTS TO REGRESSION FACTORS |
| # ----------------------------------------------------------------- |
| |
| for (t in (num_known_terms + num_predicted_terms + 1) : num_terms) |
| { |
| t2 = t - (num_known_terms + num_predicted_terms); |
| for (i in 1 : num_attrs) { |
| reg_index = ((t-1) * num_attrs - 1 + i) * num_factors; |
| RegresValueMap [reg_index + 1, (t - 1) * num_attrs + i] = -1.0 + zero; # 1st factor: -y[t] |
| RegresValueMap [reg_index + 2, (t2 - 1) * num_attrs + i] = 1.0 + zero; # 2nd factor: x[t] |
| } |
| } |
| |
| # ----------------------------------------------------- |
| # THIRD, AN AFFINE MAP FOR REGULARIZATION "REGRESSIONS" |
| # ----------------------------------------------------- |
| |
| reg_index = num_terms * num_attrs * num_factors; |
| for (i in 1:num_regularization_regs) |
| { |
| RegresFactorDefault [reg_index + 1, 1] = 1.0 + zero; |
| RegresFactorDefault [reg_index + 2, 1] = -1.0 + zero; |
| reg_index = reg_index + num_factors; |
| } |
| |
| |
| # ---------------------------------------------------------- |
| # GENERATE AN AFFINE MAP FROM PARAMETERS TO THE COEFFICIENTS |
| # AT REGRESSION FACTORS: A LINEAR MAP + A VECTOR OF DEFAULTS |
| # ---------------------------------------------------------- |
| |
| RegresParamMap = matrix (0.0, rows = (num_reg_eqs * num_factors), cols = num_params); |
| RegresCoeffDefault = matrix (0.0, rows = (num_reg_eqs * num_factors), cols = 1); |
| |
| # ----------------------------------------------------------- |
| # FIRST, AN AFFINE MAP THAT COVERS HIDDEN REPORTS REGRESSIONS |
| # ----------------------------------------------------------- |
| |
| for (t in 1 : (num_known_terms + num_predicted_terms)) { |
| # Group 1 attributes: |
| reg_index = ((t-1) * num_attrs - 1 + 1) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresParamMap [reg_index + 2, 1] = 1.0 + zero; # Param #01 |
| RegresParamMap [reg_index + 3, 8] = 1.0 + zero; # Param #08 |
| RegresParamMap [reg_index + 4, 9] = 1.0 + zero; # Param #09 |
| for (i in 2 : 7) { |
| reg_index = ((t-1) * num_attrs - 1 + i) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresParamMap [reg_index + 2, i] = 1.0 + zero; # Param #02-#07 |
| RegresParamMap [reg_index + 3, 10] = 1.0 + zero; # Param #10 |
| RegresParamMap [reg_index + 4, 11] = 1.0 + zero; # Param #11 |
| } |
| # Group 2 attribute: |
| reg_index = ((t-1) * num_attrs - 1 + 8) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresParamMap [reg_index + 2, 12] = 1.0 + zero; # Param #12 |
| RegresParamMap [reg_index + 3, 13] = 1.0 + zero; # Param #13 |
| RegresParamMap [reg_index + 4, 14] = 1.0 + zero; # Param #14 |
| # Group 3 attributes: |
| reg_index = ((t-1) * num_attrs - 1 + 9) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresParamMap [reg_index + 2, 15] = 1.0 + zero; # Param #17 |
| RegresParamMap [reg_index + 3, 22] = 1.0 + zero; # Param #22 |
| RegresParamMap [reg_index + 4, 23] = 1.0 + zero; # Param #23 |
| for (i in 10 : 15) { |
| reg_index = ((t-1) * num_attrs - 1 + i) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresParamMap [reg_index + 2, 6 + i] = 1.0 + zero; # Param #16-#21 |
| RegresParamMap [reg_index + 3, 24] = 1.0 + zero; # Param #24 |
| RegresParamMap [reg_index + 4, 25] = 1.0 + zero; # Param #25 |
| } |
| |
| # Group 4 attributes: |
| if (is_GROUP_4_ENABLED == 1) { |
| reg_index = ((t-1) * num_attrs - 1 + 16) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresParamMap [reg_index + 2, 29] = 1.0 + zero; # Param #29 |
| RegresParamMap [reg_index + 3, 32] = 1.0 + zero; # Param #32 |
| RegresParamMap [reg_index + 4, 33] = 1.0 + zero; # Param #33 |
| for (i in 17 : 18) { |
| reg_index = ((t-1) * num_attrs - 1 + i) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresParamMap [reg_index + 2, 13 + i] = 1.0 + zero; # Param #30-#31 |
| RegresParamMap [reg_index + 3, 34] = 1.0 + zero; # Param #34 |
| RegresParamMap [reg_index + 4, 35] = 1.0 + zero; # Param #35 |
| } |
| } |
| |
| # Group 5 attribute: |
| reg_index = ((t-1) * num_attrs - 1 + 19) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresParamMap [reg_index + 2, 26] = 1.0 + zero; # Param #26 |
| RegresParamMap [reg_index + 3, 27] = 1.0 + zero; # Param #27 |
| RegresParamMap [reg_index + 4, 28] = 1.0 + zero; # Param #28 |
| } |
| |
| # -------------------------------------------------------------- |
| # SECOND, AN AFFINE MAP THAT COVERS OBSERVED REPORTS REGRESSIONS |
| # -------------------------------------------------------------- |
| |
| for (t in (num_known_terms + num_predicted_terms + 1) : num_terms) |
| { |
| for (i in 1 : num_attrs) { |
| if (as.scalar (disabled_known_values [i, t - (num_known_terms + num_predicted_terms)]) == 0.0) |
| { |
| reg_index = ((t-1) * num_attrs - 1 + i) * num_factors; |
| RegresCoeffDefault [reg_index + 1, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| RegresCoeffDefault [reg_index + 2, 1] = 1.0 + zero; # Default coefficient = 1.0 |
| } |
| } |
| } |
| |
| # ------------------------------------------------------------- |
| # THIRD, AN AFFINE MAP THAT COVERS REGULARIZATION "REGRESSIONS" |
| # ------------------------------------------------------------- |
| |
| reg_index = num_terms * num_attrs * num_factors; |
| RegresParamMap [reg_index + 1, 27] = 1.0 + zero; # Param #27 |
| RegresCoeffDefault [reg_index + 2, 1] = 1.0 + zero; |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 28] = 1.0 + zero; # Param #28 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 08] = 1.0 + zero; # Param #08 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 09] = 1.0 + zero; # Param #09 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 10] = 1.0 + zero; # Param #10 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 11] = 1.0 + zero; # Param #11 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 13] = 1.0 + zero; # Param #13 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 14] = 1.0 + zero; # Param #14 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 22] = 1.0 + zero; # Param #22 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 23] = 1.0 + zero; # Param #23 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 24] = 1.0 + zero; # Param #24 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 25] = 1.0 + zero; # Param #25 |
| |
| if (is_GROUP_4_ENABLED == 1) { |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 32] = 1.0 + zero; # Param #32 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 33] = 1.0 + zero; # Param #33 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 34] = 1.0 + zero; # Param #34 |
| reg_index = reg_index + num_factors; |
| RegresParamMap [reg_index + 1, 35] = 1.0 + zero; # Param #35 |
| } |
| |
| # ---------------------------------------------------------- |
| # GENERATE A VECTOR OF SCALE MULTIPLIERS, ONE PER REGRESSION |
| # ---------------------------------------------------------- |
| |
| RegresScaleMult = matrix (1.0, rows = num_reg_eqs, cols = 1); |
| |
| global_weight = 0.5 + zero; |
| |
| attribute_size = rowMeans (abs (initial_reports [, 1:num_known_terms])); |
| max_attr_size = max (attribute_size); |
| |
| for (t in 1 : num_terms) { |
| for (i in 1 : num_attrs) { |
| regeqn = (t-1) * num_attrs + i; |
| scale_down = sqrt (attribute_size [i, 1] / max_attr_size) * 0.999 + 0.001; |
| acceptable_drift = scale_down * max_attr_size * 0.001; |
| RegresScaleMult [regeqn, 1] = global_weight / (acceptable_drift^2); |
| } |
| } |
| |
| for (i in 1 : num_regularization_regs) { |
| regeqn = num_terms * num_attrs + i; |
| acceptable_drift = 0.01; |
| RegresScaleMult [regeqn, 1] = global_weight / (acceptable_drift^2); |
| } |
| |
| # -------------------------------- |
| # WRITE OUT ALL GENERATED MATRICES |
| # -------------------------------- |
| |
| write (initial_reports, $2, format="text"); |
| write (CReps, $3, format="text"); |
| write (RegresValueMap, $4, format="text"); |
| write (RegresFactorDefault,$5, format="text"); |
| write (RegresParamMap, $6, format="text"); |
| write (RegresCoeffDefault, $7, format="text"); |
| write (RegresScaleMult, $8, format="text"); |