http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/734e6fcd/machinelearning/dimensionalityreduction/index.html
----------------------------------------------------------------------
diff --git a/machinelearning/dimensionalityreduction/index.html 
b/machinelearning/dimensionalityreduction/index.html
index 73f7c81..7451875 100644
--- a/machinelearning/dimensionalityreduction/index.html
+++ b/machinelearning/dimensionalityreduction/index.html
@@ -1,26 +1,4 @@
-<!DOCTYPE html><html><head><title>Dimensionality Reduction With 
PredictionIO</title><meta charset="utf-8"/><meta content="IE=edge,chrome=1" 
http-equiv="X-UA-Compatible"/><meta name="viewport" 
content="width=device-width, initial-scale=1.0"/><meta class="swiftype" 
name="title" data-type="string" content="Dimensionality Reduction With 
PredictionIO"/><link rel="canonical" 
href="https://docs.prediction.io/machinelearning/dimensionalityreduction/"/><link
 href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link 
href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link 
href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
 rel="stylesheet"/><link 
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" 
rel="stylesheet"/><link href="/stylesheets/application-3598c7d7.css" 
rel="stylesheet" type="text/css"/><!--[if lt IE 9]><script 
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7
 .2/html5shiv.min.js"></script><![endif]--><script 
src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-ga('create', 'UA-38306178-1', 'auto');
-ga('require', 'linkid', 'linkid.js');
-ga('send', 'pageview');</script><script>!function(){var 
analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment
 snippet included 
twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return
 function(){var 
e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return 
analytics}};for(var t=0;t<analytics.methods.length;t++){var 
e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var
 
e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://";)+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var
 
n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.0.1";
-  analytics.load("YlF3updaI3DR96hnNgSGpR3PPBUGDzt8");
-  analytics.page()
-  
}}();</script><script>RCX_CUSTOM_LIB="https://cdn.recontext.com/staging/rcx.min.js";;
-(function(b,d,a){b.RCX_OBJECT=a;a=b[a]||[];if(!a.snipV&&!a.libV){b.rcx=a;a.snipV="0.2.0";var
 
g=function(a,b,c,d){a[b]=a[b]||function(){c.push([d].concat(Array.prototype.slice.call(arguments)))}};b="init
 page track identify link setUserProperty unsetUserProperty".split(" ");for(var 
f=0;f<b.length;f++){var 
e,c;e=b[f];c=e.split(".");2==c.length?(a[c[0]]=a[c[0]]||[],g(a[c[0]],c[1],a,e)):g(a,e,a,e)}a=d.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof
 RCX_CUSTOM_LIB?
-RCX_CUSTOM_LIB:"https://cdn.recontext.com/rcx.min.js";d=d.getElementsByTagName("script")[0];d.parentNode.insertBefore(a,d)}})(window,document,"rcx");
-rcx.init("kTxFcI3IWdXYfRsh6uuYuej4qYl8m8LVMePM2hdIkM9YjHqkAFC6mqdqO9fpp8p9");
-rcx.page();</script><script>function t(e){analytics.identify(e); 
analytics.track("newsletter signup");
-  rcx.track("newsletter signup", { '_email': e 
});}</script><script>!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
-n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
-n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
-t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
-document,'script','//connect.facebook.net/en_US/fbevents.js');
-
-fbq('init', '1073028432707778');
-fbq('track', "PageView");</script><script 
src="//use.typekit.net/mut4mjx.js"></script><script>try{Typekit.load();}catch(e){}</script></head><body><div
 id="global"><header><div class="container" id="header-wrapper"><div 
class="row"><div class="col-sm-12"><div id="logo-wrapper"><span 
id="drawer-toggle"></span><a href="#"></a><a href="http://prediction.io/";><img 
alt="PredictionIO" id="logo" 
src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div 
id="header-nav-options-wrapper"><ul><li><a href="/">Install & Doc</a></li> 
<li><a href="/support">Support</a></li> </ul></div><div id="pill-wrapper"><a 
class="pill left" href="//templates.prediction.io/">TEMPLATES</a> <a 
class="pill right" href="//github.com/PredictionIO/PredictionIO/">OPEN 
SOURCE</a></div></div><img class="mobile-search-bar-toggler hidden-md 
hidden-lg" 
src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div 
id="search-bar-row-wrapper"><div class="container-fluid" id="search-bar-row">
 <div class="row"><div class="col-md-9 col-sm-11 col-xs-11"><div 
class="hidden-md hidden-lg" id="mobile-page-heading-wrapper"><p>PredictionIO 
Docs</p><h4>Dimensionality Reduction With PredictionIO</h4></div><h4 
class="hidden-sm hidden-xs">PredictionIO Docs</h4></div><div class="col-md-3 
col-sm-1 col-xs-1 hidden-md hidden-lg"><img id="left-menu-indicator" 
src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3 
col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form 
class="search-form"><img class="search-box-toggler hidden-xs hidden-sm" 
src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img 
src="/images/icons/search-glass-704bd4ff.png"/><input type="text" 
id="st-search-input" class="st-search-input" placeholder="Search 
Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg" 
src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div 
class="mobile-left-menu-toggler hidden-md hidden-lg"></div></div></div></div><
 div id="page" class="container-fluid"><div class="row"><div 
id="left-menu-wrapper" class="col-md-3"><nav id="nav-main"><ul><li 
class="level-1"><a class="expandible" href="/"><span>Apache PredictionIO 
(incubating) Documentation</span></a><ul><li class="level-2"><a class="final" 
href="/"><span>Welcome to Apache PredictionIO 
(incubating)</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting Started</span></a><ul><li class="level-2"><a 
class="final" href="/start/"><span>A Quick Intro</span></a></li><li 
class="level-2"><a class="final" href="/install/"><span>Installing Apache 
PredictionIO (incubating)</span></a></li><li class="level-2"><a class="final" 
href="/start/download/"><span>Downloading an Engine Template</span></a></li><li 
class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your 
First Engine</span></a></li><li class="level-2"><a class="final" 
href="/start/customize/"><span>Customizing the 
Engine</span></a></li></ul></li><li c
 lass="level-1"><a class="expandible" href="#"><span>Integrating with Your 
App</span></a><ul><li class="level-2"><a class="final" 
href="/appintegration/"><span>App Integration Overview</span></a></li><li 
class="level-2"><a class="expandible" href="/sdk/"><span>List of 
SDKs</span></a><ul><li class="level-3"><a class="final" 
href="/sdk/java/"><span>Java & Android SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/php/"><span>PHP 
SDK</span></a></li><li class="level-3"><a class="final" 
href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a 
class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered 
SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li 
class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web 
Service</span></a></li><li class="level-2"><a class="final" href=
 "/cli/#engine-commands"><span>Engine Command-line Interface</span></a></li><li 
class="level-2"><a class="final" href="/deploy/engineparams/"><span>Setting 
Engine Parameters</span></a></li><li class="level-2"><a class="final" 
href="/deploy/enginevariants/"><span>Deploying Multiple Engine 
Variants</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Customizing an Engine</span></a><ul><li class="level-2"><a 
class="final" href="/customize/"><span>Learning DASE</span></a></li><li 
class="level-2"><a class="final" href="/customize/dase/"><span>Implement 
DASE</span></a></li><li class="level-2"><a class="final" 
href="/customize/troubleshooting/"><span>Troubleshooting Engine 
Development</span></a></li><li class="level-2"><a class="final" 
href="/api/current/#package"><span>Engine Scala 
APIs</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Collecting and Analyzing Data</span></a><ul><li 
class="level-2"><a class="final" href="/dataco
 llection/"><span>Event Server Overview</span></a></li><li class="level-2"><a 
class="final" href="/cli/#event-server-commands"><span>Event Server 
Command-line Interface</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/eventapi/"><span>Collecting Data with 
REST/SDKs</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/webhooks/"><span>Unifying Multichannel Data with 
Webhooks</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/channel/"><span>Channel</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/batchimport/"><span>Importing Data in 
Batch</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/analytics/"><span>Using Analytics 
Tools</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Choosing an Algorithm(s)</span></a><ul><li class="leve
 l-2"><a class="final" href="/algorithm/"><span>Built-in Algorithm 
Libraries</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/switch/"><span>Switching to Another 
Algorithm</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/multiple/"><span>Combining Multiple 
Algorithms</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/custom/"><span>Adding Your Own 
Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>ML Tuning and Evaluation</span></a><ul><li class="level-2"><a 
class="final" href="/evaluation/"><span>Overview</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/evaluationdashboard/"><span>Evaluation 
Dashboard</span></a></li><li class="level-2"><a class="final" 
href="/evaluation/metricchoose/"><span>Choosing Evaluation 
Metrics</span></a></li><li class="level-2"><
 a class="final" href="/evaluation/metricbuild/"><span>Building Evaluation 
Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>System Architecture</span></a><ul><li class="level-2"><a 
class="final" href="/system/"><span>Architecture Overview</span></a></li><li 
class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using 
Another Data Store</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li 
class="level-2"><a class="final" 
href="http://templates.prediction.io";><span>Browse</span></a></li><li 
class="level-2"><a class="final" 
href="/community/submit-template/"><span>Submit your Engine as a 
Template</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Demo Tutorials</span></a><ul><li class="level-2"><a 
class="final" href="/demo/tapster/"><span>Comics Recommendation 
Demo</span></a></li><li class="level-2"><a class="final" href="/demo/c
 ommunity/"><span>Community Contributed Demo</span></a></li><li 
