blob: 49e258cc32d3cfbca0458d9989bdcf7859fb5e39 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Random Forest ยท Hivemall User Manual</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-etoc/plugin.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-callouts/plugin.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-toggle-chapters/toggle.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-codeblock-filename/block.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-multipart/multipart.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-katex/katex.min.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-emphasize/plugin.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search/search.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-theme-api/theme-api.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="iris_xgboost.html" />
<link rel="prev" href="iris_scw.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li>
<a href="https://hivemall.incubator.apache.org/" target="_blank" class="custom-link"><i class="fa fa-home"></i> Home</a>
</li>
<li class="divider"></li>
<li class="header">TABLE OF CONTENTS</li>
<li class="chapter " data-level="1.1" data-path="../">
<a href="../">
<b>1.1.</b>
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="../getting_started/">
<a href="../getting_started/">
<b>1.2.</b>
Getting Started
</a>
<ul class="articles">
<li class="chapter " data-level="1.2.1" data-path="../getting_started/installation.html">
<a href="../getting_started/installation.html">
<b>1.2.1.</b>
Installation
</a>
</li>
<li class="chapter " data-level="1.2.2" data-path="../getting_started/permanent-functions.html">
<a href="../getting_started/permanent-functions.html">
<b>1.2.2.</b>
Install as permanent functions
</a>
</li>
<li class="chapter " data-level="1.2.3" data-path="../getting_started/input-format.html">
<a href="../getting_started/input-format.html">
<b>1.2.3.</b>
Input Format
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.3" data-path="../misc/funcs.html">
<a href="../misc/funcs.html">
<b>1.3.</b>
List of Functions
</a>
</li>
<li class="chapter " data-level="1.4" data-path="../tips/">
<a href="../tips/">
<b>1.4.</b>
Tips for Effective Hivemall
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="../tips/addbias.html">
<a href="../tips/addbias.html">
<b>1.4.1.</b>
Explicit add_bias() for better prediction
</a>
</li>
<li class="chapter " data-level="1.4.2" data-path="../tips/rand_amplify.html">
<a href="../tips/rand_amplify.html">
<b>1.4.2.</b>
Use rand_amplify() to better prediction results
</a>
</li>
<li class="chapter " data-level="1.4.3" data-path="../tips/rt_prediction.html">
<a href="../tips/rt_prediction.html">
<b>1.4.3.</b>
Real-time prediction on RDBMS
</a>
</li>
<li class="chapter " data-level="1.4.4" data-path="../tips/ensemble_learning.html">
<a href="../tips/ensemble_learning.html">
<b>1.4.4.</b>
Ensemble learning for stable prediction
</a>
</li>
<li class="chapter " data-level="1.4.5" data-path="../tips/mixserver.html">
<a href="../tips/mixserver.html">
<b>1.4.5.</b>
Mixing models for a better prediction convergence (MIX server)
</a>
</li>
<li class="chapter " data-level="1.4.6" data-path="../tips/emr.html">
<a href="../tips/emr.html">
<b>1.4.6.</b>
Run Hivemall on Amazon Elastic MapReduce
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="../tips/general_tips.html">
<a href="../tips/general_tips.html">
<b>1.5.</b>
General Hive/Hadoop Tips
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="../tips/rowid.html">
<a href="../tips/rowid.html">
<b>1.5.1.</b>
Adding rowid for each row
</a>
</li>
<li class="chapter " data-level="1.5.2" data-path="../tips/hadoop_tuning.html">
<a href="../tips/hadoop_tuning.html">
<b>1.5.2.</b>
Hadoop tuning for Hivemall
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="../troubleshooting/">
<a href="../troubleshooting/">
<b>1.6.</b>
Troubleshooting
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="../troubleshooting/oom.html">
<a href="../troubleshooting/oom.html">
<b>1.6.1.</b>
OutOfMemoryError in training
</a>
</li>
<li class="chapter " data-level="1.6.2" data-path="../troubleshooting/mapjoin_task_error.html">
<a href="../troubleshooting/mapjoin_task_error.html">
<b>1.6.2.</b>
SemanticException generate map join task error: Cannot serialize object
</a>
</li>
<li class="chapter " data-level="1.6.3" data-path="../troubleshooting/asterisk.html">
<a href="../troubleshooting/asterisk.html">
<b>1.6.3.</b>
Asterisk argument for UDTF does not work
</a>
</li>
<li class="chapter " data-level="1.6.4" data-path="../troubleshooting/num_mappers.html">
<a href="../troubleshooting/num_mappers.html">
<b>1.6.4.</b>
The number of mappers is less than input splits in Hadoop 2.x
</a>
</li>
<li class="chapter " data-level="1.6.5" data-path="../troubleshooting/mapjoin_classcastex.html">
<a href="../troubleshooting/mapjoin_classcastex.html">
<b>1.6.5.</b>
Map-side join causes ClassCastException on Tez
</a>
</li>
</ul>
</li>
<li class="header">Part II - Generic Features</li>
<li class="chapter " data-level="2.1" data-path="../misc/generic_funcs.html">
<a href="../misc/generic_funcs.html">
<b>2.1.</b>
List of Generic Hivemall Functions
</a>
</li>
<li class="chapter " data-level="2.2" data-path="../misc/topk.html">
<a href="../misc/topk.html">
<b>2.2.</b>
Efficient Top-K Query Processing
</a>
</li>
<li class="chapter " data-level="2.3" data-path="../misc/tokenizer.html">
<a href="../misc/tokenizer.html">
<b>2.3.</b>
Text Tokenizer
</a>
</li>
<li class="chapter " data-level="2.4" data-path="../misc/approx.html">
<a href="../misc/approx.html">
<b>2.4.</b>
Approximate Aggregate Functions
</a>
</li>
<li class="header">Part III - Feature Engineering</li>
<li class="chapter " data-level="3.1" data-path="../ft_engineering/scaling.html">
<a href="../ft_engineering/scaling.html">
<b>3.1.</b>
Feature Scaling
</a>
</li>
<li class="chapter " data-level="3.2" data-path="../ft_engineering/hashing.html">
<a href="../ft_engineering/hashing.html">
<b>3.2.</b>
Feature Hashing
</a>
</li>
<li class="chapter " data-level="3.3" data-path="../ft_engineering/selection.html">
<a href="../ft_engineering/selection.html">
<b>3.3.</b>
Feature Selection
</a>
</li>
<li class="chapter " data-level="3.4" data-path="../ft_engineering/binning.html">
<a href="../ft_engineering/binning.html">
<b>3.4.</b>
Feature Binning
</a>
</li>
<li class="chapter " data-level="3.5" data-path="../ft_engineering/pairing.html">
<a href="../ft_engineering/pairing.html">
<b>3.5.</b>
Feature Paring
</a>
<ul class="articles">
<li class="chapter " data-level="3.5.1" data-path="../ft_engineering/polynomial.html">
<a href="../ft_engineering/polynomial.html">
<b>3.5.1.</b>
Polynomial features
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.6" data-path="../ft_engineering/ft_trans.html">
<a href="../ft_engineering/ft_trans.html">
<b>3.6.</b>
Feature Transformation
</a>
<ul class="articles">
<li class="chapter " data-level="3.6.1" data-path="../ft_engineering/vectorization.html">
<a href="../ft_engineering/vectorization.html">
<b>3.6.1.</b>
Feature vectorization
</a>
</li>
<li class="chapter " data-level="3.6.2" data-path="../ft_engineering/quantify.html">
<a href="../ft_engineering/quantify.html">
<b>3.6.2.</b>
Quantify non-number features
</a>
</li>
<li class="chapter " data-level="3.6.3" data-path="../ft_engineering/binarize.html">
<a href="../ft_engineering/binarize.html">
<b>3.6.3.</b>
Binarize label
</a>
</li>
<li class="chapter " data-level="3.6.4" data-path="../ft_engineering/onehot.html">
<a href="../ft_engineering/onehot.html">
<b>3.6.4.</b>
One-hot encoding
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.7" data-path="../ft_engineering/term_vector.html">
<a href="../ft_engineering/term_vector.html">
<b>3.7.</b>
Term Vector Model
</a>
<ul class="articles">
<li class="chapter " data-level="3.7.1" data-path="../ft_engineering/tfidf.html">
<a href="../ft_engineering/tfidf.html">
<b>3.7.1.</b>
TF-IDF Term Weighting
</a>
</li>
<li class="chapter " data-level="3.7.2" data-path="../ft_engineering/bm25.html">
<a href="../ft_engineering/bm25.html">
<b>3.7.2.</b>
Okapi BM25 Term Weighting
</a>
</li>
</ul>
</li>
<li class="header">Part IV - Evaluation</li>
<li class="chapter " data-level="4.1" data-path="../eval/binary_classification_measures.html">
<a href="../eval/binary_classification_measures.html">
<b>4.1.</b>
Binary Classification Metrics
</a>
<ul class="articles">
<li class="chapter " data-level="4.1.1" data-path="../eval/auc.html">
<a href="../eval/auc.html">
<b>4.1.1.</b>
Area under the ROC curve
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="4.2" data-path="../eval/multilabel_classification_measures.html">
<a href="../eval/multilabel_classification_measures.html">
<b>4.2.</b>
Multi-label Classification Metrics
</a>
</li>
<li class="chapter " data-level="4.3" data-path="../eval/regression.html">
<a href="../eval/regression.html">
<b>4.3.</b>
Regression Metrics
</a>
</li>
<li class="chapter " data-level="4.4" data-path="../eval/rank.html">
<a href="../eval/rank.html">
<b>4.4.</b>
Ranking Measures
</a>
</li>
<li class="chapter " data-level="4.5" data-path="../eval/datagen.html">
<a href="../eval/datagen.html">
<b>4.5.</b>
Data Generation
</a>
<ul class="articles">
<li class="chapter " data-level="4.5.1" data-path="../eval/lr_datagen.html">
<a href="../eval/lr_datagen.html">
<b>4.5.1.</b>
Logistic Regression data generation
</a>
</li>
</ul>
</li>
<li class="header">Part V - Supervised Learning</li>
<li class="chapter " data-level="5.1" data-path="../supervised_learning/prediction.html">
<a href="../supervised_learning/prediction.html">
<b>5.1.</b>
How Prediction Works
</a>
</li>
<li class="chapter " data-level="5.2" data-path="../supervised_learning/tutorial.html">
<a href="../supervised_learning/tutorial.html">
<b>5.2.</b>
Step-by-Step Tutorial on Supervised Learning
</a>
</li>
<li class="header">Part VI - Binary Classification</li>
<li class="chapter " data-level="6.1" data-path="../binaryclass/general.html">
<a href="../binaryclass/general.html">
<b>6.1.</b>
Binary Classification
</a>
</li>
<li class="chapter " data-level="6.2" data-path="../binaryclass/a9a.html">
<a href="../binaryclass/a9a.html">
<b>6.2.</b>
a9a Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="6.2.1" data-path="../binaryclass/a9a_dataset.html">
<a href="../binaryclass/a9a_dataset.html">
<b>6.2.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="6.2.2" data-path="../binaryclass/a9a_generic.html">
<a href="../binaryclass/a9a_generic.html">
<b>6.2.2.</b>
General Binary Classifier
</a>
</li>
<li class="chapter " data-level="6.2.3" data-path="../binaryclass/a9a_lr.html">
<a href="../binaryclass/a9a_lr.html">
<b>6.2.3.</b>
Logistic Regression
</a>
</li>
<li class="chapter " data-level="6.2.4" data-path="../binaryclass/a9a_minibatch.html">
<a href="../binaryclass/a9a_minibatch.html">
<b>6.2.4.</b>
Mini-batch Gradient Descent
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="6.3" data-path="../binaryclass/news20.html">
<a href="../binaryclass/news20.html">
<b>6.3.</b>
News20 Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="6.3.1" data-path="../binaryclass/news20_dataset.html">
<a href="../binaryclass/news20_dataset.html">
<b>6.3.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="6.3.2" data-path="../binaryclass/news20_pa.html">
<a href="../binaryclass/news20_pa.html">
<b>6.3.2.</b>
Perceptron, Passive Aggressive
</a>
</li>
<li class="chapter " data-level="6.3.3" data-path="../binaryclass/news20_scw.html">
<a href="../binaryclass/news20_scw.html">
<b>6.3.3.</b>
CW, AROW, SCW
</a>
</li>
<li class="chapter " data-level="6.3.4" data-path="../binaryclass/news20_generic.html">
<a href="../binaryclass/news20_generic.html">
<b>6.3.4.</b>
General Binary Classifier
</a>
</li>
<li class="chapter " data-level="6.3.5" data-path="../binaryclass/news20_generic_bagging.html">
<a href="../binaryclass/news20_generic_bagging.html">
<b>6.3.5.</b>
Baggnig classiers
</a>
</li>
<li class="chapter " data-level="6.3.6" data-path="../binaryclass/news20_adagrad.html">
<a href="../binaryclass/news20_adagrad.html">
<b>6.3.6.</b>
AdaGradRDA, AdaGrad, AdaDelta
</a>
</li>
<li class="chapter " data-level="6.3.7" data-path="../binaryclass/news20_rf.html">
<a href="../binaryclass/news20_rf.html">
<b>6.3.7.</b>
Random Forest
</a>
</li>
<li class="chapter " data-level="6.3.8" data-path="../binaryclass/news20b_xgboost.html">
<a href="../binaryclass/news20b_xgboost.html">
<b>6.3.8.</b>
XGBoost
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="6.4" data-path="../binaryclass/kdd2010a.html">
<a href="../binaryclass/kdd2010a.html">
<b>6.4.</b>
KDD2010a Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="6.4.1" data-path="../binaryclass/kdd2010a_dataset.html">
<a href="../binaryclass/kdd2010a_dataset.html">
<b>6.4.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="6.4.2" data-path="../binaryclass/kdd2010a_scw.html">
<a href="../binaryclass/kdd2010a_scw.html">
<b>6.4.2.</b>
PA, CW, AROW, SCW
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="6.5" data-path="../binaryclass/kdd2010b.html">
<a href="../binaryclass/kdd2010b.html">
<b>6.5.</b>
KDD2010b Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="6.5.1" data-path="../binaryclass/kdd2010b_dataset.html">
<a href="../binaryclass/kdd2010b_dataset.html">
<b>6.5.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="6.5.2" data-path="../binaryclass/kdd2010b_arow.html">
<a href="../binaryclass/kdd2010b_arow.html">
<b>6.5.2.</b>
AROW
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="6.6" data-path="../binaryclass/webspam.html">
<a href="../binaryclass/webspam.html">
<b>6.6.</b>
Webspam Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="6.6.1" data-path="../binaryclass/webspam_dataset.html">
<a href="../binaryclass/webspam_dataset.html">
<b>6.6.1.</b>
Data Pareparation
</a>
</li>
<li class="chapter " data-level="6.6.2" data-path="../binaryclass/webspam_scw.html">
<a href="../binaryclass/webspam_scw.html">
<b>6.6.2.</b>
PA1, AROW, SCW
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="6.7" data-path="../binaryclass/titanic_rf.html">
<a href="../binaryclass/titanic_rf.html">
<b>6.7.</b>
Kaggle Titanic Tutorial
</a>
</li>
<li class="chapter " data-level="6.8" data-path="../binaryclass/criteo.html">
<a href="../binaryclass/criteo.html">
<b>6.8.</b>
Criteo Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="6.8.1" data-path="../binaryclass/criteo_dataset.html">
<a href="../binaryclass/criteo_dataset.html">
<b>6.8.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="6.8.2" data-path="../binaryclass/criteo_ffm.html">
<a href="../binaryclass/criteo_ffm.html">
<b>6.8.2.</b>
Field-Aware Factorization Machines
</a>
</li>
</ul>
</li>
<li class="header">Part VII - Multiclass Classification</li>
<li class="chapter " data-level="7.1" data-path="news20.html">
<a href="news20.html">
<b>7.1.</b>
News20 Multiclass Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="7.1.1" data-path="news20_dataset.html">
<a href="news20_dataset.html">
<b>7.1.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="7.1.2" data-path="news20_one-vs-the-rest_dataset.html">
<a href="news20_one-vs-the-rest_dataset.html">
<b>7.1.2.</b>
Data Preparation for one-vs-the-rest classifiers
</a>
</li>
<li class="chapter " data-level="7.1.3" data-path="news20_pa.html">
<a href="news20_pa.html">
<b>7.1.3.</b>
PA
</a>
</li>
<li class="chapter " data-level="7.1.4" data-path="news20_scw.html">
<a href="news20_scw.html">
<b>7.1.4.</b>
CW, AROW, SCW
</a>
</li>
<li class="chapter " data-level="7.1.5" data-path="news20_xgboost.html">
<a href="news20_xgboost.html">
<b>7.1.5.</b>
XGBoost
</a>
</li>
<li class="chapter " data-level="7.1.6" data-path="news20_ensemble.html">
<a href="news20_ensemble.html">
<b>7.1.6.</b>
Ensemble learning
</a>
</li>
<li class="chapter " data-level="7.1.7" data-path="news20_one-vs-the-rest.html">
<a href="news20_one-vs-the-rest.html">
<b>7.1.7.</b>
one-vs-the-rest Classifier
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="7.2" data-path="iris.html">
<a href="iris.html">
<b>7.2.</b>
Iris Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="7.2.1" data-path="iris_dataset.html">
<a href="iris_dataset.html">
<b>7.2.1.</b>
Data preparation
</a>
</li>
<li class="chapter " data-level="7.2.2" data-path="iris_scw.html">
<a href="iris_scw.html">
<b>7.2.2.</b>
SCW
</a>
</li>
<li class="chapter active" data-level="7.2.3" data-path="iris_randomforest.html">
<a href="iris_randomforest.html">
<b>7.2.3.</b>
Random Forest
</a>
</li>
<li class="chapter " data-level="7.2.4" data-path="iris_xgboost.html">
<a href="iris_xgboost.html">
<b>7.2.4.</b>
XGBoost
</a>
</li>
</ul>
</li>
<li class="header">Part VIII - Regression</li>
<li class="chapter " data-level="8.1" data-path="../regression/general.html">
<a href="../regression/general.html">
<b>8.1.</b>
Regression
</a>
</li>
<li class="chapter " data-level="8.2" data-path="../regression/e2006.html">
<a href="../regression/e2006.html">
<b>8.2.</b>
E2006-tfidf Regression Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="8.2.1" data-path="../regression/e2006_dataset.html">
<a href="../regression/e2006_dataset.html">
<b>8.2.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="8.2.2" data-path="../regression/e2006_generic.html">
<a href="../regression/e2006_generic.html">
<b>8.2.2.</b>
General Regessor
</a>
</li>
<li class="chapter " data-level="8.2.3" data-path="../regression/e2006_arow.html">
<a href="../regression/e2006_arow.html">
<b>8.2.3.</b>
Passive Aggressive, AROW
</a>
</li>
<li class="chapter " data-level="8.2.4" data-path="../regression/e2006_xgboost.html">
<a href="../regression/e2006_xgboost.html">
<b>8.2.4.</b>
XGBoost
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="8.3" data-path="../regression/kddcup12tr2.html">
<a href="../regression/kddcup12tr2.html">
<b>8.3.</b>
KDDCup 2012 Track 2 CTR Prediction Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="8.3.1" data-path="../regression/kddcup12tr2_dataset.html">
<a href="../regression/kddcup12tr2_dataset.html">
<b>8.3.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="8.3.2" data-path="../regression/kddcup12tr2_lr.html">
<a href="../regression/kddcup12tr2_lr.html">
<b>8.3.2.</b>
Logistic Regression, Passive Aggressive
</a>
</li>
<li class="chapter " data-level="8.3.3" data-path="../regression/kddcup12tr2_lr_amplify.html">
<a href="../regression/kddcup12tr2_lr_amplify.html">
<b>8.3.3.</b>
Logistic Regression with amplifier
</a>
</li>
<li class="chapter " data-level="8.3.4" data-path="../regression/kddcup12tr2_adagrad.html">
<a href="../regression/kddcup12tr2_adagrad.html">
<b>8.3.4.</b>
AdaGrad, AdaDelta
</a>
</li>
</ul>
</li>
<li class="header">Part IX - Recommendation</li>
<li class="chapter " data-level="9.1" data-path="../recommend/cf.html">
<a href="../recommend/cf.html">
<b>9.1.</b>
Collaborative Filtering
</a>
<ul class="articles">
<li class="chapter " data-level="9.1.1" data-path="../recommend/item_based_cf.html">
<a href="../recommend/item_based_cf.html">
<b>9.1.1.</b>
Item-based Collaborative Filtering
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="9.2" data-path="../recommend/news20.html">
<a href="../recommend/news20.html">
<b>9.2.</b>
News20 Related Article Recommendation Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="9.2.1" data-path="news20_dataset.html">
<a href="news20_dataset.html">
<b>9.2.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="9.2.2" data-path="../recommend/news20_jaccard.html">
<a href="../recommend/news20_jaccard.html">
<b>9.2.2.</b>
LSH/MinHash and Jaccard Similarity
</a>
</li>
<li class="chapter " data-level="9.2.3" data-path="../recommend/news20_knn.html">
<a href="../recommend/news20_knn.html">
<b>9.2.3.</b>
LSH/MinHash and Brute-force Search
</a>
</li>
<li class="chapter " data-level="9.2.4" data-path="../recommend/news20_bbit_minhash.html">
<a href="../recommend/news20_bbit_minhash.html">
<b>9.2.4.</b>
kNN search using b-Bits MinHash
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="9.3" data-path="../recommend/movielens.html">
<a href="../recommend/movielens.html">
<b>9.3.</b>
MovieLens Movie Recommendation Tutorial
</a>
<ul class="articles">
<li class="chapter " data-level="9.3.1" data-path="../recommend/movielens_dataset.html">
<a href="../recommend/movielens_dataset.html">
<b>9.3.1.</b>
Data Preparation
</a>
</li>
<li class="chapter " data-level="9.3.2" data-path="../recommend/movielens_cf.html">
<a href="../recommend/movielens_cf.html">
<b>9.3.2.</b>
Item-based Collaborative Filtering
</a>
</li>
<li class="chapter " data-level="9.3.3" data-path="../recommend/movielens_mf.html">
<a href="../recommend/movielens_mf.html">
<b>9.3.3.</b>
Matrix Factorization
</a>
</li>
<li class="chapter " data-level="9.3.4" data-path="../recommend/movielens_fm.html">
<a href="../recommend/movielens_fm.html">
<b>9.3.4.</b>
Factorization Machine
</a>
</li>
<li class="chapter " data-level="9.3.5" data-path="../recommend/movielens_slim.html">
<a href="../recommend/movielens_slim.html">
<b>9.3.5.</b>
SLIM for fast top-k Recommendation
</a>
</li>
<li class="chapter " data-level="9.3.6" data-path="../recommend/movielens_cv.html">
<a href="../recommend/movielens_cv.html">
<b>9.3.6.</b>
10-fold Cross Validation (Matrix Factorization)
</a>
</li>
</ul>
</li>
<li class="header">Part X - Anomaly Detection</li>
<li class="chapter " data-level="10.1" data-path="../anomaly/lof.html">
<a href="../anomaly/lof.html">
<b>10.1.</b>
Outlier Detection using Local Outlier Factor (LOF)
</a>
</li>
<li class="chapter " data-level="10.2" data-path="../anomaly/sst.html">
<a href="../anomaly/sst.html">
<b>10.2.</b>
Change-Point Detection using Singular Spectrum Transformation (SST)
</a>
</li>
<li class="chapter " data-level="10.3" data-path="../anomaly/changefinder.html">
<a href="../anomaly/changefinder.html">
<b>10.3.</b>
ChangeFinder: Detecting Outlier and Change-Point Simultaneously
</a>
</li>
<li class="header">Part XI - Clustering</li>
<li class="chapter " data-level="11.1" data-path="../clustering/lda.html">
<a href="../clustering/lda.html">
<b>11.1.</b>
Latent Dirichlet Allocation
</a>
</li>
<li class="chapter " data-level="11.2" data-path="../clustering/plsa.html">
<a href="../clustering/plsa.html">
<b>11.2.</b>
Probabilistic Latent Semantic Analysis
</a>
</li>
<li class="header">Part XII - GeoSpatial Functions</li>
<li class="chapter " data-level="12.1" data-path="../geospatial/latlon.html">
<a href="../geospatial/latlon.html">
<b>12.1.</b>
Lat/Lon functions
</a>
</li>
<li class="header">Part XIII - Hivemall on SparkSQL</li>
<li class="chapter " data-level="13.1" data-path="../spark/getting_started/README.md">
<span>
<b>13.1.</b>
Getting Started
</a>
<ul class="articles">
<li class="chapter " data-level="13.1.1" data-path="../spark/getting_started/installation.html">
<a href="../spark/getting_started/installation.html">
<b>13.1.1.</b>
Installation
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="13.2" data-path="../spark/binaryclass/">
<a href="../spark/binaryclass/">
<b>13.2.</b>
Binary Classification
</a>
<ul class="articles">
<li class="chapter " data-level="13.2.1" data-path="../spark/binaryclass/a9a_sql.html">
<a href="../spark/binaryclass/a9a_sql.html">
<b>13.2.1.</b>
a9a Tutorial for SQL
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="13.3" data-path="../spark/binaryclass/">
<a href="../spark/binaryclass/">
<b>13.3.</b>
Regression
</a>
<ul class="articles">
<li class="chapter " data-level="13.3.1" data-path="../spark/regression/e2006_sql.html">
<a href="../spark/regression/e2006_sql.html">
<b>13.3.1.</b>
E2006-tfidf Regression Tutorial for SQL
</a>
</li>
</ul>
</li>
<li class="header">Part XIV - Hivemall on Docker</li>
<li class="chapter " data-level="14.1" data-path="../docker/getting_started.html">
<a href="../docker/getting_started.html">
<b>14.1.</b>
Getting Started
</a>
</li>
<li class="header">Part XIV - External References</li>
<li class="chapter " data-level="15.1" >
<a target="_blank" href="https://github.com/daijyc/hivemall/wiki/PigHome">
<b>15.1.</b>
Hivemall on Apache Pig
</a>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
Published with GitBook
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href=".." >Random Forest</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<!--
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.
-->
<!-- toc --><div id="toc" class="toc">
<ul>
<li><a href="#dataset">Dataset</a></li>
<li><a href="#table-preparation">Table preparation</a></li>
<li><a href="#training">Training</a><ul>
<li><a href="#training-options">Training options</a><ul>
<li><a href="#parallelize-training">Parallelize Training</a></li>
<li><a href="#learning-stats">Learning stats</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#prediction">Prediction</a><ul>
<li><a href="#parallelize-prediction">Parallelize Prediction</a></li>
</ul>
</li>
<li><a href="#evaluation">Evaluation</a></li>
<li><a href="#graphviz-export">Graphviz export</a></li>
</ul>
</div><!-- tocstop -->
<h1 id="dataset">Dataset</h1>
<ul>
<li><a href="https://archive.ics.uci.edu/ml/datasets/Iris" target="_blank">https://archive.ics.uci.edu/ml/datasets/Iris</a></li>
</ul>
<pre><code>Attribute Information:
1. sepal length in cm
2. sepal width in cm
3. petal length in cm
4. petal width in cm
5. class:
-- Iris Setosa
-- Iris Versicolour
-- Iris Virginica
</code></pre><h1 id="table-preparation">Table preparation</h1>
<pre><code class="lang-sql"><span class="hljs-keyword">create</span> <span class="hljs-keyword">database</span> iris;
<span class="hljs-keyword">use</span> iris;
<span class="hljs-keyword">create</span> <span class="hljs-keyword">external</span> <span class="hljs-keyword">table</span> <span class="hljs-keyword">raw</span> (
sepal_length <span class="hljs-built_in">int</span>,
sepal_width <span class="hljs-built_in">int</span>,
petal_length <span class="hljs-built_in">int</span>,
petak_width <span class="hljs-built_in">int</span>,
<span class="hljs-keyword">class</span> <span class="hljs-keyword">string</span>
)
<span class="hljs-keyword">ROW</span> <span class="hljs-keyword">FORMAT</span> <span class="hljs-keyword">DELIMITED</span>
<span class="hljs-keyword">FIELDS</span> <span class="hljs-keyword">TERMINATED</span> <span class="hljs-keyword">BY</span> <span class="hljs-string">&apos;,&apos;</span>
<span class="hljs-keyword">LINES</span> <span class="hljs-keyword">TERMINATED</span> <span class="hljs-keyword">BY</span> <span class="hljs-string">&apos;\n&apos;</span>
<span class="hljs-keyword">STORED</span> <span class="hljs-keyword">AS</span> TEXTFILE LOCATION <span class="hljs-string">&apos;/dataset/iris/raw&apos;</span>;
$ sed &apos;/^$/d&apos; iris.data | hadoop fs -put - /dataset/iris/raw/iris.data
</code></pre>
<pre><code class="lang-sql"><span class="hljs-keyword">create</span> <span class="hljs-keyword">table</span> label_mapping
<span class="hljs-keyword">as</span>
<span class="hljs-keyword">select</span>
<span class="hljs-keyword">class</span>,
<span class="hljs-keyword">rank</span> - <span class="hljs-number">1</span> <span class="hljs-keyword">as</span> label
<span class="hljs-keyword">from</span> (
<span class="hljs-keyword">select</span>
<span class="hljs-keyword">distinct</span> <span class="hljs-keyword">class</span>,
<span class="hljs-keyword">dense_rank</span>() <span class="hljs-keyword">over</span> (<span class="hljs-keyword">order</span> <span class="hljs-keyword">by</span> <span class="hljs-keyword">class</span>) <span class="hljs-keyword">as</span> <span class="hljs-keyword">rank</span>
<span class="hljs-keyword">from</span>
<span class="hljs-keyword">raw</span>
) t
;
</code></pre>
<pre><code class="lang-sql"><span class="hljs-keyword">create</span> <span class="hljs-keyword">table</span> training
<span class="hljs-keyword">as</span>
<span class="hljs-keyword">select</span>
<span class="hljs-keyword">rowid</span>() <span class="hljs-keyword">as</span> <span class="hljs-keyword">rowid</span>,
<span class="hljs-built_in">array</span>(t1.sepal_length, t1.sepal_width, t1.petal_length, t1.petak_width) <span class="hljs-keyword">as</span> features,
t2.label
<span class="hljs-keyword">from</span>
<span class="hljs-keyword">raw</span> t1
<span class="hljs-keyword">JOIN</span> label_mapping t2 <span class="hljs-keyword">ON</span> (t1.<span class="hljs-keyword">class</span> = t2.<span class="hljs-keyword">class</span>)
;
</code></pre>
<h1 id="training">Training</h1>
<p><code>train_randomforest_classifier</code> takes a dense <code>features</code> in double[] and a <code>label</code> starting from 0.</p>
<pre><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">model</span>
<span class="hljs-keyword">STORED</span> <span class="hljs-keyword">AS</span> SEQUENCEFILE
<span class="hljs-keyword">AS</span>
<span class="hljs-keyword">select</span>
train_randomforest_classifier(features, label)
<span class="hljs-comment">-- v0.5.0 and later</span>
<span class="hljs-comment">-- train_randomforest_classifier(features, label) as (model_id, model_weight, model, var_importance, oob_errors, oob_tests)</span>
<span class="hljs-comment">-- v0.4.1-alpha.2 and before</span>
<span class="hljs-comment">-- train_randomforest_classifier(features, label) as (pred_model, var_importance, oob_errors, oob_tests)</span>
<span class="hljs-comment">-- from v0.4.1 to v0.4.2-rc4</span>
<span class="hljs-comment">-- train_randomforest_classifier(features, label) as (model_id, model_type, pred_model, var_importance, oob_errors, oob_tests)</span>
<span class="hljs-keyword">from</span>
training;
</code></pre>
<div class="panel panel-warning"><div class="panel-heading"><h3 class="panel-title" id="caution"><i class="fa fa-exclamation-triangle"></i> Caution</h3></div><div class="panel-body"><p>Note that model storage format is different between versions as seen the above.</p></div></div>
<pre><code class="lang-sql">hive&gt; desc extended model;
</code></pre>
<table>
<thead>
<tr>
<th style="text-align:center">col_name</th>
<th style="text-align:center">data_type </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">model_id</td>
<td style="text-align:center">string</td>
</tr>
<tr>
<td style="text-align:center">model_weight</td>
<td style="text-align:center">double</td>
</tr>
<tr>
<td style="text-align:center">model</td>
<td style="text-align:center">string</td>
</tr>
<tr>
<td style="text-align:center">var_importance</td>
<td style="text-align:center">array<double></double></td>
</tr>
<tr>
<td style="text-align:center">oob_errors</td>
<td style="text-align:center">int</td>
</tr>
<tr>
<td style="text-align:center">oob_tests</td>
<td style="text-align:center">int</td>
</tr>
</tbody>
</table>
<h2 id="training-options">Training options</h2>
<p><code>-help</code> option shows usage of the function.</p>
<pre><code class="lang-sql">select train_randomforest_classifier(features, label, &quot;-help&quot;) from training;
&gt; FAILED: UDFArgumentException
usage: train_randomforest_classifier(array&lt;double|string&gt; features, int
label [, const array&lt;double&gt; classWeights, const string options]) -
Returns a relation consists of &lt;int model_id, int model_type,
string pred_model, array&lt;double&gt; var_importance, int oob_errors,
int oob_tests, double weight&gt; [-attrs &lt;arg&gt;] [-depth &lt;arg&gt;] [-help]
[-leafs &lt;arg&gt;] [-min_samples_leaf &lt;arg&gt;] [-rule &lt;arg&gt;] [-seed
&lt;arg&gt;] [-splits &lt;arg&gt;] [-stratified] [-subsample &lt;arg&gt;] [-trees
&lt;arg&gt;] [-vars &lt;arg&gt;]
-attrs,--attribute_types &lt;arg&gt; Comma separated attribute types (Q
for quantitative variable and C for
categorical variable. e.g.,
[Q,C,Q,C])
-depth,--max_depth &lt;arg&gt; The maximum number of the tree depth
[default: Integer.MAX_VALUE]
-help Show function help
-leafs,--max_leaf_nodes &lt;arg&gt; The maximum number of leaf nodes
[default: Integer.MAX_VALUE]
-min_samples_leaf &lt;arg&gt; The minimum number of samples in a
leaf node [default: 1]
-rule,--split_rule &lt;arg&gt; Split algorithm [default: GINI,
ENTROPY]
-seed &lt;arg&gt; seed value in long [default: -1
(random)]
-splits,--min_split &lt;arg&gt; A node that has greater than or
equals to `min_split` examples will
split [default: 2]
-stratified,--stratified_sampling Enable Stratified sampling for
unbalanced data
-subsample &lt;arg&gt; Sampling rate in range (0.0,1.0]
-trees,--num_trees &lt;arg&gt; The number of trees for each task
[default: 50]
-vars,--num_variables &lt;arg&gt; The number of random selected
features [default:
ceil(sqrt(x[0].length))].
int(num_variables * x[0].length) is
considered if num_variable is (0,1]
</code></pre>
<div class="panel panel-warning"><div class="panel-heading"><h3 class="panel-title" id="caution"><i class="fa fa-exclamation-triangle"></i> Caution</h3></div><div class="panel-body"><p><code>-num_trees</code> controls the number of trees for each task, not the total number of trees.</p></div></div>
<h3 id="parallelize-training">Parallelize Training</h3>
<p>To parallelize RandomForest training, you can use UNION ALL as follows:</p>
<pre><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> <span class="hljs-keyword">model</span>
<span class="hljs-keyword">STORED</span> <span class="hljs-keyword">AS</span> ORC tblproperties(<span class="hljs-string">&quot;orc.compress&quot;</span>=<span class="hljs-string">&quot;SNAPPY&quot;</span>)
<span class="hljs-comment">-- STORED AS SEQUENCEFILE </span>
<span class="hljs-keyword">AS</span>
<span class="hljs-keyword">select</span>
train_randomforest_classifier(features, label, <span class="hljs-string">&apos;-trees 25&apos;</span>)
<span class="hljs-keyword">from</span>
training
<span class="hljs-keyword">UNION</span> ALL
<span class="hljs-keyword">select</span>
train_randomforest_classifier(features, label, <span class="hljs-string">&apos;-trees 25&apos;</span>)
<span class="hljs-keyword">from</span>
training
;
</code></pre>
<h3 id="learning-stats">Learning stats</h3>
<p><a href="https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp" target="_blank"><code>Variable importance</code></a> and <a href="https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#ooberr" target="_blank"><code>Out Of Bag (OOB) error rate</code></a> of RandomForest can be shown as follows:</p>
<pre><code class="lang-sql"><span class="hljs-keyword">select</span>
array_sum(var_importance) <span class="hljs-keyword">as</span> var_importance,
<span class="hljs-keyword">sum</span>(oob_errors) / <span class="hljs-keyword">sum</span>(oob_tests) <span class="hljs-keyword">as</span> oob_err_rate
<span class="hljs-keyword">from</span>
<span class="hljs-keyword">model</span>;
</code></pre>
<blockquote>
<p>[6.837674865013268,4.1317115752776665,24.331571871930226,25.677497925673062] 0.056666666666666664</p>
</blockquote>
<h1 id="prediction">Prediction</h1>
<pre><code class="lang-sql"><span class="hljs-comment">-- set hivevar:classification=true;</span>
<span class="hljs-keyword">set</span> hive.<span class="hljs-keyword">auto</span>.<span class="hljs-keyword">convert</span>.<span class="hljs-keyword">join</span>=<span class="hljs-literal">true</span>;
<span class="hljs-keyword">set</span> hive.mapjoin.optimized.hashtable=<span class="hljs-literal">false</span>;
<span class="hljs-keyword">create</span> <span class="hljs-keyword">table</span> predicted
<span class="hljs-keyword">as</span>
<span class="hljs-keyword">SELECT</span>
<span class="hljs-keyword">rowid</span>,
<span class="hljs-comment">-- rf_ensemble(predicted) as predicted</span>
<span class="hljs-comment">-- v0.5.0 or later</span>
rf_ensemble(predicted.<span class="hljs-keyword">value</span>, predicted.posteriori, model_weight) <span class="hljs-keyword">as</span> predicted
<span class="hljs-comment">-- rf_ensemble(predicted.value, predicted.posteriori) as predicted -- avoid OOB accuracy (i.e., model_weight)</span>
<span class="hljs-keyword">FROM</span> (
<span class="hljs-keyword">SELECT</span>
<span class="hljs-keyword">rowid</span>,
<span class="hljs-comment">-- from v0.4.1 to v0.4.2-rc4</span>
<span class="hljs-comment">-- tree_predict(p.model_id, p.model_type, p.pred_model, t.features, ${classification}) as predicted</span>
<span class="hljs-comment">-- v0.5.0 or later</span>
p.model_weight,
tree_predict(p.model_id, p.<span class="hljs-keyword">model</span>, t.features, <span class="hljs-string">&quot;-classification&quot;</span>) <span class="hljs-keyword">as</span> predicted
<span class="hljs-comment">-- tree_predict(p.model_id, p.model, t.features, ${classification}) as predicted</span>
<span class="hljs-comment">-- tree_predict_v1(p.model_id, p.model_type, p.pred_model, t.features, ${classification}) as predicted -- to use the old model in v0.5.0 or later</span>
<span class="hljs-keyword">FROM</span>
<span class="hljs-keyword">model</span> p
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">OUTER</span> <span class="hljs-keyword">JOIN</span> <span class="hljs-comment">-- CROSS JOIN</span>
training t
) t1
<span class="hljs-keyword">group</span> <span class="hljs-keyword">by</span>
<span class="hljs-keyword">rowid</span>
;
</code></pre>
<div class="panel panel-primary"><div class="panel-heading"><h3 class="panel-title" id="note"><i class="fa fa-edit"></i> Note</h3></div><div class="panel-body"><p>Left outer join without a join condition (i.e., <code>model p LEFT OUTER JOIN training t</code>) is a trick to fix the left table for cross join.</p><h4 id="caution">Caution</h4><p><code>tree_predict_v1</code> is for the backward compatibility for using prediction models built before <code>v0.5</code> on <code>v0.5</code> or later.</p></div></div>
<h3 id="parallelize-prediction">Parallelize Prediction</h3>
<p>The following query runs predictions in N-parallel. It would reduce elapsed time for prediction almost by N.</p>
<pre><code class="lang-sql"><span class="hljs-keyword">SET</span> hivevar:classification=<span class="hljs-literal">true</span>;
<span class="hljs-keyword">set</span> hive.<span class="hljs-keyword">auto</span>.<span class="hljs-keyword">convert</span>.<span class="hljs-keyword">join</span>=<span class="hljs-literal">true</span>;
<span class="hljs-keyword">SET</span> hive.mapjoin.optimized.hashtable=<span class="hljs-literal">false</span>;
<span class="hljs-keyword">SET</span> mapred.reduce.tasks=<span class="hljs-number">8</span>;
<span class="hljs-keyword">drop</span> <span class="hljs-keyword">table</span> predicted;
<span class="hljs-keyword">create</span> <span class="hljs-keyword">table</span> predicted
<span class="hljs-keyword">as</span>
<span class="hljs-keyword">SELECT</span>
<span class="hljs-keyword">rowid</span>,
<span class="hljs-comment">-- rf_ensemble(predicted) as predicted</span>
<span class="hljs-comment">-- v0.5.0 or later</span>
rf_ensemble(predicted.<span class="hljs-keyword">value</span>, predicted.posteriori, model_weight) <span class="hljs-keyword">as</span> predicted
<span class="hljs-comment">-- rf_ensemble(predicted.value, predicted.posteriori) as predicted -- avoid OOB accuracy (i.e., model_weight)</span>
<span class="hljs-keyword">FROM</span> (
<span class="hljs-keyword">SELECT</span>
t.<span class="hljs-keyword">rowid</span>,
<span class="hljs-comment">-- from v0.4.1 to v0.4.2-rc4</span>
<span class="hljs-comment">-- tree_predict(p.model_id, p.model_type, p.pred_model, t.features, ${classification}) as predicted</span>
<span class="hljs-comment">-- v0.5.0 or later</span>
p.model_weight,
tree_predict(p.model_id, p.<span class="hljs-keyword">model</span>, t.features, <span class="hljs-string">&quot;-classification&quot;</span>) <span class="hljs-keyword">as</span> predicted
<span class="hljs-comment">-- tree_predict(p.model_id, p.model, t.features, ${classification}) as predicted</span>
<span class="hljs-comment">-- tree_predict_v1(p.model_id, p.model_type, p.pred_model, t.features, ${classification}) as predicted as predicted -- to use the old model in v0.5.0 or later</span>
<span class="hljs-keyword">FROM</span> (
<span class="hljs-keyword">SELECT</span>
<span class="hljs-comment">-- from v0.4.1 to v0.4.2-rc4</span>
<span class="hljs-comment">-- model_id, model_type, pred_model</span>
<span class="hljs-comment">-- v0.5.0 or later</span>
model_id, model_weight, <span class="hljs-keyword">model</span>
<span class="hljs-keyword">FROM</span> <span class="hljs-keyword">model</span>
<span class="hljs-keyword">DISTRIBUTE</span> <span class="hljs-keyword">BY</span> <span class="hljs-keyword">rand</span>(<span class="hljs-number">1</span>)
) p
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">OUTER</span> <span class="hljs-keyword">JOIN</span> training t
) t1
<span class="hljs-keyword">group</span> <span class="hljs-keyword">by</span>
<span class="hljs-keyword">rowid</span>;
</code></pre>
<h1 id="evaluation">Evaluation</h1>
<pre><code class="lang-sql"><span class="hljs-keyword">select</span> <span class="hljs-keyword">count</span>(<span class="hljs-number">1</span>) <span class="hljs-keyword">from</span> training;
</code></pre>
<blockquote>
<p>150</p>
</blockquote>
<pre><code class="lang-sql"><span class="hljs-keyword">set</span> hivevar:total_cnt=<span class="hljs-number">150</span>;
WITH t1 as (
<span class="hljs-keyword">SELECT</span>
t.<span class="hljs-keyword">rowid</span>,
t.label <span class="hljs-keyword">as</span> actual,
p.predicted.label <span class="hljs-keyword">as</span> predicted
<span class="hljs-keyword">FROM</span>
predicted p
<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">OUTER</span> <span class="hljs-keyword">JOIN</span> training t <span class="hljs-keyword">ON</span> (t.<span class="hljs-keyword">rowid</span> = p.<span class="hljs-keyword">rowid</span>)
)
<span class="hljs-keyword">SELECT</span>
<span class="hljs-keyword">count</span>(<span class="hljs-number">1</span>) / ${total_cnt}
<span class="hljs-keyword">FROM</span>
t1
<span class="hljs-keyword">WHERE</span>
actual = predicted
;
</code></pre>
<blockquote>
<p>0.98</p>
</blockquote>
<h1 id="graphviz-export">Graphviz export</h1>
<div class="panel panel-primary"><div class="panel-heading"><h3 class="panel-title" id="note"><i class="fa fa-edit"></i> Note</h3></div><div class="panel-body"><p><code>tree_export</code> feature is supported from Hivemall v0.5.0 or later.
Better to limit tree depth on training by <code>-depth</code> option to plot a Decision Tree.</p></div></div>
<p>Hivemall provide <code>tree_export</code> to export a decision tree into <a href="https://www.graphviz.org/" target="_blank">Graphviz</a> or human-readable Javascript format. You can find the usage by issuing the following query:</p>
<pre><code>&gt; select tree_export(&quot;&quot;,&quot;-help&quot;);
usage: tree_export(string model, const string options, optional
array&lt;string&gt; featureNames=null, optional array&lt;string&gt;
classNames=null) - exports a Decision Tree model as javascript/dot]
[-help] [-output_name &lt;arg&gt;] [-r] [-t &lt;arg&gt;]
-help Show function help
-output_name,--outputName &lt;arg&gt; output name [default: predicted]
-r,--regression Is regression tree or not
-t,--type &lt;arg&gt; Type of output [default: js,
javascript/js, graphviz/dot
</code></pre><pre><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> model_exported
<span class="hljs-keyword">STORED</span> <span class="hljs-keyword">AS</span> ORC tblproperties(<span class="hljs-string">&quot;orc.compress&quot;</span>=<span class="hljs-string">&quot;SNAPPY&quot;</span>)
<span class="hljs-keyword">AS</span>
<span class="hljs-keyword">select</span>
model_id,
tree_export(<span class="hljs-keyword">model</span>, <span class="hljs-string">&quot;-type javascript&quot;</span>, <span class="hljs-built_in">array</span>(<span class="hljs-string">&apos;sepal_length&apos;</span>,<span class="hljs-string">&apos;sepal_width&apos;</span>,<span class="hljs-string">&apos;petal_length&apos;</span>,<span class="hljs-string">&apos;petak_width&apos;</span>), <span class="hljs-built_in">array</span>(<span class="hljs-string">&apos;Setosa&apos;</span>,<span class="hljs-string">&apos;Versicolour&apos;</span>,<span class="hljs-string">&apos;Virginica&apos;</span>)) <span class="hljs-keyword">as</span> js,
tree_export(<span class="hljs-keyword">model</span>, <span class="hljs-string">&quot;-type graphviz&quot;</span>, <span class="hljs-built_in">array</span>(<span class="hljs-string">&apos;sepal_length&apos;</span>,<span class="hljs-string">&apos;sepal_width&apos;</span>,<span class="hljs-string">&apos;petal_length&apos;</span>,<span class="hljs-string">&apos;petak_width&apos;</span>), <span class="hljs-built_in">array</span>(<span class="hljs-string">&apos;Setosa&apos;</span>,<span class="hljs-string">&apos;Versicolour&apos;</span>,<span class="hljs-string">&apos;Virginica&apos;</span>)) <span class="hljs-keyword">as</span> dot
<span class="hljs-keyword">from</span>
<span class="hljs-keyword">model</span>
<span class="hljs-comment">-- limit 1</span>
;
</code></pre>
<pre><code>digraph Tree {
node [shape=box, style=&quot;filled, rounded&quot;, color=&quot;black&quot;, fontname=helvetica];
edge [fontname=helvetica];
0 [label=&lt;petal_length &amp;le; 2.599999964237213&gt;, fillcolor=&quot;#00000000&quot;];
1 [label=&lt;predicted = Setosa&gt;, fillcolor=&quot;0.0000,1.000,1.000&quot;, shape=ellipse];
0 -&gt; 1 [labeldistance=2.5, labelangle=45, headlabel=&quot;True&quot;];
2 [label=&lt;petal_length &amp;le; 4.950000047683716&gt;, fillcolor=&quot;#00000000&quot;];
0 -&gt; 2 [labeldistance=2.5, labelangle=-45, headlabel=&quot;False&quot;];
3 [label=&lt;petak_width &amp;le; 1.6500000357627869&gt;, fillcolor=&quot;#00000000&quot;];
2 -&gt; 3;
4 [label=&lt;predicted = Versicolour&gt;, fillcolor=&quot;0.3333,1.000,1.000&quot;, shape=ellipse];
3 -&gt; 4;
5 [label=&lt;sepal_width &amp;le; 3.100000023841858&gt;, fillcolor=&quot;#00000000&quot;];
3 -&gt; 5;
6 [label=&lt;predicted = Virginica&gt;, fillcolor=&quot;0.6667,1.000,1.000&quot;, shape=ellipse];
5 -&gt; 6;
7 [label=&lt;predicted = Versicolour&gt;, fillcolor=&quot;0.3333,1.000,1.000&quot;, shape=ellipse];
5 -&gt; 7;
8 [label=&lt;petak_width &amp;le; 1.75&gt;, fillcolor=&quot;#00000000&quot;];
2 -&gt; 8;
9 [label=&lt;petal_length &amp;le; 5.299999952316284&gt;, fillcolor=&quot;#00000000&quot;];
8 -&gt; 9;
10 [label=&lt;predicted = Versicolour&gt;, fillcolor=&quot;0.3333,1.000,1.000&quot;, shape=ellipse];
9 -&gt; 10;
11 [label=&lt;predicted = Virginica&gt;, fillcolor=&quot;0.6667,1.000,1.000&quot;, shape=ellipse];
9 -&gt; 11;
12 [label=&lt;predicted = Virginica&gt;, fillcolor=&quot;0.6667,1.000,1.000&quot;, shape=ellipse];
8 -&gt; 12;
}
</code></pre><p><img src="../resources/images/iris.png" alt="Iris Graphviz output"></p>
<p>You can draw a graph by <code>dot -Tpng iris.dot -o iris.png</code> or using <a href="https://viz-js.com/" target="_blank">Viz.js</a>.</p>
<p><div id="page-footer" class="localized-footer"><hr><!--
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.
-->
<p><sub><font color="gray">
Apache Hivemall is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator.
</font></sub></p>
</div></p>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Random Forest","level":"7.2.3","depth":2,"next":{"title":"XGBoost","level":"7.2.4","depth":2,"path":"multiclass/iris_xgboost.md","ref":"multiclass/iris_xgboost.md","articles":[]},"previous":{"title":"SCW","level":"7.2.2","depth":2,"path":"multiclass/iris_scw.md","ref":"multiclass/iris_scw.md","articles":[]},"dir":"ltr"},"config":{"plugins":["theme-api","edit-link","github","splitter","etoc","callouts","toggle-chapters","anchorjs","codeblock-filename","expandable-chapters","multipart","codeblock-filename","katex","emphasize","localized-footer"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"emphasize":{},"callouts":{},"etoc":{"h2lb":3,"header":1,"maxdepth":3,"mindepth":1,"notoc":true},"github":{"url":"https://github.com/apache/incubator-hivemall/"},"splitter":{},"search":{},"downloadpdf":{"base":"https://github.com/apache/incubator-hivemall/docs/gitbook","label":"PDF","multilingual":false},"multipart":{},"localized-footer":{"filename":"FOOTER.md","hline":"true"},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"katex":{},"fontsettings":{"theme":"white","family":"sans","size":2,"font":"sans"},"highlight":{},"codeblock-filename":{},"theme-api":{"languages":[],"split":false,"theme":"dark"},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"edit-link":{"label":"Edit","base":"https://github.com/apache/incubator-hivemall/tree/master/docs/gitbook"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":true},"anchorjs":{"selector":"h1,h2,h3,*:not(.callout) > h4,h5"},"toggle-chapters":{},"expandable-chapters":{}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Hivemall User Manual","links":{"sidebar":{"<i class=\"fa fa-home\"></i> Home":"https://hivemall.incubator.apache.org/"}},"gitbook":"3.x.x","description":"User Manual for Apache Hivemall"},"file":{"path":"multiclass/iris_randomforest.md","mtime":"2021-04-22T11:42:38.148Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2021-04-22T11:56:59.644Z"},"basePath":"..","book":{"language":""}});
});
</script>
</div>
<script src="../gitbook/gitbook.js"></script>
<script src="../gitbook/theme.js"></script>
<script src="../gitbook/gitbook-plugin-edit-link/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-github/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="../gitbook/gitbook-plugin-etoc/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-toggle-chapters/toggle.js"></script>
<script src="../gitbook/gitbook-plugin-anchorjs/anchor.min.js"></script>
<script src="../gitbook/gitbook-plugin-anchorjs/anchor-style.js"></script>
<script src="../gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.js"></script>
<script src="../gitbook/gitbook-plugin-search/search-engine.js"></script>
<script src="../gitbook/gitbook-plugin-search/search.js"></script>
<script src="../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
<script src="../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
<script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
<script src="../gitbook/gitbook-plugin-theme-api/theme-api.js"></script>
</body>
</html>