http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__svm.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__svm.html b/docs/latest/group__grp__svm.html index ffbd6fe..f330134 100644 --- a/docs/latest/group__grp__svm.html +++ b/docs/latest/group__grp__svm.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -115,6 +115,8 @@ $(document).ready(function(){initNavTree('group__grp__svm.html','');}); <li class="level1"> <a href="#svm_regression">Regression Function</a> </li> <li class="level1"> +<a href="#novelty_detection">Novelty Detection</a> </li> +<li class="level1"> <a href="#kernel_params">Kernel Parameters</a> </li> <li class="level1"> <a href="#parameters">Other Parameters</a> </li> @@ -155,7 +157,7 @@ svm_classification( <p class="enddd"></p> </dd> <dt>independent_varname </dt> -<dd><p class="startdd">TEXT. Expression list to evaluate for the independent variables. An intercept variable is not assumed. It is common to provide an explicit intercept term by including a single constant <code>1</code> term in the independent variable list. Expression should be able to be cast into DOUBLE PRECISION []. </p> +<dd><p class="startdd">TEXT. Expression list to evaluate for the independent variables. An intercept variable should not be included as part of this expression. See 'fit_intercept' in the kernel params for info on intercepts. Please note that expression should be able to be cast to DOUBLE PRECISION[].</p> <p class="enddd"></p> </dd> <dt>kernel_func (optional) </dt> @@ -241,57 +243,56 @@ svm_regression(source_table, params, verbose ) -</pre> <b>Arguments</b> </dd></dl> -<p>Specifications for regression are largely the same as for classification. In the model table, there is no dependent variable mapping. The following arguments have specifications which differ from svm_classification:</p> -<dl class="arglist"> +</pre></dd></dl> +<p><b>Arguments</b> </p> +<p>Specifications for regression are largely the same as for classification. In the model table, there is no dependent variable mapping. The following arguments have specifications which differ from svm_classification: </p><dl class="arglist"> <dt>dependent_varname </dt> -<dd><p class="startdd">TEXT. Name of the dependent variable column. For regression, this column can contain only values or expressions that can be cast to DOUBLE PRECISION. Otherwise, an error will be thrown. </p> -<p class="enddd"></p> -</dd> +<dd>TEXT. Name of the dependent variable column. For regression, this column can contain only values or expressions that can be cast to DOUBLE PRECISION. Otherwise, an error will be thrown. </dd> <dt>params (optional) </dt> <dd>TEXT, default: NULL. The parameters <em>epsilon</em> and <em>eps_table</em> are only meaningful for regression. See description below for more details. </dd> </dl> +<p><a class="anchor" id="novelty_detection"></a></p><dl class="section user"><dt>Novelty Detection Training Function</dt><dd>The novelty detection function is a one-class SVM classifier, and has the following format: <pre class="syntax"> +svm_one_class( + source_table, + model_table, + independent_varname, + kernel_func, + kernel_params, + grouping_col, + params, + verbose + ) +</pre> <b>Arguments</b> </dd></dl> +<p>Specifications for novelty detection are largely the same as for classification, except the dependent variable name is not specified. The model table is the same as that for classification.</p> <p><a class="anchor" id="kernel_params"></a></p><dl class="section user"><dt>Kernel Parameters</dt><dd>Kernel parameters are supplied in a string containing a comma-delimited list of name-value pairs. All of these named parameters are optional, and their order does not matter. You must use the format "<param_name> = <value>" to specify the value of a parameter, otherwise the parameter is ignored.</dd></dl> -<p>When the <a class="el" href="svm_8sql__in.html#a8da862a62df18a51dc88eba9c60b5638">svm_classification()</a> <em>kernel_func</em> argument value is 'gaussian', the <em>kernel_params</em> argument is a string containing name-value pairs with the following format. (Line breaks are inserted for readability.) </p><pre class="syntax"> - 'gamma = <value>, - n_components = <value>, - random_state = <value>' -</pre><p> <b>Parameters</b> </p><dl class="arglist"> -<dt>gamma </dt> -<dd><p class="startdd">Default: 1/num_features. The parameter <img class="formulaInl" alt="$\gamma$" src="form_542.png"/> in the Radius Basis Function kernel, i.e., <img class="formulaInl" alt="$\exp(-\gamma||x-y||^2)$" src="form_541.png"/>. Choosing a proper value for <em>gamma</em> is critical to the performance of kernel machine; e.g., while a large <em>gamma</em> tends to cause overfitting, a small <em>gamma</em> will make the model too constrained to capture the complexity of the data. </p> -<p class="enddd"></p> -</dd> +<dl class="arglist"> +<dt><em>Parameters common to all kernels</em></dt> +<dd></dd> +<dt>fit_intercept </dt> +<dd>Default: True. The parameter <em>fit_intercept</em> is an indicator to add an intercept to the <em>independent_varname</em> array expression. The intercept is added to the end of the feature list - thus the last element of the coefficient list is the intercept. </dd> <dt>n_components </dt> -<dd><p class="startdd">Default: 2*num_features. The dimensionality of the transformed feature space. A larger value lowers the variance of the estimate of the kernel but requires more memory and takes longer to train.</p> -<p class="enddd"></p> -</dd> +<dd>Default: 2*num_features. The dimensionality of the transformed feature space. A larger value lowers the variance of the estimate of the kernel but requires more memory and takes longer to train. </dd> <dt>random_state </dt> -<dd>Default: 1. Seed used by the random number generator. </dd> +<dd>Default: 1. Seed used by a random number generator. </dd> </dl> -<p>When the <a class="el" href="svm_8sql__in.html#a8da862a62df18a51dc88eba9c60b5638">svm_classification()</a> <em>kernel_func</em> argument value is 'polynomialâ, the <em>kernel_params</em> argument is a string containing name-value pairs with the following format. (Line breaks are inserted for readability.) </p><pre class="syntax"> - 'coef0 = <value>, - degree = <value>, - n_components = <value>, - random_state = <value>' -</pre><p> <b>Parameters</b> </p><dl class="arglist"> +<dl class="arglist"> +<dt><em>Parameters for 'gaussian' kernel</em></dt> +<dd></dd> +<dt>gamma </dt> +<dd>Default: 1/num_features. The parameter <img class="formulaInl" alt="$\gamma$" src="form_517.png"/> in the Radius Basis Function kernel, i.e., <img class="formulaInl" alt="$\exp(-\gamma||x-y||^2)$" src="form_518.png"/>. Choosing a proper value for <em>gamma</em> is critical to the performance of kernel machine; e.g., while a large <em>gamma</em> tends to cause overfitting, a small <em>gamma</em> will make the model too constrained to capture the complexity of the data. </dd> +</dl> +<dl class="arglist"> +<dt><em>Parameters for 'polynomial' kernel</em></dt> +<dd></dd> <dt>coef0 </dt> -<dd><p class="startdd">Default: 1.0. The independent term <img class="formulaInl" alt="$q$" src="form_517.png"/> in <img class="formulaInl" alt="$ (\langle x,y\rangle + q)^r $" src="form_543.png"/>. Must be larger than or equal to 0. When it is 0, the polynomial kernel is in homogeneous form. </p> -<p class="enddd"></p> -</dd> +<dd>Default: 1.0. The independent term <img class="formulaInl" alt="$q$" src="form_519.png"/> in <img class="formulaInl" alt="$ (\langle x,y\rangle + q)^r $" src="form_520.png"/>. Must be larger than or equal to 0. When it is 0, the polynomial kernel is in homogeneous form. </dd> <dt>degree </dt> -<dd><p class="startdd">Default: 3. The parameter <img class="formulaInl" alt="$r$" src="form_544.png"/> in <img class="formulaInl" alt="$ (\langle x,y\rangle + q)^r $" src="form_543.png"/>. </p> -<p class="enddd"></p> -</dd> -<dt>n_components </dt> -<dd><p class="startdd">Default: 2*num_features. The dimensionality of the transformed feature space. A larger value lowers the variance of the estimate of kernel but requires more memory and takes longer to train.</p> -<p class="enddd"></p> -</dd> -<dt>random_state </dt> -<dd>Default: 1. Seed used by the random number generator. </dd> +<dd>Default: 3. The parameter <img class="formulaInl" alt="$r$" src="form_521.png"/> in <img class="formulaInl" alt="$ (\langle x,y\rangle + q)^r $" src="form_520.png"/>. </dd> </dl> <p><a class="anchor" id="parameters"></a></p><dl class="section user"><dt>Other Parameters</dt><dd>Parameters in this section are supplied in the <em>params</em> argument as a string containing a comma-delimited list of name-value pairs. All of these named parameters are optional, and their order does not matter. You must use the format "<param_name> = <value>" to specify the value of a parameter, otherwise the parameter is ignored.</dd></dl> -<p>Hyperparameter optimization can be carried out using the built-in cross validation mechanism, which is activated by assigning a value greater than 1 to the parameter <em>n_folds</em> in <em>params</em>. Please note that cross validation is not supported if grouping is used. The values of a parameter to cross validate should be provided in a list. For example, if one wanted to regularize with the L1 norm and use a lambda value from the set {0.3, 0.4, 0.5}, one might input 'lambda={0.3, 0.4, 0.5}, norm=L1, n_folds=10' in <em>params</em>. Note that the use of '{}' and '[]' are both valid here.</p> -<p>Please note that not all of the parameters below can be cross-validated. For parameters where cross validation is allowed, their default values are presented in list format; e.g., [0.01]. </p><pre class="syntax"> +<p>Hyperparameter optimization can be carried out using the built-in cross validation mechanism, which is activated by assigning a value greater than 1 to the parameter <em>n_folds</em> in <em>params</em>. Please note that cross validation is not supported if grouping is used.</p> +<p>The values of a parameter to cross validate should be provided in a list. For example, if one wanted to regularize with the L1 norm and use a lambda value from the set {0.3, 0.4, 0.5}, one might input 'lambda={0.3, 0.4, 0.5}, norm=L1, n_folds=10' in <em>params</em>. Note that the use of '{}' and '[]' are both valid here. </p><dl class="section note"><dt>Note</dt><dd>Note that not all of the parameters below can be cross-validated. For parameters where cross validation is allowed, their default values are presented in list format; e.g., [0.01].</dd></dl> +<pre class="syntax"> 'init_stepsize = <value>, decay_factor = <value>, max_iter = <value>, @@ -301,14 +302,16 @@ svm_regression(source_table, epsilon = <value>, eps_table = <value>, validation_result = <value>, - n_folds = <value>' + n_folds = <value>, + class_weight = <value>' </pre><p> <b>Parameters</b> </p><dl class="arglist"> <dt>init_stepsize </dt> -<dd><p class="startdd">Default: [0.01]. Also known as the initial learning rate. A small value is usually desirable to ensure convergence, while a large value provides more room for progress during training. Since the best value depends on the condition number of the data, in practice one often searches in an exponential grid using built-in cross validation; e.g., "init_stepsize = [1, 0.1, 0.001]". To reduce training time, it is common to run cross validation on a subsampled dataset, since this usually provides a good estimate of the condition number of the whole dataset. Then the resulting <em>init_stepsize</em> can be run on the whole dataset. </p> +<dd><p class="startdd">Default: [0.01]. Also known as the initial learning rate. A small value is usually desirable to ensure convergence, while a large value provides more room for progress during training. Since the best value depends on the condition number of the data, in practice one often searches in an exponential grid using built-in cross validation; e.g., "init_stepsize = [1, 0.1, 0.001]". To reduce training time, it is common to run cross validation on a subsampled dataset, since this usually provides a good estimate of the condition number of the whole dataset. Then the resulting <em>init_stepsize</em> can be run on the whole dataset.</p> +<p></p> <p class="enddd"></p> </dd> <dt>decay_factor </dt> -<dd><p class="startdd">Default: [0.9]. Control the learning rate schedule: 0 means constant rate; -1 means inverse scaling, i.e., stepsize = init_stepsize / iteration; > 0 means exponential decay, i.e., stepsize = init_stepsize * decay_factor^iteration. </p> +<dd><p class="startdd">Default: [0.9]. Control the learning rate schedule: 0 means constant rate; <-1 means inverse scaling, i.e., stepsize = init_stepsize / iteration; > 0 means <exponential decay, i.e., stepsize = init_stepsize * decay_factor^iteration. </p> <p class="enddd"></p> </dd> <dt>max_iter </dt> @@ -316,11 +319,11 @@ svm_regression(source_table, <p class="enddd"></p> </dd> <dt>tolerance </dt> -<dd><p class="startdd">Default: 1e-10. The criterion to end iterations. The training stops whenever the difference between the training models of two consecutive iterations is smaller than <em>tolerance</em> or the iteration number is larger than <em>max_iter</em>. </p> +<dd><p class="startdd">Default: 1e-10. The criterion to end iterations. The training stops whenever <the difference between the training models of two consecutive iterations is <smaller than <em>tolerance</em> or the iteration number is larger than <em>max_iter</em>. </p> <p class="enddd"></p> </dd> <dt>lambda </dt> -<dd><p class="startdd">Default: [0.01]. Regularization parameter. Must be positive, canât be 0. </p> +<dd><p class="startdd">Default: [0.01]. Regularization parameter. Must be non-negative. </p> <p class="enddd"></p> </dd> <dt>norm </dt> @@ -328,10 +331,10 @@ svm_regression(source_table, <p class="enddd"></p> </dd> <dt>epsilon </dt> -<dd><p class="startdd">Default: [0.01]. Determines the <img class="formulaInl" alt="$\epsilon$" src="form_520.png"/> for <img class="formulaInl" alt="$\epsilon$" src="form_520.png"/>-regression. Ignored during classification. When training the model, differences of less than <img class="formulaInl" alt="$\epsilon$" src="form_520.png"/> between estimated labels and actual labels are ignored. A larger <img class="formulaInl" alt="$\epsilon$" src="form_520.png"/> will yield a model with fewer support vectors, but will not generalize as well to future data. Generally, it has been suggested that epsilon should increase with noisier data, and decrease with the number of samples. See [5]. </p> +<dd><p class="startdd">Default: [0.01]. Determines the <img class="formulaInl" alt="$\epsilon$" src="form_522.png"/> for <img class="formulaInl" alt="$\epsilon$" src="form_522.png"/>-regression. Ignored during classification. When training the model, differences of less than <img class="formulaInl" alt="$\epsilon$" src="form_522.png"/> between estimated labels and actual labels are ignored. A larger <img class="formulaInl" alt="$\epsilon$" src="form_522.png"/> will yield a model with fewer support vectors, but will not generalize as well to future data. Generally, it has been suggested that epsilon should increase with noisier data, and decrease with the number of samples. See [5]. </p> <p class="enddd"></p> </dd> -<dt>eps_tabl </dt> +<dt>eps_table </dt> <dd><p class="startdd">Default: NULL. Name of the input table that contains values of epsilon for different groups. Ignored when <em>grouping_col</em> is NULL. Define this input table if you want different epsilon values for different groups. The table consists of a column named <em>epsilon</em> which specifies the epsilon values, and one or more columns for <em>grouping_col</em>. Extra groups are ignored, and groups not present in this table will use the epsilon value specified in parameter <em>epsilon</em>. </p> <p class="enddd"></p> </dd> @@ -340,9 +343,17 @@ svm_regression(source_table, <p class="enddd"></p> </dd> <dt>n_folds </dt> -<dd>Default: 0. Number of folds (k). Must be at least 2 to activate cross validation. If a value of k > 2 is specified, each fold is then used as a validation set once, while the other k - 1 folds form the training set. </dd> +<dd><p class="startdd">Default: 0. Number of folds (k). Must be at least 2 to activate cross validation. If a value of k > 2 is specified, each fold is then used as a validation set once, while the other k - 1 folds form the training set. </p> +<p class="enddd"></p> +</dd> +<dt>class_weight </dt> +<dd><p class="startdd">Default: 1 for classification, 'balanced' for one-class novelty detection, n/a for regression.</p> +<p>Set the weight for the positive and negative classes. If not given, all classes are set to have weight one. If class_weight = balanced, values of y are automatically adjusted as inversely proportional to class frequencies in the input data i.e. the weights are set as n_samples / (n_classes * bincount(y)).</p> +<p>Alternatively, class_weight can be a mapping, giving the weight for each class. Eg. For dependent variable values 'a' and 'b', the class_weight can be {a: 2, b: 3}. This would lead to each 'a' tuple's y value multiplied by 2 and each 'b' y value will be multiplied by 3.</p> +<p class="enddd">For regression, the class weights are always one. </p> +</dd> </dl> -<p><a class="anchor" id="predict"></a></p><dl class="section user"><dt>Prediction Function</dt><dd>The prediction function is used to estimate the conditional mean given a new predictor. It has the following syntax: <pre class="syntax"> +<p><a class="anchor" id="predict"></a></p><dl class="section user"><dt>Prediction Function</dt><dd>The prediction function is used to estimate the conditional mean given a new predictor. The same syntax is used for classification, regression and novelty detection: <pre class="syntax"> svm_predict(model_table, new_data_table, id_col_name, @@ -362,10 +373,19 @@ svm_predict(model_table, <p class="enddd"></p> </dd> <dt>output_table </dt> -<dd>TEXT. Name of the table where output predictions are written. If this table name is already in use, then an error is returned. The table contains the id_col_name column giving the 'id' for each prediction and the prediction columns for the dependent variable. </dd> +<dd>TEXT. Name of the table where output predictions are written. If this table name is already in use, then an error is returned. Table contains: <table class="output"> +<tr> +<th>id </th><td>Gives the 'id' for each prediction, corresponding to each row from the new_data_table. </td></tr> +<tr> +<th>prediction </th><td>Provides the prediction for each row in new_data_table. For regression this would be the same as decision_function. For classification, this will be one of the dependent variable values. </td></tr> +<tr> +<th>decision_function </th><td>Provides the distance between each point and the separating hyperplane. </td></tr> +</table> +</dd> </dl> <p><a class="anchor" id="example"></a></p><dl class="section user"><dt>Examples</dt><dd><ol type="1"> <li>Create an input data set. <pre class="example"> +DROP TABLE IF EXISTS houses; CREATE TABLE houses (id INT, tax INT, bedroom INT, bath FLOAT, price INT, size INT, lot INT); COPY houses FROM STDIN WITH DELIMITER '|'; @@ -387,13 +407,29 @@ COPY houses FROM STDIN WITH DELIMITER '|'; \. </pre></li> <li>Train a classification model. First, use a linear model. <pre class="example"> +DROP TABLE IF EXISTS houses_svm, houses_svm_summary; SELECT madlib.svm_classification('houses', 'houses_svm', 'price < 100000', 'ARRAY[1, tax, bath, size]' ); </pre></li> +<li>View the result for the linear classification model. <pre class="example"> +-- Set extended display on for easier reading of output +\x ON +SELECT * FROM houses_svm; +</pre> Result: <pre class="result"> +-[ RECORD 1 ]------+--------------------------------------------------------------- +coef | {0.152192069515,-0.29631947495,0.0968619000065,0.362682248051} +loss | 601.279740124 +norm_of_gradient | 1300.96615851627 +num_iterations | 100 +num_rows_processed | 15 +num_rows_skipped | 0 +dep_var_mapping | {f,t} +</pre></li> <li>Next generate a nonlinear model using a Gaussian kernel. This time we specify the initial step size and maximum number of iterations to run. As part of the kernel parameter, we choose 10 as the dimension of the space where we train SVM. A larger number will lead to a more powerful model but run the risk of overfitting. As a result, the model will be a 10 dimensional vector, instead of 4 as in the case of linear model, which we will verify when we examine the models. <pre class="example"> +DROP TABLE IF EXISTS houses_svm_gaussian, houses_svm_gaussian_summary, houses_svm_gaussian_random; SELECT madlib.svm_classification( 'houses', 'houses_svm_gaussian', 'price < 100000', @@ -404,67 +440,188 @@ SELECT madlib.svm_classification( 'houses', 'init_stepsize=1, max_iter=200' ); </pre></li> -<li>View the result for the linear model. <pre class="example"> +<li>View the results from kernel SVM for classification. <pre class="example"> -- Set extended display on for easier reading of output \x ON -SELECT * FROM houses_svm; +SELECT * FROM houses_svm_gaussian; </pre> Result: <pre class="result"> --[ RECORD 1 ]+--------------------------------------------------------------------------- -coef | [0.113989576847, -0.00226133300602, -0.0676303607996, 0.00179440841072] -loss | 9.21745071385 -norm_of_gradient | 108.171180769 -num_iterations | 100 +-[ RECORD 1 ]------+-------------------------------------------------------------------------------------------------------------------------------------------------- +coef | {0.183800813574,-0.78724997813,1.54121854068,1.24432527042,4.01230959334,1.07061097224,-4.92576349408,0.437699542875,0.3128600981,-1.63880635658} +loss | 0.998735180388 +norm_of_gradient | 0.729823950583579 +num_iterations | 196 num_rows_processed | 15 num_rows_skipped | 0 -dep_var_mapping | [False, True] +dep_var_mapping | {f,t} </pre></li> -<li>View the results from kernel SVM. <pre class="example"> +<li>The regression models have a similar format (model output not shown). First, for a linear model: <pre class="example"> +DROP TABLE IF EXISTS houses_svm_regression, houses_svm_regression_summary; +SELECT madlib.svm_regression('houses', + 'houses_svm_regression', + 'price', + 'ARRAY[1, tax, bath, size]' + ); +</pre> For a non-linear regression model using a Gaussian kernel: <pre class="example"> +DROP TABLE IF EXISTS houses_svm_gaussian_regression, houses_svm_gaussian_regression_summary, houses_svm_gaussian_regression_random; +SELECT madlib.svm_regression( 'houses', + 'houses_svm_gaussian_regression', + 'price', + 'ARRAY[1, tax, bath, size]', + 'gaussian', + 'n_components=10', + '', + 'init_stepsize=1, max_iter=200' + ); +</pre></li> +<li>Now train a non-linear one-class SVM for novelty detection, using a Gaussian kernel. Note that the dependent variable is not a parameter for one-class: <pre class="example"> +DROP TABLE IF EXISTS houses_one_class_gaussian, houses_one_class_gaussian_summary, houses_one_class_gaussian_random; +select madlib.svm_one_class('houses', + 'houses_one_class_gaussian', + 'ARRAY[1,tax,bedroom,bath,size,lot,price]', + 'gaussian', + 'gamma=0.5,n_components=55, random_state=3', + NULL, + 'max_iter=100, init_stepsize=10,lambda=10, tolerance=0' + ); +</pre></li> +<li>View the result for the Gaussian novelty detection model. <pre class="example"> -- Set extended display on for easier reading of output \x ON -SELECT * FROM houses_svm_gaussian; +SELECT * FROM houses_one_class_gaussian; </pre> Result: <pre class="result"> --[ RECORD 1 ]+--------------------------------------------------------------------------- -coef | [-2.00789985255, 2.02625531256, -1.09903715824, 2.04431020735, 3.14208435644, 0.14838741816, 2.07527256499, 3.0816372960, 0.853428649407, 3.63747384926] -loss | 0.255909866744 -norm_of_gradient | 0.0715415776655 -num_iterations | 184 -num_rows_processed | 15 -num_rows_skipped | 0 -dep_var_mapping | [False, True] +-[ RECORD 1 ]------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +coef | {redacted for brevity} +loss | 15.1053343738 +norm_of_gradient | 13.9133653663837 +num_iterations | 100 +num_rows_processed | 16 +num_rows_skipped | -1 +dep_var_mapping | {-1,1} </pre></li> -<li>Use the prediction function to evaluate the models. The predicted results are in the <em>prediction</em> column and the actual data is in the <em>target</em> column. For the linear model: <pre class="example"> +<li>Now let's look at the prediction functions. We want to predict if house price is less than $100,000. In the following examples we will use the training data set for prediction as well, which is not usual but serves to show the syntax. The predicted results are in the <em>prediction</em> column and the actual data is in the <em>target</em> column. For the linear model: <pre class="example"> +DROP TABLE IF EXISTS houses_pred; SELECT madlib.svm_predict('houses_svm', 'houses', 'id', 'houses_pred'); SELECT *, price < 100000 AS target FROM houses JOIN houses_pred USING (id) ORDER BY id; -</pre> For the Gaussian model: <pre class="example"> +</pre> Result: <pre class="result"> + id | tax | bedroom | bath | price | size | lot | prediction | decision_function | target +----+------+---------+------+--------+------+-------+------------+--------------------+-------- + 1 | 590 | 2 | 1 | 50000 | 770 | 22100 | t | 104.685894748292 | t + 2 | 1050 | 3 | 2 | 85000 | 1410 | 12000 | t | 200.592436923938 | t + 3 | 20 | 3 | 1 | 22500 | 1060 | 3500 | t | 378.765847404582 | t + 4 | 870 | 2 | 2 | 90000 | 1300 | 17500 | t | 214.034895129328 | t + 5 | 1320 | 3 | 2 | 133000 | 1500 | 30000 | t | 153.227581012028 | f + 6 | 1350 | 2 | 1 | 90500 | 820 | 25700 | f | -102.382793811158 | t + 7 | 2790 | 3 | 2.5 | 260000 | 2130 | 25000 | f | -53.8237999423388 | f + 8 | 680 | 2 | 1 | 142500 | 1170 | 22000 | t | 223.090041223192 | f + 9 | 1840 | 3 | 2 | 160000 | 1500 | 19000 | f | -0.858545961972027 | f + 10 | 3680 | 4 | 2 | 240000 | 2790 | 20000 | f | -78.226279884182 | f + 11 | 1660 | 3 | 1 | 87000 | 1030 | 17500 | f | -118.078558954948 | t + 12 | 1620 | 3 | 2 | 118600 | 1250 | 20000 | f | -26.3388234857219 | f + 13 | 3100 | 3 | 2 | 140000 | 1760 | 38000 | f | -279.923699905712 | f + 14 | 2070 | 2 | 3 | 148000 | 1550 | 14000 | f | -50.7810508979155 | f + 15 | 650 | 3 | 1.5 | 65000 | 1450 | 12000 | t | 333.579085875975 | t +</pre> Prediction using the Gaussian model: <pre class="example"> +DROP TABLE IF EXISTS houses_pred_gaussian; SELECT madlib.svm_predict('houses_svm_gaussian', 'houses', 'id', 'houses_pred_gaussian'); SELECT *, price < 100000 AS target FROM houses JOIN houses_pred_gaussian USING (id) ORDER BY id; -</pre> Result for the Gaussian model: <pre class="result"> - id | tax | bedroom | bath | price | size | lot | prediction | target -----+------+---------+------+--------+------+-------+------------+-------- - 1 | 590 | 2 | 1 | 50000 | 770 | 22100 | t | t - 2 | 1050 | 3 | 2 | 85000 | 1410 | 12000 | t | t - 3 | 20 | 3 | 1 | 22500 | 1060 | 3500 | t | t - 4 | 870 | 2 | 2 | 90000 | 1300 | 17500 | t | t - 5 | 1320 | 3 | 2 | 133000 | 1500 | 30000 | f | f - 6 | 1350 | 2 | 1 | 90500 | 820 | 25700 | t | t - 7 | 2790 | 3 | 2.5 | 260000 | 2130 | 25000 | f | f - 8 | 680 | 2 | 1 | 142500 | 1170 | 22000 | f | f - 9 | 1840 | 3 | 2 | 160000 | 1500 | 19000 | f | f - 10 | 3680 | 4 | 2 | 240000 | 2790 | 20000 | f | f - 11 | 1660 | 3 | 1 | 87000 | 1030 | 17500 | t | t - 12 | 1620 | 3 | 2 | 118600 | 1250 | 20000 | f | f - 13 | 3100 | 3 | 2 | 140000 | 1760 | 38000 | f | f - 14 | 2070 | 2 | 3 | 148000 | 1550 | 14000 | f | f - 15 | 650 | 3 | 1.5 | 65000 | 1450 | 12000 | t | t -</pre> Note the result may vary somewhat with the platform configuration you are using.</li> +</pre> This produces a more accurate result than the linear case for this small data set: <pre class="result"> + id | tax | bedroom | bath | price | size | lot | prediction | decision_function | target +----+------+---------+------+--------+------+-------+------------+-------------------+-------- + 1 | 590 | 2 | 1 | 50000 | 770 | 22100 | t | 1.00338548176312 | t + 2 | 1050 | 3 | 2 | 85000 | 1410 | 12000 | t | 1.00000000098154 | t + 3 | 20 | 3 | 1 | 22500 | 1060 | 3500 | t | 0.246566699635389 | t + 4 | 870 | 2 | 2 | 90000 | 1300 | 17500 | t | 1.0000000003367 | t + 5 | 1320 | 3 | 2 | 133000 | 1500 | 30000 | f | -1.98940593324397 | f + 6 | 1350 | 2 | 1 | 90500 | 820 | 25700 | t | 3.74336995109761 | t + 7 | 2790 | 3 | 2.5 | 260000 | 2130 | 25000 | f | -1.01574407296086 | f + 8 | 680 | 2 | 1 | 142500 | 1170 | 22000 | f | -1.0000000002071 | f + 9 | 1840 | 3 | 2 | 160000 | 1500 | 19000 | f | -3.88267069310101 | f + 10 | 3680 | 4 | 2 | 240000 | 2790 | 20000 | f | -3.44507576539002 | f + 11 | 1660 | 3 | 1 | 87000 | 1030 | 17500 | t | 2.3409866081761 | t + 12 | 1620 | 3 | 2 | 118600 | 1250 | 20000 | f | -3.51563221173085 | f + 13 | 3100 | 3 | 2 | 140000 | 1760 | 38000 | f | -1.00000000011163 | f + 14 | 2070 | 2 | 3 | 148000 | 1550 | 14000 | f | -1.87710363254055 | f + 15 | 650 | 3 | 1.5 | 65000 | 1450 | 12000 | t | 1.34334834982263 | t +</pre></li> +<li>Prediction using the linear regression model: <pre class="example"> +DROP TABLE IF EXISTS houses_regr; +SELECT madlib.svm_predict('houses_svm_regression', 'houses', 'id', 'houses_regr'); +SELECT * FROM houses JOIN houses_regr USING (id) ORDER BY id; +</pre> Result for the linear regression model: <pre class="result"> + id | tax | bedroom | bath | price | size | lot | prediction | decision_function +----+------+---------+------+--------+------+-------+------------------+------------------- + 1 | 590 | 2 | 1 | 50000 | 770 | 22100 | 55288.6992755623 | 55288.6992755623 + 2 | 1050 | 3 | 2 | 85000 | 1410 | 12000 | 99978.8137019119 | 99978.8137019119 + 3 | 20 | 3 | 1 | 22500 | 1060 | 3500 | 43157.5130381023 | 43157.5130381023 + 4 | 870 | 2 | 2 | 90000 | 1300 | 17500 | 88098.9557296729 | 88098.9557296729 + 5 | 1320 | 3 | 2 | 133000 | 1500 | 30000 | 114803.884262468 | 114803.884262468 + 6 | 1350 | 2 | 1 | 90500 | 820 | 25700 | 88899.5186193813 | 88899.5186193813 + 7 | 2790 | 3 | 2.5 | 260000 | 2130 | 25000 | 201108.397013076 | 201108.397013076 + 8 | 680 | 2 | 1 | 142500 | 1170 | 22000 | 75004.3236915733 | 75004.3236915733 + 9 | 1840 | 3 | 2 | 160000 | 1500 | 19000 | 136434.749667136 | 136434.749667136 + 10 | 3680 | 4 | 2 | 240000 | 2790 | 20000 | 264483.856987395 | 264483.856987395 + 11 | 1660 | 3 | 1 | 87000 | 1030 | 17500 | 110180.048139857 | 110180.048139857 + 12 | 1620 | 3 | 2 | 118600 | 1250 | 20000 | 117300.841695563 | 117300.841695563 + 13 | 3100 | 3 | 2 | 140000 | 1760 | 38000 | 199229.683967752 | 199229.683967752 + 14 | 2070 | 2 | 3 | 148000 | 1550 | 14000 | 147998.930271016 | 147998.930271016 + 15 | 650 | 3 | 1.5 | 65000 | 1450 | 12000 | 84936.7661235861 | 84936.7661235861 +</pre> For the non-linear Gaussian regression model (output not shown): <pre class="example"> +DROP TABLE IF EXISTS houses_gaussian_regr; +SELECT madlib.svm_predict('houses_svm_gaussian_regression', 'houses', 'id', 'houses_gaussian_regr'); +SELECT * FROM houses JOIN houses_gaussian_regr USING (id) ORDER BY id; +</pre></li> +<li>For the novelty detection using one-class, let's create a test data set using the last 3 values from the training set plus an outlier at the end (10x price): <pre class="example"> +DROP TABLE IF EXISTS houses_one_class_test; +CREATE TABLE houses_one_class_test (id INT, tax INT, bedroom INT, bath FLOAT, price INT, + size INT, lot INT); +COPY houses_one_class_test FROM STDIN WITH DELIMITER '|'; + 1 | 3100 | 3 | 2 | 140000 | 1760 | 38000 + 2 | 2070 | 2 | 3 | 148000 | 1550 | 14000 + 3 | 650 | 3 | 1.5 | 65000 | 1450 | 12000 + 4 | 650 | 3 | 1.5 | 650000 | 1450 | 12000 +\. +</pre> Now run prediction on the Gaussian one-class novelty detection model: <pre class="example"> +DROP TABLE IF EXISTS houses_once_class_pred; +SELECT madlib.svm_predict('houses_one_class_gaussian', 'houses_one_class_test', 'id', 'houses_one_class_pred'); +SELECT * FROM houses_one_class_test JOIN houses_one_class_pred USING (id) ORDER BY id; +</pre> Result showing the last row predicted to be novel: <pre class="result"> + id | tax | bedroom | bath | price | size | lot | prediction | decision_function +----+------+---------+------+--------+------+-------+------------+--------------------- + 1 | 3100 | 3 | 2 | 140000 | 1760 | 38000 | 1 | 0.111497008121437 + 2 | 2070 | 2 | 3 | 148000 | 1550 | 14000 | 1 | 0.0996021345169148 + 3 | 650 | 3 | 1.5 | 65000 | 1450 | 12000 | 1 | 0.0435064008756942 + 4 | 650 | 3 | 1.5 | 650000 | 1450 | 12000 | -1 | -0.0168967845338403 +</pre></li> +<li>Create a model for an unbalanced class-size dataset, then use the 'balanced' parameter to classify: <pre class="example"> +DROP TABLE IF EXISTS houses_svm_gaussian, houses_svm_gaussian_summary, houses_svm_gaussian_random; +SELECT madlib.svm_classification( 'houses', + 'houses_svm_gaussian', + 'price < 150000', + 'ARRAY[1, tax, bath, size]', + 'gaussian', + 'n_components=10', + '', + 'init_stepsize=1, max_iter=200, class_weight=balanced' + ); +SELECT * FROM houses_svm_gaussian; +</pre> <pre class="result"> +-[ RECORD 1 ]------+---------------------------------------------------------------------------------------------------------------------------------------------------- +coef | {-0.621843913637,2.4166374426,-1.54726833725,-1.74512599505,1.16231799548,-0.54019307285,-4.14373293694,-0.623069170717,3.59669949057,-1.005501237} +loss | 1.87657250199 +norm_of_gradient | 1.41148000266816 +num_iterations | 174 +num_rows_processed | 15 +num_rows_skipped | 0 +dep_var_mapping | {f,t} +</pre> Note that the results you get for all examples may vary with the platform you are using.</li> </ol> </dd></dl> <p><a class="anchor" id="background"></a></p><dl class="section user"><dt>Technical Background</dt><dd></dd></dl> <p>To solve linear SVM, the following objective function is minimized: </p><p class="formulaDsp"> -<img class="formulaDsp" alt="\[ \underset{w,b}{\text{Minimize }} \lambda||w||^2 + \frac{1}{n}\sum_{i=1}^n \ell(y_i,f_{w,b}(x_i)) \]" src="form_521.png"/> +<img class="formulaDsp" alt="\[ \underset{w,b}{\text{Minimize }} \lambda||w||^2 + \frac{1}{n}\sum_{i=1}^n \ell(y_i,f_{w,b}(x_i)) \]" src="form_523.png"/> </p> -<p>where <img class="formulaInl" alt="$(x_1,y_1),\ldots,(x_n,y_n)$" src="form_522.png"/> are labeled training data and <img class="formulaInl" alt="$\ell(y,f(x))$" src="form_523.png"/> is a loss function. When performing classification, <img class="formulaInl" alt="$\ell(y,f(x)) = \max(0,1-yf(x))$" src="form_524.png"/> is the <em>hinge loss</em>. For regression, the loss function <img class="formulaInl" alt="$\ell(y,f(x)) = \max(0,|y-f(x)|-\epsilon)$" src="form_525.png"/> is used.</p> -<p>If <img class="formulaInl" alt="$ f_{w,b}(x) = \langle w, x\rangle + b$" src="form_526.png"/> is linear, then the objective function is convex and incremental gradient descent (IGD, or SGD) can be applied to find a global minimum. See Feng, et al. [1] for more details.</p> +<p>where <img class="formulaInl" alt="$(x_1,y_1),\ldots,(x_n,y_n)$" src="form_524.png"/> are labeled training data and <img class="formulaInl" alt="$\ell(y,f(x))$" src="form_525.png"/> is a loss function. When performing classification, <img class="formulaInl" alt="$\ell(y,f(x)) = \max(0,1-yf(x))$" src="form_526.png"/> is the <em>hinge loss</em>. For regression, the loss function <img class="formulaInl" alt="$\ell(y,f(x)) = \max(0,|y-f(x)|-\epsilon)$" src="form_527.png"/> is used.</p> +<p>If <img class="formulaInl" alt="$ f_{w,b}(x) = \langle w, x\rangle + b$" src="form_528.png"/> is linear, then the objective function is convex and incremental gradient descent (IGD, or SGD) can be applied to find a global minimum. See Feng, et al. [1] for more details.</p> <p>To learn with Gaussian or polynomial kernels, the training data is first mapped via a <em>random feature map</em> in such a way that the usual inner product in the feature space approximates the kernel function in the input space. The linear SVM training function is then run on the resulting data. See the papers [2,3] for more information on random feature maps.</p> <p>Also, see the book [4] by Scholkopf and Smola for more details on SVMs in general.</p> <p><a class="anchor" id="literature"></a></p><dl class="section user"><dt>Literature</dt><dd></dd></dl> @@ -480,7 +637,7 @@ SELECT *, price < 100000 AS target FROM houses JOIN houses_pred_gaussian USIN <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:10 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul>
http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__text__analysis.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__text__analysis.html b/docs/latest/group__grp__text__analysis.html index 99c30e3..0617082 100644 --- a/docs/latest/group__grp__text__analysis.html +++ b/docs/latest/group__grp__text__analysis.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -125,7 +125,7 @@ Modules</h2></td></tr> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:11 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul> http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__text__utilities.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__text__utilities.html b/docs/latest/group__grp__text__utilities.html index fdf4599..363f3b4 100644 --- a/docs/latest/group__grp__text__utilities.html +++ b/docs/latest/group__grp__text__utilities.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -301,7 +301,7 @@ SELECT * FROM documents_tf_vocabulary order by wordid; <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:11 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul> http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__topic__modelling.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__topic__modelling.html b/docs/latest/group__grp__topic__modelling.html index 83c579b..04da733 100644 --- a/docs/latest/group__grp__topic__modelling.html +++ b/docs/latest/group__grp__topic__modelling.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -125,7 +125,7 @@ Modules</h2></td></tr> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:10 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul> http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__tree.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__tree.html b/docs/latest/group__grp__tree.html index 6e703f5..68dfafe 100644 --- a/docs/latest/group__grp__tree.html +++ b/docs/latest/group__grp__tree.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -128,7 +128,7 @@ Modules</h2></td></tr> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:10 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul> http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__tsa.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__tsa.html b/docs/latest/group__grp__tsa.html index 1324eb3..98154b3 100644 --- a/docs/latest/group__grp__tsa.html +++ b/docs/latest/group__grp__tsa.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -125,7 +125,7 @@ Modules</h2></td></tr> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:10 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul> http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__unsupervised.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__unsupervised.html b/docs/latest/group__grp__unsupervised.html index 58d51c0..f4873e6 100644 --- a/docs/latest/group__grp__unsupervised.html +++ b/docs/latest/group__grp__unsupervised.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -128,7 +128,7 @@ Modules</h2></td></tr> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:10 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul> http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__utilities.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__utilities.html b/docs/latest/group__grp__utilities.html index 129c4bf..e0d68be 100644 --- a/docs/latest/group__grp__utilities.html +++ b/docs/latest/group__grp__utilities.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -159,7 +159,7 @@ $(document).ready(function(){initNavTree('group__grp__utilities.html','');}); <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:11 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul> http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__utility__functions.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__utility__functions.html b/docs/latest/group__grp__utility__functions.html index b060290..eb93466 100644 --- a/docs/latest/group__grp__utility__functions.html +++ b/docs/latest/group__grp__utility__functions.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -120,12 +120,15 @@ Modules</h2></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:group__grp__linear__solver"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grp__linear__solver.html">Linear Solvers</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:group__grp__path"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grp__path.html">Path Functions</a></td></tr> +<tr class="memitem:group__grp__path"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grp__path.html">Path</a></td></tr> <tr class="memdesc:group__grp__path"><td class="mdescLeft"> </td><td class="mdescRight">Path Functions. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:group__grp__pmml"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grp__pmml.html">PMML Export</a></td></tr> <tr class="memdesc:group__grp__pmml"><td class="mdescLeft"> </td><td class="mdescRight">Implements the PMML XML standard to describe and exchange models produced by data mining and machine learning algorithms. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group__grp__sessionize"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grp__sessionize.html">Sessionize</a></td></tr> +<tr class="memdesc:group__grp__sessionize"><td class="mdescLeft"> </td><td class="mdescRight">Sessionize. <br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:group__grp__text__analysis"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grp__text__analysis.html">Text Analysis</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table> @@ -134,7 +137,7 @@ Modules</h2></td></tr> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:11 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul> http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__utility__functions.js ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__utility__functions.js b/docs/latest/group__grp__utility__functions.js index 3c3c53b..a0ac837 100644 --- a/docs/latest/group__grp__utility__functions.js +++ b/docs/latest/group__grp__utility__functions.js @@ -2,7 +2,8 @@ var group__grp__utility__functions = [ [ "Developer Database Functions", "group__grp__utilities.html", null ], [ "Linear Solvers", "group__grp__linear__solver.html", "group__grp__linear__solver" ], - [ "Path Functions", "group__grp__path.html", null ], + [ "Path", "group__grp__path.html", null ], [ "PMML Export", "group__grp__pmml.html", null ], + [ "Sessionize", "group__grp__sessionize.html", null ], [ "Text Analysis", "group__grp__text__analysis.html", "group__grp__text__analysis" ] ]; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-madlib-site/blob/bed9253d/docs/latest/group__grp__validation.html ---------------------------------------------------------------------- diff --git a/docs/latest/group__grp__validation.html b/docs/latest/group__grp__validation.html index 03146d5..e917289 100644 --- a/docs/latest/group__grp__validation.html +++ b/docs/latest/group__grp__validation.html @@ -47,7 +47,7 @@ <td id="projectlogo"><a href="http://madlib.net"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td> <td style="padding-left: 0.5em;"> <div id="projectname"> - <span id="projectnumber">1.9</span> + <span id="projectnumber">1.9.1</span> </div> <div id="projectbrief">User Documentation for MADlib</div> </td> @@ -252,7 +252,7 @@ SELECT madlib.cross_validation_general <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="footer">Generated on Thu Apr 7 2016 14:24:10 for MADlib by + <li class="footer">Generated on Tue Sep 20 2016 11:27:01 for MADlib by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> </ul>