class="level-2"><a class="final" href="/demo/textclassification/"><span>Text 
Classification Engine Tutorial</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="/community/"><span>Getting Involved</span></a><ul><li 
class="level-2"><a class="final" 
href="/community/contribute-code/"><span>Contribute Code</span></a></li><li 
class="level-2"><a class="final" 
href="/community/contribute-documentation/"><span>Contribute 
Documentation</span></a></li><li class="level-2"><a class="final" 
href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li 
class="level-2"><a class="final" 
href="/community/contribute-webhook/"><span>Contribute a 
Webhook</span></a></li><li class="level-2"><a class="final" 
href="/community/projects/"><span>Community 
Projects</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting Help</span></a><ul><li class="level-2"><a class="final" 
href=
 "/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a 
class="final" href="/support/"><span>Community Support</span></a></li><li 
class="level-2"><a class="final" 
href="/support/#enterprise-support"><span>Enterprise 
Support</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final" 
href="/resources/intellij/"><span>Developing Engines with IntelliJ 
IDEA</span></a></li><li class="level-2"><a class="final" 
href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li 
class="level-2"><a class="final" 
href="/resources/glossary/"><span>Glossary</span></a></li></ul></li></ul></nav></div><div
 class="col-md-9 col-sm-12"><div class="content-header hidden-md 
hidden-lg"><div id="page-title"><h1>Dimensionality Reduction With 
PredictionIO</h1></div></div><div id="table-of-content-wrapper"><h5>On this 
page</h5><aside id="table-of-contents"><ul> <li> <a href="#data-example">Data 
Example</a> </l
 i> <li> <a href="#principal-component-analysis">Principal Component 
Analysis</a> </li> <li> <a href="#modifying-the-engine-template">Modifying the 
Engine Template</a> </li> <li> <a href="#testing-the-engine">Testing the 
Engine</a> </li> </ul> </aside><hr/><a id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/machinelearning/dimensionalityreduction.html.md";><img
 src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div 
class="content-header hidden-sm hidden-xs"><div 
id="page-title"><h1>Dimensionality Reduction With 
PredictionIO</h1></div></div><div class="content"><p>The purpose of this guide 
is to teach developers how to incorporate &quot;dimensionality reduction&quot; 
into a PredictionIO engine <a 
href="https://en.wikipedia.org/wiki/Principal_component_analysis";>Principal 
Component Analysis</a> (PCA) on the <a 
href="https://www.kaggle.com/c/digit-recognizer";>MNIST digit recognition 
dataset</a>. To do this, you
  will be modifying the PredictionIO <a 
href="http://templates.prediction.io/PredictionIO/template-scala-parallel-classification";>classification
 engine template</a>. This guide will demonstrate how to import the specific 
data set in batch, and also how to change the engine components in order to 
incorporate the new sample data and implement PCA.</p><p>In machine learning, 
specifically in <a 
href="http://en.wikipedia.org/wiki/Supervised_learning";>supervised 
learning</a>, the general problem at hand is to predict a numeric outcome \(y\) 
from a numeric vector \(\bf{x}\). The different components of \(\bf{x}\) are 
called <strong>features</strong>, and usually represent observed values such as 
a hospital patient&#39;s age, weight, height, sex, etc. There are subtle issues 
that begin to arise as the number of features contained in each feature vector 
increases. We briefly list some of the issues that arise as the number of 
features grows in size:</p> <ul> <li><p><strong>Computation:</stron
 g> The time complexity of machine learning algorithms often times depends on 
the number of features used. That is, the more features one uses for 
prediction, the more time it takes to train a model.</p></li> 
<li><p><strong>Prediction Performance:</strong> Often times there will be 
features that, when used in training, will actually decrease the predictive 
performance of a particular algorithm. </p></li> <li><p><strong>Curse of 
Dimensionality:</strong> It is harder to make inference and predictions in high 
dimensional spaces simply due to the fact that we need to sample a lot more 
observations. Think about it in this way, suppose that we sample 100 points 
lying on a flat solid square, and 100 points in a solid cube. The 100 points 
from the square will likely take up a larger proportion of its area, in 
comparison to the proportion of the cube&#39;s volume that the points sampled 
from it occupy. Hence we would need to sample more points from the cube in 
order to get better estimates of
  the different properties of the cube, such as height, length, and width. This 
is shown in the following figure:</p></li> </ul> <table><thead> <tr> <th>100 
Points Sampled From Unit Square</th> <th>100 Points Sampled From Unit Cube</th> 
</tr> </thead><tbody> <tr> <td></td> <td></td> </tr> <tr> <td><img alt="Square 
Samples" 
src="/images/machinelearning/featureselection/square100-df83c1ae.png"/></td> 
<td><img alt="Cube Samples" 
src="/images/machinelearning/featureselection/cube100-a8fe5433.png"/></td> 
</tr> <tr> <td></td> <td></td> </tr> </tbody></table> <p>Dimensionality 
reduction is the process of applying a transformation to your feature vectors 
in order to produce a vector with the same or less number of features. 
Principal component Analysis (PCA) is a technique for dimensionality reduction. 
This can be treated as a data processing technique, and so with respect to the 
<a href="/customize/">DASE</a> framework, it will fall into the Data Preparator 
engine component. </p><p>This gui
 de will also help to solidify the concept of taking an engine template and 
customizing it for a particular use case: hand-written numeric digit 
recognition.</p><h2 id='data-example' class='header-anchors'>Data 
Example</h2><p>As a guiding example, a base data set, the <a 
href="https://www.kaggle.com/c/digit-recognizer/data";>MNIST digit recognition 
dataset</a>, is used. This is a perfect data set for dimensionality reduction, 
for, in this data set, the features that will be used for learning are pixel 
entries in a \(28 \times 28\) pixel image. There is really no direct 
interpretation of any one feature, so that you do not lose anything in applying 
a transformation that will treat the features as <a 
href="https://en.wikipedia.org/wiki/Linear_combination";>linear combinations</a> 
of some set &quot;convenient&quot; vectors. </p><p>Now, we first pull the <a 
href="http://templates.prediction.io/PredictionIO/template-scala-parallel-classification";>classification
 engine template</a> via the f
 ollowing bash line</p><div class="highlight shell"><table 
style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: 
right"><pre class="lineno">1</pre></td><td class="code"><pre>pio template get 
PredictionIO/template-scala-parallel-classification &lt;Your new engine 
directory&gt;
+<!DOCTYPE html><html><head><title>Dimensionality Reduction With 
PredictionIO</title><meta charset="utf-8"/><meta content="IE=edge,chrome=1" 
http-equiv="X-UA-Compatible"/><meta name="viewport" 
content="width=device-width, initial-scale=1.0"/><meta class="swiftype" 
name="title" data-type="string" content="Dimensionality Reduction With 
PredictionIO"/><link rel="canonical" 
href="https://docs.prediction.io/machinelearning/dimensionalityreduction/"/><link
 href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link 
href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link 
href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
 rel="stylesheet"/><link 
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" 
rel="stylesheet"/><link href="/stylesheets/application-3598c7d7.css" 
rel="stylesheet" type="text/css"/><script 
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.
 js"></script><script 
src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script
 src="//use.typekit.net/pqo0itb.js"></script><script>try{Typekit.load({ async: 
true });}catch(e){}</script></head><body><div id="global"><header><div 
class="container" id="header-wrapper"><div class="row"><div 
class="col-sm-12"><div id="logo-wrapper"><span id="drawer-toggle"></span><a 
href="#"></a><a href="http://predictionio.incubator.apache.org/";><img 
alt="PredictionIO" id="logo" 
src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div 
id="header-nav-options-wrapper"><ul><li><a href="/">Install & Doc</a></li> 
<li><a href="/support">Support</a></li> </ul></div><div id="pill-wrapper"><a 
class="pill left" href="//templates.prediction.io/">TEMPLATES</a> <a 
class="pill right" href="//github.com/apache/incubator-predictionio/">OPEN 
SOURCE</a></div></div><img class="mobile-search-bar-toggler hidden-md 
hidden-lg" src="/images/icons/search-glass-704bd4ff.p
 ng"/></div></div></div></header><div id="search-bar-row-wrapper"><div 
class="container-fluid" id="search-bar-row"><div class="row"><div 
class="col-md-9 col-sm-11 col-xs-11"><div class="hidden-md hidden-lg" 
id="mobile-page-heading-wrapper"><p>PredictionIO Docs</p><h4>Dimensionality 
Reduction With PredictionIO</h4></div><h4 class="hidden-sm 
hidden-xs">PredictionIO Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1 
hidden-md hidden-lg"><img id="left-menu-indicator" 
src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3 
col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form 
class="search-form"><img class="search-box-toggler hidden-xs hidden-sm" 
src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img 
src="/images/icons/search-glass-704bd4ff.png"/><input type="text" 
id="st-search-input" class="st-search-input" placeholder="Search 
Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg" 
src="/images/icons/drawer-toggle-active-fcb
 ef12a.png"/></form></div></div><div class="mobile-left-menu-toggler hidden-md 
hidden-lg"></div></div></div></div><div id="page" class="container-fluid"><div 
class="row"><div id="left-menu-wrapper" class="col-md-3"><nav 
id="nav-main"><ul><li class="level-1"><a class="expandible" 
href="/"><span>Apache PredictionIO (incubating) Documentation</span></a><ul><li 
class="level-2"><a class="final" href="/"><span>Welcome to Apache PredictionIO 
(incubating)</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting Started</span></a><ul><li class="level-2"><a 
class="final" href="/start/"><span>A Quick Intro</span></a></li><li 
class="level-2"><a class="final" href="/install/"><span>Installing Apache 
PredictionIO (incubating)</span></a></li><li class="level-2"><a class="final" 
href="/start/download/"><span>Downloading an Engine Template</span></a></li><li 
class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your 
First Engine</span></a></li><li cla
 ss="level-2"><a class="final" href="/start/customize/"><span>Customizing the 
Engine</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Integrating with Your App</span></a><ul><li class="level-2"><a 
class="final" href="/appintegration/"><span>App Integration 
Overview</span></a></li><li class="level-2"><a class="expandible" 
href="/sdk/"><span>List of SDKs</span></a><ul><li class="level-3"><a 
class="final" href="/sdk/java/"><span>Java & Android SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/php/"><span>PHP 
SDK</span></a></li><li class="level-3"><a class="final" 
href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a 
class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered 
SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li 
class="level-2"><a class=
 "final" href="/deploy/"><span>Deploying as a Web Service</span></a></li><li 
class="level-2"><a class="final" href="/cli/#engine-commands"><span>Engine 
Command-line Interface</span></a></li><li class="level-2"><a class="final" 
href="/deploy/engineparams/"><span>Setting Engine Parameters</span></a></li><li 
class="level-2"><a class="final" href="/deploy/enginevariants/"><span>Deploying 
Multiple Engine Variants</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Customizing an Engine</span></a><ul><li 
class="level-2"><a class="final" href="/customize/"><span>Learning 
DASE</span></a></li><li class="level-2"><a class="final" 
href="/customize/dase/"><span>Implement DASE</span></a></li><li 
class="level-2"><a class="final" 
href="/customize/troubleshooting/"><span>Troubleshooting Engine 
Development</span></a></li><li class="level-2"><a class="final" 
href="/api/current/#package"><span>Engine Scala 
APIs</span></a></li></ul></li><li class="level-1"><a class="expandi
 ble" href="#"><span>Collecting and Analyzing Data</span></a><ul><li 
class="level-2"><a class="final" href="/datacollection/"><span>Event Server 
Overview</span></a></li><li class="level-2"><a class="final" 
href="/cli/#event-server-commands"><span>Event Server Command-line 
Interface</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/eventapi/"><span>Collecting Data with 
REST/SDKs</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/webhooks/"><span>Unifying Multichannel Data with 
Webhooks</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/channel/"><span>Channel</span></a></li><li 
class="level-2"><a class="final" 
href="/datacollection/batchimport/"><span>Importing Data in 
Batch</span></a></li><li class="level-2"><a class="final" 
href="/datacollection/analytics/"><span>Using Analytics 
Tools</span></a></li></ul></
 li><li class="level-1"><a class="expandible" href="#"><span>Choosing an 
Algorithm(s)</span></a><ul><li class="level-2"><a class="final" 
href="/algorithm/"><span>Built-in Algorithm Libraries</span></a></li><li 
class="level-2"><a class="final" href="/algorithm/switch/"><span>Switching to 
Another Algorithm</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/multiple/"><span>Combining Multiple 
Algorithms</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/custom/"><span>Adding Your Own 
Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>ML Tuning and Evaluation</span></a><ul><li class="level-2"><a 
class="final" href="/evaluation/"><span>Overview</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/evaluationdashboard/"><span>Evaluation 
Dashboard</span></a></li><li class="level-2"><a cla
 ss="final" href="/evaluation/metricchoose/"><span>Choosing Evaluation 
Metrics</span></a></li><li class="level-2"><a class="final" 
href="/evaluation/metricbuild/"><span>Building Evaluation 
Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>System Architecture</span></a><ul><li class="level-2"><a 
class="final" href="/system/"><span>Architecture Overview</span></a></li><li 
class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using 
Another Data Store</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li 
class="level-2"><a class="final" 
href="http://templates.prediction.io";><span>Browse</span></a></li><li 
class="level-2"><a class="final" 
href="/community/submit-template/"><span>Submit your Engine as a 
Template</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Demo Tutorials</span></a><ul><li class="level-2"><a 
class="final" href="
 /demo/tapster/"><span>Comics Recommendation Demo</span></a></li><li 
class="level-2"><a class="final" href="/demo/community/"><span>Community 
Contributed Demo</span></a></li><li class="level-2"><a class="final" 
href="/demo/textclassification/"><span>Text Classification Engine 
Tutorial</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="/community/"><span>Getting Involved</span></a><ul><li class="level-2"><a 
class="final" href="/community/contribute-code/"><span>Contribute 
Code</span></a></li><li class="level-2"><a class="final" 
href="/community/contribute-documentation/"><span>Contribute 
Documentation</span></a></li><li class="level-2"><a class="final" 
href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li 
class="level-2"><a class="final" 
href="/community/contribute-webhook/"><span>Contribute a 
Webhook</span></a></li><li class="level-2"><a class="final" 
href="/community/projects/"><span>Community 
Projects</span></a></li></ul></li><li class="l
 evel-1"><a class="expandible" href="#"><span>Getting Help</span></a><ul><li 
class="level-2"><a class="final" 
href="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a 
class="final" href="/support/"><span>Community Support</span></a></li><li 
class="level-2"><a class="final" 
href="/support/#enterprise-support"><span>Enterprise 
Support</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final" 
href="/resources/intellij/"><span>Developing Engines with IntelliJ 
IDEA</span></a></li><li class="level-2"><a class="final" 
href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li 
class="level-2"><a class="final" 
href="/resources/glossary/"><span>Glossary</span></a></li></ul></li></ul></nav></div><div
 class="col-md-9 col-sm-12"><div class="content-header hidden-md 
hidden-lg"><div id="page-title"><h1>Dimensionality Reduction With 
PredictionIO</h1></div></div><div id="table-of-content-
 wrapper"><h5>On this page</h5><aside id="table-of-contents"><ul> <li> <a 
href="#data-example">Data Example</a> </li> <li> <a 
href="#principal-component-analysis">Principal Component Analysis</a> </li> 
<li> <a href="#modifying-the-engine-template">Modifying the Engine Template</a> 
</li> <li> <a href="#testing-the-engine">Testing the Engine</a> </li> </ul> 
</aside><hr/><a id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/machinelearning/dimensionalityreduction.html.md";><img
 src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div 
class="content-header hidden-sm hidden-xs"><div 
id="page-title"><h1>Dimensionality Reduction With 
PredictionIO</h1></div></div><div class="content"><p>The purpose of this guide 
is to teach developers how to incorporate &quot;dimensionality reduction&quot; 
into a PredictionIO engine <a 
href="https://en.wikipedia.org/wiki/Principal_component_analysis";>Principal 
Component Analysis</a> (PC
 A) on the <a href="https://www.kaggle.com/c/digit-recognizer";>MNIST digit 
recognition dataset</a>. To do this, you will be modifying the PredictionIO <a 
href="http://templates.prediction.io/PredictionIO/template-scala-parallel-classification";>classification
 engine template</a>. This guide will demonstrate how to import the specific 
data set in batch, and also how to change the engine components in order to 
incorporate the new sample data and implement PCA.</p><p>In machine learning, 
specifically in <a 
href="http://en.wikipedia.org/wiki/Supervised_learning";>supervised 
learning</a>, the general problem at hand is to predict a numeric outcome \(y\) 
from a numeric vector \(\bf{x}\). The different components of \(\bf{x}\) are 
called <strong>features</strong>, and usually represent observed values such as 
a hospital patient&#39;s age, weight, height, sex, etc. There are subtle issues 
that begin to arise as the number of features contained in each feature vector 
increases. We briefly list 
 some of the issues that arise as the number of features grows in size:</p> 
<ul> <li><p><strong>Computation:</strong> The time complexity of machine 
learning algorithms often times depends on the number of features used. That 
is, the more features one uses for prediction, the more time it takes to train 
a model.</p></li> <li><p><strong>Prediction Performance:</strong> Often times 
there will be features that, when used in training, will actually decrease the 
predictive performance of a particular algorithm. </p></li> 
<li><p><strong>Curse of Dimensionality:</strong> It is harder to make inference 
and predictions in high dimensional spaces simply due to the fact that we need 
to sample a lot more observations. Think about it in this way, suppose that we 
sample 100 points lying on a flat solid square, and 100 points in a solid cube. 
The 100 points from the square will likely take up a larger proportion of its 
area, in comparison to the proportion of the cube&#39;s volume that the points s
 ampled from it occupy. Hence we would need to sample more points from the cube 
in order to get better estimates of the different properties of the cube, such 
as height, length, and width. This is shown in the following figure:</p></li> 
</ul> <table><thead> <tr> <th>100 Points Sampled From Unit Square</th> <th>100 
Points Sampled From Unit Cube</th> </tr> </thead><tbody> <tr> <td></td> 
<td></td> </tr> <tr> <td><img alt="Square Samples" 
src="/images/machinelearning/featureselection/square100-df83c1ae.png"/></td> 
<td><img alt="Cube Samples" 
src="/images/machinelearning/featureselection/cube100-a8fe5433.png"/></td> 
</tr> <tr> <td></td> <td></td> </tr> </tbody></table> <p>Dimensionality 
reduction is the process of applying a transformation to your feature vectors 
in order to produce a vector with the same or less number of features. 
Principal component Analysis (PCA) is a technique for dimensionality reduction. 
This can be treated as a data processing technique, and so with respect to the
  <a href="/customize/">DASE</a> framework, it will fall into the Data 
Preparator engine component. </p><p>This guide will also help to solidify the 
concept of taking an engine template and customizing it for a particular use 
case: hand-written numeric digit recognition.</p><h2 id='data-example' 
class='header-anchors'>Data Example</h2><p>As a guiding example, a base data 
set, the <a href="https://www.kaggle.com/c/digit-recognizer/data";>MNIST digit 
recognition dataset</a>, is used. This is a perfect data set for dimensionality 
reduction, for, in this data set, the features that will be used for learning 
are pixel entries in a \(28 \times 28\) pixel image. There is really no direct 
interpretation of any one feature, so that you do not lose anything in applying 
a transformation that will treat the features as <a 
href="https://en.wikipedia.org/wiki/Linear_combination";>linear combinations</a> 
of some set &quot;convenient&quot; vectors. </p><p>Now, we first pull the <a 
href="http://templat
 
es.prediction.io/PredictionIO/template-scala-parallel-classification">classification
 engine template</a> via the following bash line</p><div class="highlight 
shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" 
style="text-align: right"><pre class="lineno">1</pre></td><td 
class="code"><pre>pio template get 
PredictionIO/template-scala-parallel-classification &lt;Your new engine 
directory&gt;
 </pre></td></tr></tbody></table> </div> <p>You should immediately be prompted 
with the following message:</p><div class="highlight shell"><table 
style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: 
right"><pre class="lineno">1</pre></td><td class="code"><pre>Please enter the 
template<span class="s1">'s Scala package name (e.g. com.mycompany): 
 </span></pre></td></tr></tbody></table> </div> <p>Go ahead and input 
<code>FeatureReduction</code>, and feel free to just press enter for the 
remaining message prompts. For the remainder of this guide, you will be working 
in your new engine directory, so go ahead and <code>cd</code> into your new 
engine directory. At this point, go ahead and run the command </p><div 
class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td 
class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td 
class="code"><pre>pio build
 </pre></td></tr></tbody></table> </div> <p>This will make sure that the 
PredictionIO dependency version for your project matches the version installed 
on your computer. Now, download the MNIST <code>train.csv</code> data set from 
the link above, and put this file in the <code>data</code> directory contained 
in the new engine directory. </p><h3 
id='<strong>optional</strong>:-visualizing-observations' class='header-anchors' 
><strong>Optional</strong>: Visualizing Observations</h3><p>If you want to 
actually convert the observation pixel data to an image go ahead and create a 
Python script called <code>picture_processing.py</code> into your data 
directory and copy and paste the following code into the script:</p><div 
class="highlight python"><table style="border-spacing: 0"><tbody><tr><td 
class="gutter gl" style="text-align: right"><pre class="lineno">1
@@ -756,36 +734,9 @@ pio deploy
 
 <span class="n">os</span><span class="o">.</span><span 
class="n">system</span><span class="p">(</span><span class="n">qry</span><span 
class="o">.</span><span class="n">replace</span><span class="p">(</span><span 
class="s">"..."</span><span class="p">,</span> <span class="nb">str</span><span 
class="p">(</span><span class="n">f</span><span class="p">[</span><span 
class="n">obs_num</span><span class="p">])[</span><span class="mi">1</span> 
<span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span 
class="p">]))</span>
 </pre></td></tr></tbody></table> </div> <p>In your engine directory file, you 
can now use the following line to query the engine with a test observation by 
using the command</p><div class="highlight shell"><table style="border-spacing: 
0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre 
class="lineno">1</pre></td><td class="code"><pre>python data/query.py k
-</pre></td></tr></tbody></table> </div> <p>where you replace <code>k</code> 
with a number between 0 and 27,999 (corresponds to test observations). This 
will generate the digit image first, and then immediately return the predicted 
digit for your reference.</p></div></div></div></div><footer><div 
class="container"><div class="seperator"></div><div class="row"><div 
class="col-md-4 col-md-push-8 col-xs-12"><div 
class="subscription-form-wrapper"><h4>Subscribe to our Newsletter</h4><form 
class="ajax-form" id="subscribe-form" method="POST" 
action="https://script.google.com/macros/s/AKfycbwhzeKCQJjQ52eVAqNT_vcklH07OITUO7wzOMDXvK6EGAWgaZgF/exec";><input
 class="required underlined-input" type="email" placeholder="Your email 
address" name="subscription_email" id="subscription_email"/><input 
class="pill-button" value="SUBSCRIBE" type="submit" 
data-state-normal="SUBSCRIBE" data-state-sucess="SUBSCRIBED!" 
data-state-loading="SENDING..." 
onclick="t($('#subscription_email').val());"/><p class="resu
 lt"></p></form></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a 
href="//docs.prediction.io/" target="blank">Docs</a></li><li><a 
href="//github.com/PredictionIO/PredictionIO" 
target="blank">GitHub</a></li><li><a 
href="//groups.google.com/forum/#!forum/predictionio-user" 
target="blank">Support Forum</a></li><li><a 
href="//stackoverflow.com/questions/tagged/predictionio" 
target="blank">Stackoverflow</a></li><li><a 
href="mailto:&#x73;&#x75;&#x70;&#x70;&#x6F;&#x72;&#x74;&#x40;&#x70;&#x72;&#x65;&#x64;&#x69;&#x63;&#x74;&#x69;&#x6F;&#x6E;&#x2E;&#x69;&#x6F;";
 target="blank">Contact Us</a></li></ul></div></div><div class="col-md-2 
col-md-pull-4 col-xs-6 footer-link-column"><div 
class="footer-link-column-row"><h4>Contribute</h4><ul><li><a 
href="//docs.prediction.io/community/contribute-code/" 
target="blank">Contribute</a></li><li
 ><a href="//github.com/PredictionIO/PredictionIO" target="blank">Source 
 >Code</a></li><li><a href="//predictionio.atlassian.net/secure/Dashboard.jspa" 
 >target="blank">Bug Tracker</a></li><li><a 
 >href="//groups.google.com/forum/#!forum/predictionio-dev" 
 >target="blank">Contributors&#146; Forum</a></li><li><a 
 >href="//prediction.io/cla">Contributor Agreement</a></li><li><a 
 >href="//predictionio.uservoice.com/forums/219398-general/filters/top">Request 
 >Features</a></li></ul></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 
 >footer-link-column"><div 
 >class="footer-link-column-row"><h4>Enterprise</h4><ul><li><a 
 >href="//docs.prediction.io/support/" target="blank">Support</a></li><li><a 
 >href="//prediction.io/enterprise">Enterprise</a></li><li><a 
 >href="//prediction.io/products/predictionio-enterprise">Services</a></li></ul></div><div
 > class="footer-link-column-row"><h4>Connect</h4><ul><li><a 
 >href="//blog.prediction.io/" target="blank">Blog</a></li><li><a 
 >href="//predictionio.theresumator.com/" 
 target="blank">Careers</a></li></ul></div></div><div class="col-md-2 
col-md-pull-4 col-xs-6 footer-link-column"><div 
class="footer-link-column-row"><h4>Partnership</h4><ul><li><a 
href="//prediction.io/partners/program">Partner 
Program</a></li></ul></div></div></div></div><div id="footer-bottom"><div 
class="container"><div class="row"><div class="col-md-12"><div 
id="footer-logo-wrapper"><img alt="PredictionIO" 
src="/images/logos/logo-white-d1e9c6e6.png"/></div><div 
id="social-icons-wrapper"><a class="github-button" 
href="https://github.com/PredictionIO/PredictionIO"; data-style="mega" 
data-count-href="/PredictionIO/PredictionIO/stargazers" 
data-count-api="/repos/PredictionIO/PredictionIO#stargazers_count" 
data-count-aria-label="# stargazers on GitHub" aria-label="Star 
PredictionIO/PredictionIO on GitHub">Star</a> <a class="github-button" 
href="https://github.com/PredictionIO/PredictionIO/fork"; 
data-icon="octicon-git-branch" data-style="mega" 
data-count-href="/PredictionIO/PredictionIO
 /network" data-count-api="/repos/PredictionIO/PredictionIO#forks_count" 
data-count-aria-label="# forks on GitHub" aria-label="Fork 
PredictionIO/PredictionIO on GitHub">Fork</a> <script id="github-bjs" async="" 
defer="" src="https://buttons.github.io/buttons.js";></script><a 
href="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on 
Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="//twitter.com/predictionio" target="blank"><img alt="PredictionIO on 
Facebook" src="/images/icons/facebook-5c57939c.png"/></a> 
</div></div></div></div></div></footer></div><script>(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
+</pre></td></tr></tbody></table> </div> <p>where you replace <code>k</code> 
with a number between 0 and 27,999 (corresponds to test observations). This 
will generate the digit image first, and then immediately return the predicted 
digit for your reference.</p></div></div></div></div><footer><div 
class="container"><div class="seperator"></div><div class="row"><div 
class="col-md-6 col-xs-6 footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a 
href="//docs.prediction.io/" target="blank">Docs</a></li><li><a 
href="//github.com/apache/incubator-predictionio" 
target="blank">GitHub</a></li><li><a 
href="mailto:user-subscr...@predictionio.incubator.apache.org"; 
target="blank">Subscribe to User Mailing List</a></li><li><a 
href="//stackoverflow.com/questions/tagged/predictionio" 
target="blank">Stackoverflow</a></li></ul></div></div><div class="col-md-6 
col-xs-6 footer-link-column"><div clas
 s="footer-link-column-row"><h4>Contribute</h4><ul><li><a 
href="//predictionio.incubator.apache.org/community/contribute-code/" 
target="blank">Contribute</a></li><li><a 
href="//github.com/apache/incubator-predictionio" target="blank">Source 
Code</a></li><li><a href="//issues.apache.org/jira/browse/PIO" 
target="blank">Bug Tracker</a></li><li><a 
href="mailto:dev-subscr...@predictionio.incubator.apache.org"; 
target="blank">Subscribe to Development Mailing 
List</a></li></ul></div></div></div></div><div id="footer-bottom"><div 
class="container"><div class="row"><div class="col-md-12"><div 
id="footer-logo-wrapper"><img alt="PredictionIO" 
src="/images/logos/logo-white-d1e9c6e6.png"/></div><div 
id="social-icons-wrapper"><a class="github-button" 
href="https://github.com/apache/incubator-predictionio"; data-style="mega" 
data-count-href="/apache/incubator-predictionio/stargazers" 
data-count-api="/repos/apache/incubator-predictionio#stargazers_count" 
data-count-aria-label="# stargazers on GitHub" 
 aria-label="Star apache/incubator-predictionio on GitHub">Star</a> <a 
class="github-button" 
href="https://github.com/apache/incubator-predictionio/fork"; 
data-icon="octicon-git-branch" data-style="mega" 
data-count-href="/apache/incubator-predictionio/network" 
data-count-api="/repos/apache/incubator-predictionio#forks_count" 
data-count-aria-label="# forks on GitHub" aria-label="Fork 
apache/incubator-predictionio on GitHub">Fork</a> <script id="github-bjs" 
async="" defer="" src="https://buttons.github.io/buttons.js";></script><a 
href="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on 
Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="//twitter.com/predictionio" target="blank"><img alt="PredictionIO on 
Facebook" src="/images/icons/facebook-5c57939c.png"/></a> 
</div></div></div></div></div></footer></div><script>(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
 (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
 
e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
 })(window,document,'script','//s.swiftypecdn.com/install/v1/st.js','_st');
 
-_st('install','HaUfpXXV87xoB_zzCQ45');</script><script>var _qevents = _qevents 
|| [];
-(function() {
-var elem = document.createElement('script');
-elem.src = (document.location.protocol == "https:" ? "https://secure"; : 
"http://edge";) + ".quantserve.com/quant.js";
-elem.async = true;
-elem.type = "text/javascript";
-var scpt = document.getElementsByTagName('script')[0];
-scpt.parentNode.insertBefore(elem, scpt);
-})();
-_qevents.push({
-qacct:"p-stVMxuw8H5EPX"
-});</script><noscript><div style="display:none;"><img 
src="//pixel.quantserve.com/pixel/p-stVMxuw8H5EPX.gif" border="0" height="1" 
width="1" alt="Quantcast"/></div></noscript><script>adroll_adv_id = 
"CPSSMJFFZ5DDHITC2STA54";
-adroll_pix_id = "UWX4N2WIMJADVHJGOFTM44";
-(function () {
-    var _onload = function(){
-        if (document.readyState && 
!/loaded|complete/.test(document.readyState)){setTimeout(_onload, 10);return}
-        if (!window.__adroll_loaded){__adroll_loaded=true;setTimeout(_onload, 
50);return}
-        var scr = document.createElement("script");
-        var host = (("https:" == document.location.protocol) ? 
"https://s.adroll.com"; : "http://a.adroll.com";);
-        scr.setAttribute('async', 'true');
-        scr.type = "text/javascript";
-        scr.src = host + "/j/roundtrip.js";
-        ((document.getElementsByTagName('head') || [null])[0] ||
-            
document.getElementsByTagName('script')[0].parentNode).appendChild(scr);
-    };
-    if (window.addEventListener) {window.addEventListener('load', _onload, 
false);}
-    else {window.attachEvent('onload', _onload)}
-}());</script><script 
src="/javascripts/application-5a24945b.js"></script></body></html>
\ No newline at end of file
+_st('install','HaUfpXXV87xoB_zzCQ45');</script><script 
src="/javascripts/application-5a24945b.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/734e6fcd/machinelearning/dimensionalityreduction/index.html.gz
----------------------------------------------------------------------
diff --git a/machinelearning/dimensionalityreduction/index.html.gz 
b/machinelearning/dimensionalityreduction/index.html.gz
index 1de7773..47fe228 100644
Binary files a/machinelearning/dimensionalityreduction/index.html.gz and 
b/machinelearning/dimensionalityreduction/index.html.gz differ

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/734e6fcd/machinelearning/modelingworkflow/index.html
----------------------------------------------------------------------
diff --git a/machinelearning/modelingworkflow/index.html 
b/machinelearning/modelingworkflow/index.html
index f716bd2..ddd1893 100644
--- a/machinelearning/modelingworkflow/index.html
+++ b/machinelearning/modelingworkflow/index.html
@@ -1,55 +1,6 @@
-<!DOCTYPE html><html><head><title>Modeling Workflow and DASE</title><meta 
charset="utf-8"/><meta content="IE=edge,chrome=1" 
http-equiv="X-UA-Compatible"/><meta name="viewport" 
content="width=device-width, initial-scale=1.0"/><meta class="swiftype" 
name="title" data-type="string" content="Modeling Workflow and DASE"/><link 
rel="canonical" 
href="https://docs.prediction.io/machinelearning/modelingworkflow/"/><link 
href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link 
href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link 
href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
 rel="stylesheet"/><link 
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" 
rel="stylesheet"/><link href="/stylesheets/application-3598c7d7.css" 
rel="stylesheet" type="text/css"/><!--[if lt IE 9]><script 
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script><![endif]
 --><script 
src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-ga('create', 'UA-38306178-1', 'auto');
-ga('require', 'linkid', 'linkid.js');
-ga('send', 'pageview');</script><script>!function(){var 
analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment
 snippet included 
twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return
 function(){var 
e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return 
analytics}};for(var t=0;t<analytics.methods.length;t++){var 
e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var
 
e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://";)+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var
 
n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.0.1";
-  analytics.load("YlF3updaI3DR96hnNgSGpR3PPBUGDzt8");
-  analytics.page()
-  
}}();</script><script>RCX_CUSTOM_LIB="https://cdn.recontext.com/staging/rcx.min.js";;
-(function(b,d,a){b.RCX_OBJECT=a;a=b[a]||[];if(!a.snipV&&!a.libV){b.rcx=a;a.snipV="0.2.0";var
 
g=function(a,b,c,d){a[b]=a[b]||function(){c.push([d].concat(Array.prototype.slice.call(arguments)))}};b="init
 page track identify link setUserProperty unsetUserProperty".split(" ");for(var 
f=0;f<b.length;f++){var 
e,c;e=b[f];c=e.split(".");2==c.length?(a[c[0]]=a[c[0]]||[],g(a[c[0]],c[1],a,e)):g(a,e,a,e)}a=d.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof
 RCX_CUSTOM_LIB?
-RCX_CUSTOM_LIB:"https://cdn.recontext.com/rcx.min.js";d=d.getElementsByTagName("script")[0];d.parentNode.insertBefore(a,d)}})(window,document,"rcx");
-rcx.init("kTxFcI3IWdXYfRsh6uuYuej4qYl8m8LVMePM2hdIkM9YjHqkAFC6mqdqO9fpp8p9");
-rcx.page();</script><script>function t(e){analytics.identify(e); 
analytics.track("newsletter signup");
-  rcx.track("newsletter signup", { '_email': e 
});}</script><script>!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
-n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
-n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
-t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
-document,'script','//connect.facebook.net/en_US/fbevents.js');
-
-fbq('init', '1073028432707778');
-fbq('track', "PageView");</script><script 
src="//use.typekit.net/mut4mjx.js"></script><script>try{Typekit.load();}catch(e){}</script></head><body><div
 id="global"><header><div class="container" id="header-wrapper"><div 
class="row"><div class="col-sm-12"><div id="logo-wrapper"><span 
id="drawer-toggle"></span><a href="#"></a><a href="http://prediction.io/";><img 
alt="PredictionIO" id="logo" 
src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div 
id="header-nav-options-wrapper"><ul><li><a href="/">Install & Doc</a></li> 
<li><a href="/support">Support</a></li> </ul></div><div id="pill-wrapper"><a 
class="pill left" href="//templates.prediction.io/">TEMPLATES</a> <a 
class="pill right" href="//github.com/PredictionIO/PredictionIO/">OPEN 
SOURCE</a></div></div><img class="mobile-search-bar-toggler hidden-md 
hidden-lg" 
src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div 
id="search-bar-row-wrapper"><div class="container-fluid" id="search-bar-row">
 <div class="row"><div class="col-md-9 col-sm-11 col-xs-11"><div 
class="hidden-md hidden-lg" id="mobile-page-heading-wrapper"><p>PredictionIO 
Docs</p><h4>Modeling Workflow and DASE</h4></div><h4 class="hidden-sm 
hidden-xs">PredictionIO Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1 
hidden-md hidden-lg"><img id="left-menu-indicator" 
src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3 
col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form 
class="search-form"><img class="search-box-toggler hidden-xs hidden-sm" 
src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img 
src="/images/icons/search-glass-704bd4ff.png"/><input type="text" 
id="st-search-input" class="st-search-input" placeholder="Search 
Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg" 
src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div 
class="mobile-left-menu-toggler hidden-md 
hidden-lg"></div></div></div></div><div id="page" cl
 ass="container-fluid"><div class="row"><div id="left-menu-wrapper" 
class="col-md-3"><nav id="nav-main"><ul><li class="level-1"><a 
class="expandible" href="/"><span>Apache PredictionIO (incubating) 
Documentation</span></a><ul><li class="level-2"><a class="final" 
href="/"><span>Welcome to Apache PredictionIO 
(incubating)</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting Started</span></a><ul><li class="level-2"><a 
class="final" href="/start/"><span>A Quick Intro</span></a></li><li 
class="level-2"><a class="final" href="/install/"><span>Installing Apache 
PredictionIO (incubating)</span></a></li><li class="level-2"><a class="final" 
href="/start/download/"><span>Downloading an Engine Template</span></a></li><li 
class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your 
First Engine</span></a></li><li class="level-2"><a class="final" 
href="/start/customize/"><span>Customizing the 
Engine</span></a></li></ul></li><li class="level-1"><
 a class="expandible" href="#"><span>Integrating with Your 
App</span></a><ul><li class="level-2"><a class="final" 
href="/appintegration/"><span>App Integration Overview</span></a></li><li 
class="level-2"><a class="expandible" href="/sdk/"><span>List of 
SDKs</span></a><ul><li class="level-3"><a class="final" 
href="/sdk/java/"><span>Java & Android SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/php/"><span>PHP 
SDK</span></a></li><li class="level-3"><a class="final" 
href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a 
class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered 
SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li 
class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web 
Service</span></a></li><li class="level-2"><a class="final" 
href="/cli/#engine-co
 mmands"><span>Engine Command-line Interface</span></a></li><li 
class="level-2"><a class="final" href="/deploy/engineparams/"><span>Setting 
Engine Parameters</span></a></li><li class="level-2"><a class="final" 
href="/deploy/enginevariants/"><span>Deploying Multiple Engine 
Variants</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Customizing an Engine</span></a><ul><li class="level-2"><a 
class="final" href="/customize/"><span>Learning DASE</span></a></li><li 
class="level-2"><a class="final" href="/customize/dase/"><span>Implement 
DASE</span></a></li><li class="level-2"><a class="final" 
href="/customize/troubleshooting/"><span>Troubleshooting Engine 
Development</span></a></li><li class="level-2"><a class="final" 
href="/api/current/#package"><span>Engine Scala 
APIs</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Collecting and Analyzing Data</span></a><ul><li 
class="level-2"><a class="final" href="/datacollection/"><span
 >Event Server Overview</span></a></li><li class="level-2"><a class="final" 
 >href="/cli/#event-server-commands"><span>Event Server Command-line 
 >Interface</span></a></li><li class="level-2"><a class="final" 
 >href="/datacollection/eventapi/"><span>Collecting Data with 
 >REST/SDKs</span></a></li><li class="level-2"><a class="final" 
 >href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/datacollection/webhooks/"><span>Unifying Multichannel Data with 
 >Webhooks</span></a></li><li class="level-2"><a class="final" 
 >href="/datacollection/channel/"><span>Channel</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/datacollection/batchimport/"><span>Importing Data in 
 >Batch</span></a></li><li class="level-2"><a class="final" 
 >href="/datacollection/analytics/"><span>Using Analytics 
 >Tools</span></a></li></ul></li><li class="level-1"><a class="expandible" 
 >href="#"><span>Choosing an Algorithm(s)</span></a><ul><li class="level-2"><a 
 >class="f
 inal" href="/algorithm/"><span>Built-in Algorithm Libraries</span></a></li><li 
class="level-2"><a class="final" href="/algorithm/switch/"><span>Switching to 
Another Algorithm</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/multiple/"><span>Combining Multiple 
Algorithms</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/custom/"><span>Adding Your Own 
Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>ML Tuning and Evaluation</span></a><ul><li class="level-2"><a 
class="final" href="/evaluation/"><span>Overview</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/evaluationdashboard/"><span>Evaluation 
Dashboard</span></a></li><li class="level-2"><a class="final" 
href="/evaluation/metricchoose/"><span>Choosing Evaluation 
Metrics</span></a></li><li class="level-2"><a class="final" 
 href="/evaluation/metricbuild/"><span>Building Evaluation 
Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>System Architecture</span></a><ul><li class="level-2"><a 
class="final" href="/system/"><span>Architecture Overview</span></a></li><li 
class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using 
Another Data Store</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li 
class="level-2"><a class="final" 
href="http://templates.prediction.io";><span>Browse</span></a></li><li 
class="level-2"><a class="final" 
href="/community/submit-template/"><span>Submit your Engine as a 
Template</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Demo Tutorials</span></a><ul><li class="level-2"><a 
class="final" href="/demo/tapster/"><span>Comics Recommendation 
Demo</span></a></li><li class="level-2"><a class="final" 
href="/demo/community/"><span
 >Community Contributed Demo</span></a></li><li class="level-2"><a 
 >class="final" href="/demo/textclassification/"><span>Text Classification 
 >Engine Tutorial</span></a></li></ul></li><li class="level-1"><a 
 >class="expandible" href="/community/"><span>Getting 
 >Involved</span></a><ul><li class="level-2"><a class="final" 
 >href="/community/contribute-code/"><span>Contribute Code</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/community/contribute-documentation/"><span>Contribute 
 >Documentation</span></a></li><li class="level-2"><a class="final" 
 >href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/community/contribute-webhook/"><span>Contribute a 
 >Webhook</span></a></li><li class="level-2"><a class="final" 
 >href="/community/projects/"><span>Community 
 >Projects</span></a></li></ul></li><li class="level-1"><a class="expandible" 
 >href="#"><span>Getting Help</span></a><ul><li class="level-2"><a 
 >class="final" href="/resources/faq/
 "><span>FAQs</span></a></li><li class="level-2"><a class="final" 
href="/support/"><span>Community Support</span></a></li><li class="level-2"><a 
class="final" href="/support/#enterprise-support"><span>Enterprise 
Support</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final" 
href="/resources/intellij/"><span>Developing Engines with IntelliJ 
IDEA</span></a></li><li class="level-2"><a class="final" 
href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li 
class="level-2"><a class="final" 
href="/resources/glossary/"><span>Glossary</span></a></li></ul></li></ul></nav></div><div
 class="col-md-9 col-sm-12"><div class="content-header hidden-md 
hidden-lg"><div id="page-title"><h1>Modeling Workflow and 
DASE</h1></div></div><div id="table-of-content-wrapper"><h5>On this 
page</h5><aside id="table-of-contents"><ul> <li> <a 
href="#training-the-model">Training The Model</a> </li> </ul> </aside><hr
 /><a id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/machinelearning/modelingworkflow.html.md";><img
 src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div 
class="content-header hidden-sm hidden-xs"><div id="page-title"><h1>Modeling 
Workflow and DASE</h1></div></div><div class="content"><p>In addition to the 
DASE components, we also introduce the Data Model and Training Model 
abstractions. The Data Model abstraction refers to the set of Scala classes 
dealing with the implementation of modeling choices relating to feature 
<strong>extraction</strong>, <strong>preparation</strong>, and/or 
<strong>selection</strong>. For this illustration, this only includes the 
vectorization of text and t.f.-i.d.f. processing which is entirely implemented 
in the PreparedData class. The Training Model abstraction refers to any set of 
classes that individually take in a set of feature observations and output a 
predictive model.
  This predictive model is leveraged by the Algorithm component to produce 
prediction results to queries in real-time. In the engine template, this 
abstraction is implemented in the NBModel class. <strong>Please note that these 
are conceptual abstractions that are designed to make engine development easier 
by decoupling class functionality.</strong> Keeping these abstractions in mind 
will help you in the future with debugging your code, and also make it easier 
to incorporate different modeling ideas into your engine. </p><p>The figure 
below shows a graphical representation of the engine architecture just 
described, as well as its interactions with your web/app and a provided Event 
Server:</p><p><img alt="Engine Overview" 
src="/images/demo/text_classification_template/engine_overview-27e09a89.png"/></p><h2
 id='training-the-model' class='header-anchors'>Training The Model</h2><p>This 
section will guide you through the two Training Model implementations that come 
with this engine templa
 te. Recall that the Training Model abstraction refers to an arbitrary set 
Scala Class that outputs a predictive model (i.e. implements some method that 
can be used for prediction). The general problem this engine template is 
tackling is text classification, so that our Training Model abstraction domain 
is restricted to implementations producing classifiers. In particular, the 
classification model that is implemented in this engine template is based on 
Multinomial Naive Bayes using t.f.-i.d.f. vectorized text. 
</p></div></div></div></div><footer><div class="container"><div 
class="seperator"></div><div class="row"><div class="col-md-4 col-md-push-8 
col-xs-12"><div class="subscription-form-wrapper"><h4>Subscribe to our 
Newsletter</h4><form class="ajax-form" id="subscribe-form" method="POST" 
action="https://script.google.com/macros/s/AKfycbwhzeKCQJjQ52eVAqNT_vcklH07OITUO7wzOMDXvK6EGAWgaZgF/exec";><input
 class="required underlined-input" type="email" placeholder="Your email 
address" name=
 "subscription_email" id="subscription_email"/><input class="pill-button" 
value="SUBSCRIBE" type="submit" data-state-normal="SUBSCRIBE" 
data-state-sucess="SUBSCRIBED!" data-state-loading="SENDING..." 
onclick="t($('#subscription_email').val());"/><p 
class="result"></p></form></div></div><div class="col-md-2 col-md-pull-4 
col-xs-6 footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a 
href="//docs.prediction.io/" target="blank">Docs</a></li><li><a 
href="//github.com/PredictionIO/PredictionIO" 
target="blank">GitHub</a></li><li><a 
href="//groups.google.com/forum/#!forum/predictionio-user" 
target="blank">Support Forum</a></li><li><a 
href="//stackoverflow.com/questions/tagged/predictionio" 
target="blank">Stackoverflow</a></li><li><a 
href="mailto:&#x73;&#x75;&#x70;&#x70;&#x6F;&#x72;&#x74;&#x40;&#x70;&#x72;&#x65;&#x64;&#x69;&#x63;&#x74;&#x69;&#x6F;&#x6E;&#x2E;&#x69;&#x6F;";
 target="blank"
 >Contact Us</a></li></ul></div></div><div class="col-md-2 col-md-pull-4 
 >col-xs-6 footer-link-column"><div 
 >class="footer-link-column-row"><h4>Contribute</h4><ul><li><a 
 >href="//docs.prediction.io/community/contribute-code/" 
 >target="blank">Contribute</a></li><li><a 
 >href="//github.com/PredictionIO/PredictionIO" target="blank">Source 
 >Code</a></li><li><a href="//predictionio.atlassian.net/secure/Dashboard.jspa" 
 >target="blank">Bug Tracker</a></li><li><a 
 >href="//groups.google.com/forum/#!forum/predictionio-dev" 
 >target="blank">Contributors&#146; Forum</a></li><li><a 
 >href="//prediction.io/cla">Contributor Agreement</a></li><li><a 
 >href="//predictionio.uservoice.com/forums/219398-general/filters/top">Request 
 >Features</a></li></ul></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 
 >footer-link-column"><div 
 >class="footer-link-column-row"><h4>Enterprise</h4><ul><li><a 
 >href="//docs.prediction.io/support/" target="blank">Support</a></li><li><a 
 >href="//prediction.io/enterprise">Enterprise</a></li
 ><li><a 
 >href="//prediction.io/products/predictionio-enterprise">Services</a></li></ul></div><div
 > class="footer-link-column-row"><h4>Connect</h4><ul><li><a 
 >href="//blog.prediction.io/" target="blank">Blog</a></li><li><a 
 >href="//predictionio.theresumator.com/" 
 >target="blank">Careers</a></li></ul></div></div><div class="col-md-2 
 >col-md-pull-4 col-xs-6 footer-link-column"><div 
 >class="footer-link-column-row"><h4>Partnership</h4><ul><li><a 
 >href="//prediction.io/partners/program">Partner 
 >Program</a></li></ul></div></div></div></div><div id="footer-bottom"><div 
 >class="container"><div class="row"><div class="col-md-12"><div 
 >id="footer-logo-wrapper"><img alt="PredictionIO" 
 >src="/images/logos/logo-white-d1e9c6e6.png"/></div><div 
 >id="social-icons-wrapper"><a class="github-button" 
 >href="https://github.com/PredictionIO/PredictionIO"; data-style="mega" 
 >data-count-href="/PredictionIO/PredictionIO/stargazers" 
 >data-count-api="/repos/PredictionIO/PredictionIO#stargazers_count" 
 >data-count-aria-label="# 
 stargazers on GitHub" aria-label="Star PredictionIO/PredictionIO on 
GitHub">Star</a> <a class="github-button" 
href="https://github.com/PredictionIO/PredictionIO/fork"; 
data-icon="octicon-git-branch" data-style="mega" 
data-count-href="/PredictionIO/PredictionIO/network" 
data-count-api="/repos/PredictionIO/PredictionIO#forks_count" 
data-count-aria-label="# forks on GitHub" aria-label="Fork 
PredictionIO/PredictionIO on GitHub">Fork</a> <script id="github-bjs" async="" 
defer="" src="https://buttons.github.io/buttons.js";></script><a 
href="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on 
Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a 
href="//twitter.com/predictionio" target="blank"><img alt="PredictionIO on 
Facebook" src="/images/icons/facebook-5c57939c.png"/></a> 
</div></div></div></div></div></footer></div><script>(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
+<!DOCTYPE html><html><head><title>Modeling Workflow and DASE</title><meta 
charset="utf-8"/><meta content="IE=edge,chrome=1" 
http-equiv="X-UA-Compatible"/><meta name="viewport" 
content="width=device-width, initial-scale=1.0"/><meta class="swiftype" 
name="title" data-type="string" content="Modeling Workflow and DASE"/><link 
rel="canonical" 
href="https://docs.prediction.io/machinelearning/modelingworkflow/"/><link 
href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link 
href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link 
href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
 rel="stylesheet"/><link 
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" 
rel="stylesheet"/><link href="/stylesheets/application-3598c7d7.css" 
rel="stylesheet" type="text/css"/><script 
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script><script
 src="//cdn.mathjax
 .org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script 
src="//use.typekit.net/pqo0itb.js"></script><script>try{Typekit.load({ async: 
true });}catch(e){}</script></head><body><div id="global"><header><div 
class="container" id="header-wrapper"><div class="row"><div 
class="col-sm-12"><div id="logo-wrapper"><span id="drawer-toggle"></span><a 
href="#"></a><a href="http://predictionio.incubator.apache.org/";><img 
alt="PredictionIO" id="logo" 
src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div 
id="header-nav-options-wrapper"><ul><li><a href="/">Install & Doc</a></li> 
<li><a href="/support">Support</a></li> </ul></div><div id="pill-wrapper"><a 
class="pill left" href="//templates.prediction.io/">TEMPLATES</a> <a 
class="pill right" href="//github.com/apache/incubator-predictionio/">OPEN 
SOURCE</a></div></div><img class="mobile-search-bar-toggler hidden-md 
hidden-lg" 
src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div 
id
 ="search-bar-row-wrapper"><div class="container-fluid" 
id="search-bar-row"><div class="row"><div class="col-md-9 col-sm-11 
col-xs-11"><div class="hidden-md hidden-lg" 
id="mobile-page-heading-wrapper"><p>PredictionIO Docs</p><h4>Modeling Workflow 
and DASE</h4></div><h4 class="hidden-sm hidden-xs">PredictionIO 
Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1 hidden-md hidden-lg"><img 
id="left-menu-indicator" 
src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3 
col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form 
class="search-form"><img class="search-box-toggler hidden-xs hidden-sm" 
src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img 
src="/images/icons/search-glass-704bd4ff.png"/><input type="text" 
id="st-search-input" class="st-search-input" placeholder="Search 
Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg" 
src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div 
class="mobile-left-
 menu-toggler hidden-md hidden-lg"></div></div></div></div><div id="page" 
class="container-fluid"><div class="row"><div id="left-menu-wrapper" 
class="col-md-3"><nav id="nav-main"><ul><li class="level-1"><a 
class="expandible" href="/"><span>Apache PredictionIO (incubating) 
Documentation</span></a><ul><li class="level-2"><a class="final" 
href="/"><span>Welcome to Apache PredictionIO 
(incubating)</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting Started</span></a><ul><li class="level-2"><a 
class="final" href="/start/"><span>A Quick Intro</span></a></li><li 
class="level-2"><a class="final" href="/install/"><span>Installing Apache 
PredictionIO (incubating)</span></a></li><li class="level-2"><a class="final" 
href="/start/download/"><span>Downloading an Engine Template</span></a></li><li 
class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your 
First Engine</span></a></li><li class="level-2"><a class="final" 
href="/start/customize/">
 <span>Customizing the Engine</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Integrating with Your App</span></a><ul><li 
class="level-2"><a class="final" href="/appintegration/"><span>App Integration 
Overview</span></a></li><li class="level-2"><a class="expandible" 
href="/sdk/"><span>List of SDKs</span></a><ul><li class="level-3"><a 
class="final" href="/sdk/java/"><span>Java & Android SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/php/"><span>PHP 
SDK</span></a></li><li class="level-3"><a class="final" 
href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a 
class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li 
class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered 
SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li 
class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web Servic
 e</span></a></li><li class="level-2"><a class="final" 
href="/cli/#engine-commands"><span>Engine Command-line 
Interface</span></a></li><li class="level-2"><a class="final" 
href="/deploy/engineparams/"><span>Setting Engine Parameters</span></a></li><li 
class="level-2"><a class="final" href="/deploy/enginevariants/"><span>Deploying 
Multiple Engine Variants</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Customizing an Engine</span></a><ul><li 
class="level-2"><a class="final" href="/customize/"><span>Learning 
DASE</span></a></li><li class="level-2"><a class="final" 
href="/customize/dase/"><span>Implement DASE</span></a></li><li 
class="level-2"><a class="final" 
href="/customize/troubleshooting/"><span>Troubleshooting Engine 
Development</span></a></li><li class="level-2"><a class="final" 
href="/api/current/#package"><span>Engine Scala 
APIs</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Collecting and Analyzing Data</span
 ></a><ul><li class="level-2"><a class="final" 
 >href="/datacollection/"><span>Event Server Overview</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/cli/#event-server-commands"><span>Event Server Command-line 
 >Interface</span></a></li><li class="level-2"><a class="final" 
 >href="/datacollection/eventapi/"><span>Collecting Data with 
 >REST/SDKs</span></a></li><li class="level-2"><a class="final" 
 >href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/datacollection/webhooks/"><span>Unifying Multichannel Data with 
 >Webhooks</span></a></li><li class="level-2"><a class="final" 
 >href="/datacollection/channel/"><span>Channel</span></a></li><li 
 >class="level-2"><a class="final" 
 >href="/datacollection/batchimport/"><span>Importing Data in 
 >Batch</span></a></li><li class="level-2"><a class="final" 
 >href="/datacollection/analytics/"><span>Using Analytics 
 >Tools</span></a></li></ul></li><li class="level-1"><a class="expandible" 
 >href="#"><
 span>Choosing an Algorithm(s)</span></a><ul><li class="level-2"><a 
class="final" href="/algorithm/"><span>Built-in Algorithm 
Libraries</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/switch/"><span>Switching to Another 
Algorithm</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/multiple/"><span>Combining Multiple 
Algorithms</span></a></li><li class="level-2"><a class="final" 
href="/algorithm/custom/"><span>Adding Your Own 
Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>ML Tuning and Evaluation</span></a><ul><li class="level-2"><a 
class="final" href="/evaluation/"><span>Overview</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li 
class="level-2"><a class="final" 
href="/evaluation/evaluationdashboard/"><span>Evaluation 
Dashboard</span></a></li><li class="level-2"><a class="final" 
href="/evaluation/metricchoose/"><span>Choos
 ing Evaluation Metrics</span></a></li><li class="level-2"><a class="final" 
href="/evaluation/metricbuild/"><span>Building Evaluation 
Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>System Architecture</span></a><ul><li class="level-2"><a 
class="final" href="/system/"><span>Architecture Overview</span></a></li><li 
class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using 
Another Data Store</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li 
class="level-2"><a class="final" 
href="http://templates.prediction.io";><span>Browse</span></a></li><li 
class="level-2"><a class="final" 
href="/community/submit-template/"><span>Submit your Engine as a 
Template</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Demo Tutorials</span></a><ul><li class="level-2"><a 
class="final" href="/demo/tapster/"><span>Comics Recommendation Demo</span>
 </a></li><li class="level-2"><a class="final" 
href="/demo/community/"><span>Community Contributed Demo</span></a></li><li 
class="level-2"><a class="final" href="/demo/textclassification/"><span>Text 
Classification Engine Tutorial</span></a></li></ul></li><li class="level-1"><a 
class="expandible" href="/community/"><span>Getting Involved</span></a><ul><li 
class="level-2"><a class="final" 
href="/community/contribute-code/"><span>Contribute Code</span></a></li><li 
class="level-2"><a class="final" 
href="/community/contribute-documentation/"><span>Contribute 
Documentation</span></a></li><li class="level-2"><a class="final" 
href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li 
class="level-2"><a class="final" 
href="/community/contribute-webhook/"><span>Contribute a 
Webhook</span></a></li><li class="level-2"><a class="final" 
href="/community/projects/"><span>Community 
Projects</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Getting He
 lp</span></a><ul><li class="level-2"><a class="final" 
href="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a 
class="final" href="/support/"><span>Community Support</span></a></li><li 
class="level-2"><a class="final" 
href="/support/#enterprise-support"><span>Enterprise 
Support</span></a></li></ul></li><li class="level-1"><a class="expandible" 
href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final" 
href="/resources/intellij/"><span>Developing Engines with IntelliJ 
IDEA</span></a></li><li class="level-2"><a class="final" 
href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li 
class="level-2"><a class="final" 
href="/resources/glossary/"><span>Glossary</span></a></li></ul></li></ul></nav></div><div
 class="col-md-9 col-sm-12"><div class="content-header hidden-md 
hidden-lg"><div id="page-title"><h1>Modeling Workflow and 
DASE</h1></div></div><div id="table-of-content-wrapper"><h5>On this 
page</h5><aside id="table-of-contents"><ul> <li> <
 a href="#training-the-model">Training The Model</a> </li> </ul> 
</aside><hr/><a id="edit-page-link" 
href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/machinelearning/modelingworkflow.html.md";><img
 src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div 
class="content-header hidden-sm hidden-xs"><div id="page-title"><h1>Modeling 
Workflow and DASE</h1></div></div><div class="content"><p>In addition to the 
DASE components, we also introduce the Data Model and Training Model 
abstractions. The Data Model abstraction refers to the set of Scala classes 
dealing with the implementation of modeling choices relating to feature 
<strong>extraction</strong>, <strong>preparation</strong>, and/or 
<strong>selection</strong>. For this illustration, this only includes the 
vectorization of text and t.f.-i.d.f. processing which is entirely implemented 
in the PreparedData class. The Training Model abstraction refers to any set of 
classes that indivi
 dually take in a set of feature observations and output a predictive model. 
This predictive model is leveraged by the Algorithm component to produce 
prediction results to queries in real-time. In the engine template, this 
abstraction is implemented in the NBModel class. <strong>Please note that these 
are conceptual abstractions that are designed to make engine development easier 
by decoupling class functionality.</strong> Keeping these abstractions in mind 
will help you in the future with debugging your code, and also make it easier 
to incorporate different modeling ideas into your engine. </p><p>The figure 
below shows a graphical representation of the engine architecture just 
described, as well as its interactions with your web/app and a provided Event 
Server:</p><p><img alt="Engine Overview" 
src="/images/demo/text_classification_template/engine_overview-27e09a89.png"/></p><h2
 id='training-the-model' class='header-anchors'>Training The Model</h2><p>This 
section will guide you throu
 gh the two Training Model implementations that come with this engine template. 
Recall that the Training Model abstraction refers to an arbitrary set Scala 
Class that outputs a predictive model (i.e. implements some method that can be 
used for prediction). The general problem this engine template is tackling is 
text classification, so that our Training Model abstraction domain is 
restricted to implementations producing classifiers. In particular, the 
classification model that is implemented in this engine template is based on 
Multinomial Naive Bayes using t.f.-i.d.f. vectorized text. 
</p></div></div></div></div><footer><div class="container"><div 
class="seperator"></div><div class="row"><div class="col-md-6 col-xs-6 
footer-link-column"><div 
class="footer-link-column-row"><h4>Community</h4><ul><li><a 
href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a 
href="//docs.prediction.io/" target="blank">Docs</a></li><li><a 
href="//github.com/apache/incubator-predictioni
 o" target="blank">GitHub</a></li><li><a 
href="mailto:user-subscr...@predictionio.incubator.apache.org"; 
target="blank">Subscribe to User Mailing List</a></li><li><a 
href="//stackoverflow.com/questions/tagged/predictionio" 
target="blank">Stackoverflow</a></li></ul></div></div><div class="col-md-6 
col-xs-6 footer-link-column"><div 
class="footer-link-column-row"><h4>Contribute</h4><ul><li><a 
href="//predictionio.incubator.apache.org/community/contribute-code/" 
target="blank">Contribute</a></li><li><a 
href="//github.com/apache/incubator-predictionio" target="blank">Source 
Code</a></li><li><a href="//issues.apache.org/jira/browse/PIO" 
target="blank">Bug Tracker</a></li><li><a 
href="mailto:dev-subscr...@predictionio.incubator.apache.org"; 
target="blank">Subscribe to Development Mailing 
List</a></li></ul></div></div></div></div><div id="footer-bottom"><div 
class="container"><div class="row"><div class="col-md-12"><div 
id="footer-logo-wrapper"><img alt="PredictionIO" src="/images/logos/logo-w
 hite-d1e9c6e6.png"/></div><div id="social-icons-wrapper"><a 
class="github-button" href="https://github.com/apache/incubator-predictionio"; 
data-style="mega" data-count-href="/apache/incubator-predictionio/stargazers" 
data-count-api="/repos/apache/incubator-predictionio#stargazers_count" 
data-count-aria-label="# stargazers on GitHub" aria-label="Star 
apache/incubator-predictionio on GitHub">Star</a> <a class="github-button" 
href="https://github.com/apache/incubator-predictionio/fork"; 
data-icon="octicon-git-branch" data-style="mega" 
data-count-href="/apache/incubator-predictionio/network" 
data-count-api="/repos/apache/incubator-predictionio#forks_count" 
data-count-aria-label="# forks on GitHub" aria-label="Fork 
apache/incubator-predictionio on GitHub">Fork</a> <script id="github-bjs" 
async="" defer="" src="https://buttons.github.io/buttons.js";></script><a 
href="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on 
Twitter" src="/images/icons/twitter-ea9dc152.png"/><
 /a> <a href="//twitter.com/predictionio" target="blank"><img alt="PredictionIO 
on Facebook" src="/images/icons/facebook-5c57939c.png"/></a> 
</div></div></div></div></div></footer></div><script>(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
 (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
 
e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
 })(window,document,'script','//s.swiftypecdn.com/install/v1/st.js','_st');
 
-_st('install','HaUfpXXV87xoB_zzCQ45');</script><script>var _qevents = _qevents 
|| [];
-(function() {
-var elem = document.createElement('script');
-elem.src = (document.location.protocol == "https:" ? "https://secure"; : 
"http://edge";) + ".quantserve.com/quant.js";
-elem.async = true;
-elem.type = "text/javascript";
-var scpt = document.getElementsByTagName('script')[0];
-scpt.parentNode.insertBefore(elem, scpt);
-})();
-_qevents.push({
-qacct:"p-stVMxuw8H5EPX"
-});</script><noscript><div style="display:none;"><img 
src="//pixel.quantserve.com/pixel/p-stVMxuw8H5EPX.gif" border="0" height="1" 
width="1" alt="Quantcast"/></div></noscript><script>adroll_adv_id = 
"CPSSMJFFZ5DDHITC2STA54";
-adroll_pix_id = "UWX4N2WIMJADVHJGOFTM44";
-(function () {
-    var _onload = function(){
-        if (document.readyState && 
!/loaded|complete/.test(document.readyState)){setTimeout(_onload, 10);return}
-        if (!window.__adroll_loaded){__adroll_loaded=true;setTimeout(_onload, 
50);return}
-        var scr = document.createElement("script");
-        var host = (("https:" == document.location.protocol) ? 
"https://s.adroll.com"; : "http://a.adroll.com";);
-        scr.setAttribute('async', 'true');
-        scr.type = "text/javascript";
-        scr.src = host + "/j/roundtrip.js";
-        ((document.getElementsByTagName('head') || [null])[0] ||
-            
document.getElementsByTagName('script')[0].parentNode).appendChild(scr);
-    };
-    if (window.addEventListener) {window.addEventListener('load', _onload, 
false);}
-    else {window.attachEvent('onload', _onload)}
-}());</script><script 
src="/javascripts/application-5a24945b.js"></script></body></html>
\ No newline at end of file
+_st('install','HaUfpXXV87xoB_zzCQ45');</script><script 
src="/javascripts/application-5a24945b.js"></script></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-predictionio-site/blob/734e6fcd/machinelearning/modelingworkflow/index.html.gz
----------------------------------------------------------------------
diff --git a/machinelearning/modelingworkflow/index.html.gz 
b/machinelearning/modelingworkflow/index.html.gz
index c910360..240c0bd 100644
Binary files a/machinelearning/modelingworkflow/index.html.gz and 
b/machinelearning/modelingworkflow/index.html.gz differ


Reply via email to