>> Nigel Hess: So my name is Nigel Hess,... Wolfram. My background is in mechanical engineering. So...

advertisement
>> Nigel Hess: So my name is Nigel Hess, and I'm an account executive with
Wolfram. My background is in mechanical engineering. So I got my
undergraduate from Purdue University and got involved in kind of account
management and technical sales with Wolfram.
I have with me Michael Kelly. I'll wait till Michael comes up here to kind
of introduce himself and talk a little bit.
But I thought I would start off with giving sort of a higher level technology
overview. I'd like to talk a little bit about what the Wolfram Language is
and kind of what the philosophy is behind it and kind of the point of it.
And then start talking about the different ways of leveraging the language
and making use of it, so from everything from kind of using it right in front
of you to using it to create tools and interactive applications and even
reports and different ways of kind of pushing all this stuff out to other
people.
So I will go ahead and get started with this overview for about ten minutes,
and then I'll hand it off to Michael to get into some more specific
application areas and stuff like that.
So the language at the heart of Mathematica is now kind of formally called
the Wolfram Language. And it's a language that we basically incubated in
Mathematica for the past 25-plus years. And it's a language that attempts to
incorporate and build in as much knowledge as possible.
So both knowledge in the form of various datasets, which are accessible
through Wolfram|Alpha, but also a great deal of knowledge about computations,
whether it's in domains like machine learning or statistical analysis or
image processing. All of these different domains we've really built into the
core language.
So I won't spend too much time on these tabs, but these are a lot of the kind
of objectives of the language. So building in a great deal of automation to
make kind of things quicker and easier for you to build as somebody
developing content.
And of course as Michael will probably show you, you can go into various
functions to set things up specifically as you desire to. So everything
doesn't need to be very high level and automated.
So deployment is really an area we've focused on as well in the last couple
years. So where we used to -- whoops, there goes my mic. So where we used
to really be talking about Mathematica and what you could do with
Mathematica, now the shift -- we've kind of shifting to talking about that
core language and that core technology and the different ways you can push
that code out and make it usable to not only you but your colleagues and
managers and clients and customers as well. So that's kind of the point of
this slide.
And I mentioned built-in knowledge. So Wolfram, the Wolfram Language is
integrated with Wolfram|Alpha. And Wolfram|Alpha has access to literally
trillions of data points, everything from weather data to data on chemicals
and compounds to stock data, and all of that data is available to you and
easily accessible in the Wolfram Language.
So this just kind of demonstrates a couple of the domains or different areas
that are really touched on by the Wolfram Language. So there are functions
in the language that are specific to doing things related to image
processing. There are functions related to machine learning, to statistical
analysis, to creating visualizations.
And all of it is available to you in this kind of one consistent environment,
consistent framework.
So these are also a couple of the application areas that Michael will get
more into when he comes up and speaks.
So Wolfram Language is actually used on the back end of quite a few
technologies, some of which you might use. So if you have an iPhone or a
Galaxy phone and you use technology like Siri, when you ask certain
questions, our technology -- like Wolfram|Alpha is actually being used on the
back end to find the answer and stuff like that.
But we're also started to embed the language only devices. So if you buy a
Raspberry Pi, for example, today, it actually comes with the Wolfram Language
embedded on that device, can which is a nice way to kind of quickly tinker
around and play with it and stuff.
So this just kind of shows the continuing development of the -- all of the
functions that are built into the Wolfram Language. So you can kind of see
that it's really continuing to expand. And a lot of that is because we've
taken these various application area which used to require purchasing an
add-on or a package or something like that and we've now built them into the
core language.
So now if you want to do things in image processing, for example, all that
functionality is built into the language. If you want to do machine
learning, that's built in too. Which is nice because you don't have to worry
about purchasing add-ons and extensions and stuff like that.
So this slide just talks a little bit about how kind of fine grained some of
these functions in Mathematica can get. So there's thousands of functions,
over 4,000 functions now. And you can really get down into pretty
nitty-gritty specific areas.
So Mathematica and the Wolfram Language can also support hundreds of
different file types. So more than likely, if you're looking to get that
data into the Wolfram Language or Mathematica or get it out, more than likely
you can.
And the Wolfram Language is also able to integrate with all of these -- or
connect to all of these other languages and platforms too. So that's
something good to keep in mind as well.
So I think historically Mathematica and the language have really been well
known for creating very aesthetic and beautiful visualizations. So I thought
I would take a quick minute just to show some of those visualizations, just
to give you a good idea of the full spectrum of visualizations and charts and
plots that you can create in Mathematica.
So this gives you a good sampling of 2D visualizations. So plots, contour
plot, polar plots, and so forth. We have all of the 3D visualizations
covered as well. So this is kind of a little bit of sampling of that too.
So of course if you want to do charting, we have all of that, from some of
the simpler stuff that you might associate with Excel to more complex,
sophisticated stuff like 3D bubble charts.
And of course statistical analysis is also a very major area in the language.
So we've got all sorts of different charting and visualizations around
statistical analysis as well.
So one of the great things about Mathematica is its built-in notebook
interface. So when you open Mathematica up, you have this kind of palette
called a notebook. And what's great is that you can put just about anything
in a notebook. So it can contain all of your formatted code and everything,
as well as maybe comments on your code. You can see in here you can have
images, you can have formatted text and sections.
And we'll talk about a little bit later your notebooks can even contain
dynamically interactive content. So it might be a little bit difficult to
see here, but we'll show this a little bit later, but you can create very
easily these sort of GUI objects with sliders and drop-downs and all sorts of
interactive elements that when you make adjustments to them, they actually
change kind of underlying parameters of the model.
So that can be a great way of building tools that you want to share with your
colleagues or maybe you want to give your manager a model that allows him to
vary some parameters and gain some insight into that model. This makes it
really easy to do that.
So, in fact, this presentation is even given in a Mathematica notebook. So
this is a Mathematica notebook right here. So to prove that, you could kind
of just click down here and do something like that and kind of just see that
this is a live notebook.
So I put this slide together just to make it clear that Mathematica and the
Wolfram Language at the heart of Mathematica, you don't need to just use it
as somebody just sitting in front of the desktop. Mathematica has built-in
functions like schedule task that allow you to put Mathematica up on a server
or something, and it could be the back-end computation engine for some other
program that you're writing or it can do all sorts of automated things
without you having to necessarily be right in front of the computer.
So I'll just touch on these briefly. GridMathematica is basically a package
of dedicated Mathematica kernels. So if you're doing a lot of work related
to high-performance computing or parallelization, gridMathematica can be
quite useful.
So one thing you could do with it is if you have a computing cluster or
something like that and you have gridMathematica, you can actually send a
computation from your Mathematica front end to gridMathematica and have it
parallelized across many CPU cores and then have the results sent back to
you.
So in that way you can really take advantage of other hardware that you may
have on the network if, say, you know you're using a limited laptop or
something like that.
And webMathematica I'll just very briefly touch on. But webMathematica is
really about putting Mathematica, kind of the power of Mathematica on the
back end of a Web service. So I won't go into it too much right now because
I don't think it relates probably to most people's project, but if that is a
curiosity, certainly let us know. We'll put our contact information up at
the end. And we can certainly explore these topics further with you.
So most of you are probably familiar with Wolfram|Alpha. Wolfram|Alpha is
our computational knowledge engine. And it's also a great resource for
pulling all sorts of different day into the Mathematica environment. So as I
mentioned, there's weather data, there's stock data, there's data on chemical
compounds, really just a ton of data, a lot of which could be of use to your
projects, depending on what you're doing.
So it's nice to know that Mathematica is integrated with Wolfram|Alpha so you
can easily pull all of that data and all of those resources directly into
Mathematica.
So this schematic kind of just talks a little bit about how Wolfram|Alpha
actually works. I won't really go into detail on it. But if anybody is kind
of curious about that, we can certainly talk more about that.
So while we have Wolfram|Alpha publically available at wolframalpha.com,
which is also accessible through your local copy of Mathematica, many
companies have also gotten a private instance of Wolfram|Alpha. And one of
the great things about Wolfram|Alpha is it allows you to ask natural language
questions on datasets essentially, and then get back not only like a
customized -- not only a precise answer, if it's available, but also can kind
of customized report of other things that it thinks might be also of interest
to you based on the question that you asked.
So if you wanted to take this sort of natural language-asking technology and
apply it to your datasets, the Wolfram|Alpha appliance is a great solution
for that. And what it can do is allow you to basically ask natural language
questions on your datasets, in the same way that you can use Wolfram|Alpha on
the datasets that we already have available.
So another great thing in the Wolfram Language is the computable document
format. And it allows you to very quickly and easily build dynamically
interactive interfaces. That could be valuable for a number of reasons. So
for one reason, it might help you gain visual insight into a problem or a
model or something like that. But it might also help you just quickly build
an interactive tool or an application that you can then share with your
colleagues.
And the nice thing is that they don't have to actually know how to use
Mathematica because what you're giving them as a CDF is basically just a
point-and-click application that's kind of running the language under the
hood essentially.
So CDFs are basically largely powered by the manipulate function in
Mathematica. And manipulate is a very high-level function. So this is kind
of a simple example of it. So I'll just walk through this quickly.
So of course there's a function in Mathematica called the plot function. Let
me take out F here. So if we wanted to just create kind of a trivial plot
here, we would just use this plot function like this. But if we wrapped a
manipulate around this entire thing and just added another variable which we
would like to manipulate, and then we just need to give this some range. So
let's just say 0 to 10.
So this creates this sort of dynamically interactive little tool down here.
So what you could actually do now is now take this tool and save it as a .CDF
file. And then you can send that file to basically anybody and all they need
to open and interact with that interactive tool that you've deployed is the
free CDF player that anybody can download from our Web site.
So, again, they don't need to know how to use Mathematica. They don't need
to have the software. You can just kind of freely and easily share it with
them.
So of course this is a very trivial example using manipulate. But there are
a number of other kind of examples down here that might give you a better
idea of kind of the full spectrum of tools and applications that you can
build with this manipulate function. So they can have all sorts of
interfaces. And I won't go into all of these, but you can see a couple of
these here. And I'm sure Michael will show a couple more too.
So really any notebook can be saved as a CDF file. So that means that a CDF
file does not need to only contain one of those little dynamically
interactive tools. It can also contain images and text and so on.
So basically what that means is you can also build very aesthetic reports.
And those reports could be CDF files. And, again, anybody with the free CDF
player can access those.
Let me jump ahead here. So there's actually two levels of CDF. There's the
basic CDF, free CDF as it's called, and there's also enterprise CDF. So
enterprise CDF is kind of a higher tier of CDF, and it allows you to deploy
CDFs that, for example, allow the end user to input arbitrary -- insert
arbitrary inputs or perhaps load their own datasets into the CDF application
and export their own data and just do all sorts of stuff more around
connecting to other data sources and stuff that you can't do with the basic
CDF level.
So the Wolfram Cloud is something I wanted to briefly touch on at the end
here too. The Wolfram Cloud is really -- encompasses a whole suite of
Wolfram Cloud products. So one of the those, for example, is Mathematica
Online. Another is the Wolfram Programming Cloud. But the Wolfram Cloud is
really all about taking the Wolfram Language and making it available in the
cloud and making it easy for you to deploy programs that you've written in
the Wolfram Language to the cloud in such ways that -- in such a way that
it's easy for that code now to -- like to create an API from that code or
deploy a Web form or just link that code to a Java program that you have or
some other program in some other language.
So actually now at Microsoft Research everyone has access, you would just
have to request it through me or Michael, but you can have access to
Mathematica Online, which not only would give you access to Mathematica from
any computer where you don't have Mathematica installed, but it also allows
you to do things like share what are called cloud CDFs.
And cloud CDFs are essentially like CDFs, but the computation is happening
server side as opposed to at the user's kind of front end. So one of the big
differences there is that with cloud CDF your end users don't need to have
the CDF player installed. So it's a completely Web browser-based experience.
So if you do have Mathematica Online set up ->>:
We don't.
>> Nigel Hess:
>>:
Oh, we don't have Internet?
[inaudible] I think it is.
>> Nigel Hess: Okay. Well, I won't worry about it right now. So this just
kind of shows the interface for Mathematica Online. So when you set it up
and sign into it, it kind of looks like this. It was kind of created to
really create the Mathematica experience in a Web browser. So it's kind of
trying to look as much like the local installation of Mathematica as it can
be.
So if you open a notebook in Mathematica Online, this is kind of what it
looks like in a Web browser. And of course you have full access to the
documentation center that you also have in a local install of Mathematica.
So that's very nice too, and it's just kind of shown there right on the
right-hand side.
So this just shows a couple of the different ways that you can leverage the
Wolfram Cloud to deploy Wolfram Language Code in many different ways.
So one thing you can do is basically in a line of code create an API that
allows you to call to Wolfram Language Code running in the cloud basically.
So of course there's all sorts of different applications for that. You can
also -- there's an embed code function that allows you to embed a call to
Wolfram Language Code running in the cloud in JavaScript or .NET or other
languages as well.
So there's basically all sorts of different ways of deploying your Wolfram
Language Code that were not available a year or two ago but now are kind of
trivially easy to set up and get working.
So this is kind of reiterating some of the points I just went through. And
this as well. I won't spend too much time on this. So as I mentioned,
everybody at Microsoft Research has access to Mathematica Online as well. So
if you wanted to play around with deploying APIs or creating cloud CDFs that
you could like share with your manager and stuff, just let Michael or me
know, and we can help you get set up with an account for that.
So basically all we would name is your name and your e-mail address, and then
we could put in a request to get you set up with access to Mathematica
Online.
So without further ado, I will have Michael come up and get into some of the
application areas.
>> Michael Kelly: So when you go into Mathematica, what comes up first is
our Web site showing all of the various products that we've got as well as
details and information about our language and solutions to problems and the
support and learning and everything else.
So my name is Dr. Michael Kelly. I'm a technology consultant at Wolfram
Research. And what I'm primarily concerned with at Wolfram Research is their
finance platform, but I also work in other areas.
And so the general idea here is to show you the program itself. It is a very
large program indeed. So if we go and look at the help file for it, as a
starting point, this is what you see.
So each of these boxes here are actually containers. And when I click on any
of them, it then shows up various subdivisions which cover various areas.
So, for instance, if I went to look at function visualization, there would be
a guide page there and various learning resources I could go into and look at
in more detail. So I could go in, look at the options for various graphics.
And it would explain these.
And then all of the functions that are in this particular area, and I can
click on these and look at the syntax for the language.
The reason I'm showing this is that there's a uniform syntax for our
language. Everything starts with a capital. And if there's more than one
word in there, concatenate it all together.
And there are sort of common aspects such as, for instance, if we've got
functions that do 3D, we call it 3D. Whatever the name might be, it is the
most commonly used name that you would find in that area of knowledge;
namely, in mathematics and physics and finance and economics. We use all of
the same terms.
And the -- in order to make everything easier, everything has the same
format. So this is particularly important because Mathematica uses pattern
matching. It's the only language that does so. It goes into the very
structure of the language to try to work out basically what is the input that
you're feeding it into.
And it breaks it down into these components and evaluates each of them in
turn, unless of course you're using parallel programming, which is also built
into our language, in which case it will stream across each of the components
and calculate them individually on a different kernel.
And as Nigel was saying, we have very beautiful pictures. And of course 3D
pictures, we can move these around in real time in the 3D space.
So to go back again, and what I'll just do is move through some of the
functionality. There's over 5,000 functions in Mathematica. Then we have
add-ons, which add on about another 5,000 functions. And then in addition to
that, Mathematica talks to our sister program called Wolfram|Alpha. And it
is an attempt to basically make all of human knowledge accessible within our
language.
So everything that will be shown here is, in fact, a component of
Mathematica, the entire notebook, all of the visualizations. So here, for
instance, what I'm doing is sort of zooming into a 3D network and then as we
move along, it basically -- the network unfolds.
All of these functions, you know, all of this capability are particular
functions in Mathematica. That one was the manipulate function, which Nigel
was just showing previously.
So a number of companies use our product in research and development. We're
also used quite a lot in finance by all these banks and hedge funds. And, as
Nigel was saying, it's basically one integrated system all built around the
Wolfram Language in Mathematica, whether it connects to system interfaces,
whether they be on the Web or in the cloud, the visualization in graphics,
the dynamic interactivity that includes manipulate tab view functions, our
core language underneath everything.
Behind it all of course is that Mathematica is symbolic as well as numeric.
That means that you can actually take mathematical equations almost precisely
as you see them in a mass text and then put them into our code. And, in
fact, our language itself is used by the World Wide Web. It's what Wikipedia
uses in its math portal.
So we cover a wide range of areas -- optimization, control systems. So
compared to many other programs, what we have is that everything is built
into Mathematica. They call upon core functions, which is basic to modern
mathematics. And it is these that form the basis for everything that's done.
And it can be anything -- wavelet analysis, graphics, finance, GPU
programming, the lot.
So as for the general outline, Nigel's already explained this, but we have
Mathematica, gridMathematica, which is an extension. As I said, Mathematica
is a parallel programming language. And so it can be extended not only to
additional kernels on your computer but to additional kernels which are
external. So to a grid, to a cluster.
And it can also be heterogeneous. In other words, you can have CPUs as well
as GPUs, both CUDA and OpenCL. We have it on the Web. We have a finance
platform as an extension of Mathematica and has additional financial
capabilities. We have a system modeler. So this is -- somewhat corresponds
to MATLAB's Simulink program.
Our results can be distributed for free using a CDF player. This is more or
less our -- it has commonalities with Adobe's free reader except ours is
interactive and does actual calculations for you. It's not static. And of
course for -- if you've got very large projects and you want to debug your
programs, we've got the workbench. But we also have debugging built in at a
fundamental level in the program itself.
So as you can see here, the program has rapidly developed over the last few
years. And, in fact, the last edition has brought in more functions than
there were in the original edition.
So it can cover a wide range of features and including these marvelous
graphics. So as I click on -- and, again, to remind you, everything here is
actually a Mathematica option function. Everything is really being embedded
in a series of what are called tab views. So here's an example of line
fitting. Here we've got metrics algebra, calculations. So this basically -this is what's called a sparse array, and we have sparse arrays built into
Mathematica. And you can do calculations over these.
In this instance, we've got 3D histograms where the height corresponds to the
density, the number of elements in each separate area. We've got
interpolation, both 2D -- well, you know, N dimensional. We can study
bifurcation because we've got discrete mathematics as well as continuous
mathematics. We've got wavelet analysis that allows us to do wavelet
transforms.
We've got vector fields. So you can actually have 2D and 3D analysis of
vector fields. And all of the corresponding functions such as the grid, div,
grad, and curl. We can solve partial differential equations and how they
evolve through time and plot them up.
Okay. We've got control systems and important capabilities such as locus
plotting. So this is a problem that basically we've got -- what's happening
here is that we've got a density plot, more or less a cut through a
hyperdimensional space, and the dots here are the various points that in an
optimization program as it's going, looking for either the maxima or the
minima.
And we've got image processing and also graph theory and network analysis.
So these are just some of the areas that are covered in Mathematica.
So to start off, we've got the -- as I said, Mathematica is symbolic as well
as numeric. So the only other leading major symbolic program is Maple. But
it's nowhere as extensive as Mathematica.
And so Mathematica has built in a vast amount of mathematical knowledge. So
things like symbolic sums here. So I'm taking the sum of the Kth powers, so
the first N Kth powers. And notice there are no actual numbers in here. And
as I move the cursor along here, you will see that it will do the actual
calculations for different values. So this is the sum of the fourth powers
for instance and so on. Third powers. The seventh powers.
We have symbolic limits. So here we're approaching the limit of 1 on X both
from the left and the right. And you see gives different values.
Power series expansions. So here the [inaudible] expansion just gives us the
tangent at 0. Now as I move this along, okay, you would get better and
better fields at every point along the curve.
We can solve differential equations. So here I've got an entirely arbitrary
cubic equation. And starting at values for A, B, C, and D, the coefficients
here all being minus five, I get a simple solution. Now as I change this, it
will solve for any possible of the values.
cylindrical decomposition.
And it does this using
We have wonderful 3D graphics. But I can also do the partial derivatives.
So here's the derivative with respect to the X axis and with respect to the Y
axis. And there's a number of textbooks now teaching mathematics that use
this capability.
We can do exact integration. So this is symbolic integration. So we've got
cause raised, cause of X raised to the power M, and sign of delta plus X to
the power N. And as I change the values for M and N, you can see the
integral changes.
This is unmatched by anywhere.
as the standard.
Now all the textbooks basically refer to us
And I don't know what happened there, but we'll go back.
So in addition to that, Mathematica also has been very famous in solving a
large number of computational problems. So this was a challenge given by
SIAM. And the problem here of course is that we've got infinite repetitions
of the function as we get close to 0. So as you can see here, when X goes to
0, this is unmeasurable, and so is the coefficient.
But Mathematica is capable of calculating this. This is the plot. And as
you can see here, here's the actual integral. And this is the time that it
took to do it. So it's a very fast calculation.
We can do other things. So in addition to -- because Mathematica is symbolic
as well as numeric, one of the capabilities of this is that it's built upon
transformation rules and functions. And the thing that links these two is
what's call the lambda calculus. So we have a way of representing the lambda
calculus, which is commonly used in artificial intelligence. We use the
ampersand to indicate that we're using a lambda function and the hash
argument to represent any argument at all.
So this is the function that takes its argument, subtracts four fifths and
multiplies by 5. And what I'm doing here is looking at what would be all of
the values that were generated as I start applying this function to one, and
then continue doing it 4,000 times. So this -- so initially I'm just getting
the values of 1 and minus 1 cycling around.
But what we can also do is because Mathematica is symbolic, we can start with
things like pi, the transcendental number. This is very soon after pi day.
And you notice that when I first call this up, Mathematica doesn't do
anything. It doesn't try to calculate it. The reason is that there's no
finite representation of it. I can get -- I can ask in particular, for
instance, to give me an approximation to 5,000 decimal places. Probably
using one of the theorems of Ramanujan.
But what I could also do is say I'd like it to K decimal places. And then
what I'd like to do is allow K to vary as K goes from 10 to 10,000 in
increments of 20, for instance. And then see how it changes.
Now, as it starts off, here's 10 decimal places. And then I can move this.
And as I do so, we're now at 1,180 places, and it just goes on down the
screen here. So it can be to any degree of accuracy.
So we have both infinite precision and infinite accuracy. Of course it's
going to use up more of your computer memory and will take longer to
calculate, but for important problems and for detailed calculations, such as,
for instance, calculated the friction over an airfoil, things like this where
you need absolute accuracy, then Mathematica is unbeatable.
So this is an image that Nigel had already shown you, showing that our
notebook is just another object within Mathematica, but it allows you to mix
both code and both the input and the output and comments.
Here, of course, so dynamic interactivity is very important. So this is now
going back again, solving an equation, changing the parameters in the
differential equation. As I do so, it changes the structure of the surface.
And I can increase the solution range.
All right. All right. So this next one, it took a couple seconds because
I'm pulling in a very large dataset for analysis. So basically what I'm
concerned with here is just showing some of the functionality of our
statistical analysis.
So the simplest of course basic descriptive statistics. Here each of these
tabs represents a different dataset. And every time I click on it, it will
do all of these calculations over this large dataset. Or it should. Okay.
So what's happening here is that we're getting all of the main
characteristics -- mean, standard deviation, dimensions. We've got a basic
[inaudible] plot. We're tracking a trend here. We've got a histogram.
We've got a box-whisker plot. We've got a distribution plot. Okay. We've
also got a discrete plot. And here we've got various degrees of fitting for
both the PDF and the CDF.
We've got linear and long linear and generalized linear model fitting. So
you can feed in the data, fit it to a linear model. And then we use aspects
of object-oriented programming, define out all of the properties that might
go with this. It can be the design matrix, the residuals, the hat diagonal.
We can look at the mean prediction bands, the correlation matrix. Absolutely
everything. And then we can carry out diagnostics.
And this holds for nonlinear fitting as well as generalized linear fitting.
So here you see we've got a very large dataset, really a combination of
sinusoidal functions and we can work out what are all of the coefficients
involved here. It comes back, says this is the model. This is all of these
properties. We can ask about it, and we can do diagnostics on it.
same thing for general -- generalized linear model fitting.
And the
Hypothesis testing. Again, you can feed in data. You could say, well, let's
feed it to the normal distribution or a log logistic distribution. And as it
does so -- so in this particular case we're looking at snowfall in Buffalo,
New York. You can see here how it's calculated the parameters of that
distribution and then does a statistical test to find out how accurate this
test is.
And these are some of the distributions we've got. We've got both
univariate, multivariate, continuous, and discrete. And when I look at all
of them here, so we're looking at their CDS, I can choose one here, say like
the Gumbel distribution. Let's go down and have a look at it and then change
its parameters. And as I do so, it will update the structure.
We also have random processes. So the way in which we think about random
processes is that if you allow these to evaluate through time or space and
then I take a slice, slice distribution through it, then I'll be identifying
how that distribution behaves at any particular moment in time. So it's an
extension of the concept of distributions through space and time.
And this particular thing I'm looking at, the stochastic probabilities
associated with -- so as I change the property of A winning, it's going to
change the structure of the game, depending upon where you start.
So to give you some examples here. So here I've got some data. It's a list
of pairs. This is the X value, this is the input. And the Y value, the
output. I feed that in. Then I construct a simple model. These
coefficients here are going to be fit into a second order partial
differential equation that will also satisfy the initial conditions. I will
solve this for the function, the dependent variable, for a range of values of
X. And then I will substitute this value in to find out what is the solution
to the dependent variable Y.
I return this as a model that depends upon the inputs A, B, and C. So this
just defines a very general model depending upon the inputs. And then I'm
saying, okay, let's apply this model and let's take one of its values, X, and
let's fit this model now, a function, so this is a function of X, apply it to
the data, and try to solve for the inputs here.
I better just make sure that there's no -- from any previous work that sees
also a free variable. And then try to solve this model. And it comes back
here with a solution. It also tells me that perhaps I should increase my
accuracy goal. And but, anyway, as you can see here, the solution is quite
accurate. It's a very general model the data was just arbitrarily chosen.
This picture here really is quite out dated now, but it shows how we compared
with other very well-known statistical -- let me make it a bit bigger. So
basically this is just a list of some of the distributions.
to which they're covered by other programs.
And the extent
So of course the most famous other program for statistics is R. And as you
can see, this is the light blue and this is this region here. So it cover
less than a quarter. And that was two versions back of Mathematica. So we
cover more distributions than can be found in R.
So basically how
particular case,
algae blooms and
this I just say,
file. I load in
can all of this be used to do an analysis? So in this
what I'm doing is importing a very large data file about
then looking at the chemical components within it. So in
look, this is the headings in the first row of our data
the data, and making sure to remove any missing elements.
Then I can set up a grid. This grid will give me basically an analysis of
all of the elements. It's actually sort of squashed at the moment to fit
into this format for the projector, but it has a breakdown. So this is the
data as we can see it, the season, the species, and all of the various
chemical elements that are involved.
But I can do an analysis of this, and it's so simple. All I now do is map
onto the raw data, say let the columns be as specified above. And now use in
a function that allows me to build up a dataset by threading, by basically
using the concept of association from Hadoop to build associations between
the names of each column and the values that they take and now stick it
directly into a dataset.
And now we get these summary statistics. So I can look at each individual
season and find how many elements, the size, the speed of growth of the algae
blooms. I can look at all of the -- so now I'm doing model fitting for each
of the chemical compounds, ammonia, so on, here, finding their median values.
And these are the other variables in our model. Basically this is what
the -- I can go through now, look at each of the various things here. So
here's hydrogen. Here's the number of bins I'd like to take. And how I'm
going to fit it, whether with a normal distribution or a Weibull
distribution, for instance, and see if I get a better fit to my model.
And then here is the correlation table. And the analysis is very
straightforward, very straightforward functions that are built into
Mathematica. As you'd expect, correlation in Mathematica is just
correlation. If I wanted to go in and find the particular function itself,
okay, here it is. And as you can see, it does it both symbolically as well
as numerically.
So we can import data using the import function. And as Nigel showed, that
we have about 180 different import/export types. I can load the data in, I
can gather it to analyze it, and then build up a bar chart of a structure of
the data in. So it's very simple to do.
We also have time series that allows for time series analysis. We can see
whether this -- so we've got a financial data function. Let's just see
how -- make sure that that actually went in. Yeah. So here's the data as
it's actually come in. Basically it is a list of pairs. Each pair consists
of the first element being a date and then its value. Okay. So this is, in
fact, the financial data for Starbucks, the closing data, going from the
beginning to the end of 2013 each week.
So what I can do is go into this data, just separate. So now I'm taking out
all of the actual values, sticking into a time series function, and looking
at all of the stock values as a time series object. And then I can plot them
up.
I can also estimate the process. So here are the stocks. And I'm saying,
well, you know, let's now use some Box-Jenkins analysis. In other words,
let's try to find the ARIMA process, the autoregressive integrated moving
average process. So we've got two factors that go into the autoregressive -first order integration and one moving average component. And let's use as
an estimator the maximum conditional likelihood.
If I don't specify a particular process estimator, Mathematica will look at
the structure of the data and then use this to work out what is the optimal
method to use. So it comes back, specifies this. Now, once I've got the
estimated process and the actual data, I can then just quite simply use one
function, time series forecast.
So starting with the data and the estimated process, but let's predict what
the next 26 values will be. And now let's plot up the stocks and the
forecasted value. And you can see this is what it's saying will happen. So
Starbucks, according to this, was going to make a lot of money in 2014.
We've got a whole range of functions to do with graph theory. And in this
particular one, we can use functions, for instance, such as hit centrality
which looks at the list of authority in hub centralities in any graph. And
in doing so, I can go into the Web site, take these, feed in the data from
the Web site, and do an analysis about how the information is flowing through
that system.
We also have image processing and machine learning built into Mathematica.
So in this particular case here, you can see we've got a number of images.
And what I've done is taken each image and associated it with a tag. I'm
trying to classify whether it's going to be -- it's a picture taken during
the night or during the day.
And I just feed this now directly into our classify function. And what it
will do is return a classifier function that used logistic regression and
identified that there were two classes, night and day, and then I can feed in
a bunch of images and say let's build a grid of images of this and find out
basically, you know, which one is going to be night, which one is going to be
day and see how this goes. And here it is. So it breaks it down and quite
correctly determines that these -- so these are images that were not part of
its input, but it has taught itself basically to distinguish in pictures
between night and day.
We've also got image segmentation. So here I can start with an image. I can
provide -- so I could say let's -- so let's do this and now let's remove the
background in our image. Okay. And then I can compose an image. What I'm
doing here is saying basically let's go in and look at various cloud types.
And let's now stick these, compose this with the foreground that we did and
rebuild the previous image. This is taking a second, just as it went. And
so here is the new image.
So additional functionality include enhanced color support for 3D image, as
well as segmentation, feature detection, and so on.
So one of the new sort of image processing functions, we can start with an
image, okay, I can do -- break it down to look at all of the various
components and then color these in order to analyze this in greater depth.
So basically getting component measurements.
So in this particular case, for instance, it could be we're trying to
determine something like sickle cell anemia by looking at cells in a blood
stain. And now we count the number for each of the cells and look at their
elongation. I can now calculate this directly in Mathematica by saying,
okay, let's draw a histogram where basically let's just count the number of
elements that are of a certain length. And, in fact, let's go into it a bit
more detail and ask how many cells -- let's select only those cells that are
of elongation greater than 0.5, which cells satisfy that criteria.
More machine learning. There's a number of different methods. So here what
we're doing is we've got digit classification. So basically this is a
handwriting version of the first ten digits. We use this to train the
function and then come back and apply it to this list here. And you'll
notice that it's got everything right except for 6, which it interpreted it
as a 4.
So we go and ask it. Tell me what are the top probabilities associated with
6. If you didn't think it was 6, why did you think it was 4? And it comes
back and says, well, I thought it was 4 because it has a great -- I also
thought there was a certain probability of it being 6 and 0, and these are
their associated probabilities. So I assumed it was 4 because it had a
higher probability associated with it.
So we can analyze data. So here's a random generation of data from
multinomial distribution. And then I will do a cluster analysis of this
based upon various versions of the classification analysis with the logistic
regression, nearest neighbors, random forest, and the rest.
Now we also, as I was saying beforehand, we have a link to Hadoop. But in
version 10 -- this was introduced in version 9. In version 10 we don't
introduce the lot of the functions that are in Hadoop, the concept of
association we've already shown, but we can also deal with HDFS files.
have the MapReduce function built in now into Mathematica.
We
And you can apply this to things like Jane Austen's Pride and Prejudice to
give a frequency distribution of all of the 4-grams in that novel.
I think Nigel has already shown this. We cover a wide range of functional
visualization, 2D, 3D, charting and statistical. And this includes things
like 2D plots, parametric plot with two variables, contour plot, a density
plot, a region plot. This involves new concepts that have been built into
Mathematica that allows it to study statistical aspects of measure such as
Lebesgue measure.
And then we've got polar plots, vector plots, stream plots, and all of their
3D counterparts. And charting. Okay. Both 2D and 3D, including bubble -3D bubble charts and statistical visualization, whether their histograms, 3D
histograms, paired histograms. And also you can smooth your histograms with
a kernel of your own choice. It doesn't have to be a Gaussian kernel. You
can define any such function or a matrix.
The visualization functions in Mathematica are very powerful. So here we've
got two functions, half a sine and twice a cause function. Okay. Show that
this is actually happening in real time. This is the same thing calculated
over a wider range.
We can do functions parametrically. So this is the X and the Y component
expressed as functions of the one parameter T. Okay. We can do things
like -- now, what I can do also is take functions -- these are sinusoidal
functions. They depend upon one parameter, theta, as it goes from 0 to 2 pi
radians.
But what I'm going to do is associate with each image a tool tip. So now as
I pass over this, okay, it will tell me what the actual function is. Or it
should do. Ah, there it is.
Okay. We can do parametric plots in 3D. So here are the X, Y, and Z values
that depend now upon two parameters. As these vary, we get this cone. Okay.
Here we've got again a contour plot in 3D. Depends upon three variables.
And I can also change things like the color style and everything like this.
And also, once I produce it, now being an object in the 3D space, I can move
it around.
And we've got other metrics plots, regions plots, vector plots, density
plots. And in 3D, revolution plots, parametric plots, contour plots, and so
on. Basically every possibly type of function and data visualization is
built into Mathematica.
For histograms, so we can feed in -- so here's a normal distribution. Here
is its mean and standard deviation. I can generate any random real values
from this. So 200 of them. And then stick them into a histogram.
So as you can see, one line of code does a hell of a lot. And this is
typical of Mathematica. That you don't have to actually think about writing
up the description of the normal distribution. That's a built-in function.
You merely have to specify it. If you then want to do Monte Carlo estimation
of it, you just say I'd like random real values, specify the number, and then
say I'd like to see this stuck into a histogram. And then you can even
specify any aspects or properties of that histogram.
Here, for instance, I've got overlays. I'm going to do Poisson
distributions. So I'm basically drawing the histogram of the Poisson
distribution. And then I'm asking the program, well, since it already knows
Poisson distribution symbolically, then tell me what their PDF is, their
probability density function.
Now, let I vary from 1 up to 5. So I'm going to have five such distributions
and I'm going to draw their probability density plot against the histogram
plot. As you can see, we regenerate all of this. It shows that the Monte
Carlo estimation that's being used by Mathematica is quite accurate.
So this is more or less like a catalog of all our different functions.
Plotting curves in the plane, representation of surfaces and so on. I can
click on any of these and actually go to this area in our help file. And
always these are all interactive as well. It will recalculate it.
And for every function, it always has options. So the notion here okay is
that there is a general function, but of course you might want to modify it
in any way. You can go down more or less into the guts of the function
itself and have it modify its behavior according to different methods. You
can even write your own methods as special functions.
But particularly for graphics functions, you should be able to modify them in
a way that indicates how it is you want to do so. So here, for instance,
we're just doing -- we're plotting sine and cosine functions, and I'd like to
fill it. So the automatic filling would be to the X axis or I could fill it
to the top as the maximum value of the two functions, or I could fill it to a
particular point. Or here I could say let's fill in the space between the
two curves and let's do so in an oscillating manner from yellow to green.
So we have chart element functions here. So I've got different charts, pie
charts, and I can then label them. You can label charts in many different
ways by basically saying the actual position in the 2D or 3D space where you
want to put the positions of the markers.
And we can also generate reports from this. So here's a report, for
instance, where we've got the G8. We're looking at the populations of the G8
countries. And we color their positions on the map and then build histograms
out of their national flags.
So we can do things -- this is how easy it is to build up functions in
Mathematica. I want to compare a distribution with its histogram. So I
build a compare histogram 3D function. This is a couple lines of code. I
then build in or call upon our multinormal distribution. And now let's
compare this multinormal distribution with the PDF. And here we have -- so
the PDF of the multinormal distribution -- let me make this a little
bigger -- and its histogram.
And you can see how the histogram more or less encapsulates the actual PDF
function. And we can do the same thing for the CDF. Again, let's make this
bigger. And again you can see that the histograms encapsulate the actual CDF
function, acting like a stepping stones over it.
We can also take textures and include these as overlays on the surface of the
map. And these functionalities can also be kept and stored and sent off to
create real objects such as plastic coloring and stuff like that.
Now, we have financial capabilities. So here I've got an interactive chart.
That allows me to load in values from Amazon. I can say I'd like to look at
the volume; the RSI, the relative strength index; and the Bollinger Bands.
I can choose other types of indicators as well. I could say let's go and go
down here and let's look at momentum type indicators and let's add a moving
average convergence/divergence. And here you can see it. Here's the MACD.
And as I move my cursor over the graph, you can see the corresponding points
on all of the financial indicators and the actual graph of values.
And we can choose which region I'd like to look at within the history of the
stock.
We've got geospatial visualizations. So this is actually being used online,
I think, by a company to look at Medicare beneficiaries with heart disease
around the country. And also the same for diabetes and the rest. And in
that particular case, okay, when I went and clicked on the case for diabetes,
then I think it's now going offline and looking at how this was generated.
So here is -- yes. And here is the site online.
within Mathematica.
All of this work was done
Okay. We can drill down into it. We can build interactive maps. So here,
for instance, I've put in let's go into Chicago. I want satellite images. I
want to zoom out, zoom in. Okay. Perhaps I want a roadmap instead. Or I'd
like to actually look at the terrain itself or some type of hybrid function.
So basically we could do all of the same type of stuff that you already find
in Google Maps.
You can create your own interactive interfaces. So basically these are
examples that all use the manipulate function. So the manipulate function is
worth looking at in its own right. And so I'll just quickly go into the help
file to look at it.
Okay. This is basically a wrapper function. So it's like a generalized Java
GUI that allows you to feed in any Mathematica code that describes a model
with three parameters. So we've got here a situation where we're plotting a
sine function, and we've got the frequency A, and I'm allowing it to change.
If I just allowed it to change up to 4, for instance, then I'd get a
different function here. And now as I move the frequency here, you can see
the function is changing.
So this is a very powerful function. What it does is allow you to put in a
new model and see how the choice of the parameters effect your result. So
here I want to map for instance the cosine function. I can choose the
various coloring that I want, the filling that I want, and so on and so
forth.
I can study a circular, rotary, or star engine. I can change the number of
cylinders. Let's go for seven such cylinders. And then I can have it cycle
through various movements or I could say okay, let's just start playing it.
This was a problem that was shown beforehand. What we're doing here is
solving a partial differential equation interest the electrostatic potential
between two point charges, Q1 and Q2, as I change their strengths, their
relative strengths, so the electric field changes.
And this is a predator-prey model, where we've got foxes feeding on rabbits.
I can change the growth rate for the rabbits and their mobility so they can
get out of the range of the foxes. And the same thing for the foxes. And
the number of steps that we want to go through.
And then I can run the simulation. I can stop it, reset it and run it
So all of these -- so in this particular case, the predator-prey model
linked second-order PDE, and I'm just going through all of the various
in it. So the output for one stage feeds into the input of the second
again.
is a
stages
stage.
The other thing that Mathematica is capable of doing, of course, is talking
to our online program, Wolfram|Alpha. So that now all of the capabilities of
Wolfram|Alpha can be accessed programmatically within Mathematica.
So the way this is done now is to define various entities. So here what I'm
doing is looking at the entity which is of the type or class administrative
division. And I want the entity list, the list of all such entities that are
basically in France. And I also want the corresponding list of
administrative divisions that are in Illinois in the United States.
When I evaluate each of these, you can see all of the various regions in
France. And as I pass my cursor over them, you can see that they are both --
they are all entity objects of the type that I requested.
for in Illinois.
And the same thing
Now, we can use this new function in Mathematica, the GO region plot and also
its value plot. So I'm now going to go into France, look at all of the
departments that we specified. And what I'm going to do is associate with
each of these some just basically a random number. So what I'm trying to do
is identify each of the different administrative divisions within France,
giving them different random numbers, and then turning this into a value plot
that's going to be based upon a color scheme.
Or what I could do is associate it instead of with a random number with the
actual population size. You can see that largely population of France is
uniform except, say, in the south, in the southwest region and in the
northwest regions.
I can go in here and do a similar type thing saying, all right, let's
associate each of these countries with different numbers, and then these
would actually be the sort of heat colorations for each of the countries, and
then I can put all of these into a geo plot in order to color them. And the
same thing can be done again with all the administrative divisions for
Illinois and Vermont.
Or I could associate -- I could say, okay, let's find all of the different
countries within Africa, all the different nation states in Africa. And then
I'm going to associate with each of these -- I'm going to get each common
name, form a polygon out of it, and then plot it all up.
And the same thing can be done. So again, all of these -- these are
basically if I was to go into Wolfram|Alpha, and Wolfram|Alpha allows us to
ask any type of question. So we could, say, for instance, go in and say,
look, tell me about Mona Lisa. Okay. So we enter that value in. And it
comes back and it says, well, it's an artwork. Do you agree? Yes, I say
yes, I accept this.
And as you can see here, as I leave the cursor over, it says it's an entity
type object. Now, being an entity, it has properties. So I can ask it about
one of its properties, or any of its properties, and say -- that's got to be
a capital -- tell me about it. And it says okay, yes. So ->>:
Five minutes, maybe.
>> Michael Kelly: Five minutes. Okay. So I can get images, things like
this about it. I should be able to say -- let's copy that, put it here. And
then say yes, tell me the -- should be an image. Yes. So let's do just
image there. Okay. And there's the image for the Mona Lisa.
So in this way I can mix and match, as it were, real-world knowledge with
mathematical capabilities. No, I don't want to go into that.
We've also got integration with R. So we can do patent classification, for
instance, in R, we can load in R. We've got a link to it. This is a two-way
link. You can do your coding within Mathematica and then have it calculate
these things directly using R functions as well. So here we've got singular
value decomposition looking for the two principal components in analysis of
data. Here I call in various other external libraries and then do a similar
type of classification analysis within R.
As I said, we've also got the Hadoop package, and we can load that in. We've
got similar corresponding functions in Mathematica to things that we've got
in Hadoop. So, for instance, we've got the function -- the MapReduce
function in Mathematica. It's called group by. So suppose I had a list of
functions and what I would like to do is associate each element with the way
it's -- its result under the action of the function F. So F is unspecified
at this time. So it sets up an association between the application of the
function F and those elements that are going to be the same as it.
So if I applied, for instance, to this range of negative and positive numbers
the absolute value, you'd find that the absolute value 3 is associated with
both minus 3 and plus 3. The absolute value 2 is associated with both minus
2 and plus 2. I could go into a list of pairs, and I'd see that for the
original list of pairs, both the pair AB and AC have the same common element
A. And so on. Or I could look at the elements that have the same common
last element, C.
So all of these type of functions which occur in Hadoop also can be applied
in Mathematica. I can merge common elements together. So here, for
instance, I've got the same key value, A, being associated with X and Y. Now
when I merge them under the application, the function F, it would be that A
is going to be associated with both F applied to X and Y, whereas B stands
alone.
So not only can you merge elements that share common features but you can
apply a function to it and then merge those features that are the same under
the action of some transformation function.
So here, for instance, you notice we've got the same two keys, A and B, but
associated with different values. I'd like to merge both datasets in such a
way that what I'm now interested in is the total of the common values. So we
should get A associated with the sum of these two elements, 1 and 5, that is
6, and B associated with the sum of 2 and 10, 12.
And we've got application development. So basically using the capabilities
that I've already outlined, the use of the manipulate function. We can do -load in the data. So this is an example of an actual model that was built
for a consult. We can study things like the oil spill in the Gulf of Mexico.
This entire thing is done in Mathematica. In fact, as I click on it here, I
bring up the notebook and I can run it, run through it and study this in
detail.
So in the limited time, I really haven't got all that much -- I can't cover
all of the capabilities in Mathematica. Let me just end with just one
further comment, which is really ->> Nigel Hess: Maybe put our e-mails up on there? Because I didn't get a
chance to do that just in case they have questions or -- or just my e-mail.
>> Michael Kelly: I've just got one thing. I thought we'd just actually
show the cloud deployment. So one of the new aspects that Mathematica has is
deployment to the cloud. So what you can do is do an evaluation function
within Mathematica and send the result to the cloud. So I could, for
instance -- let's go in, get a file that has a piece of code in it, very
simple code. I will bring this out, make it a bit bigger.
And so what I'm going to do here is, yes -- so basically I'm going to create
a piece of code. What this code is going to do is say let's create a form in
the cloud where you can specify the stock and the number of days of its
history that you want to analyze. It will then go and look up the financial
data for that stock and the number of days back in history. And it will put
up a title to this, create a gift function, and put it in a separate -- give
it a separate directory.
Now, this is then being created. I can click on this. It comes to the
cloud, and I could say yes, tell me about Microsoft and let's look at its
value, say, over the last 360 days. And let's submit that. And here we are.
So here is the stock price of Microsoft over the last 360 days.
So going to the very end, this is your thing at the very end, Nigel?
>> Nigel Hess: It might be on the first slide. Or we could just -- you
could just type it in there, nigelh@wolfram.com.
>> Michael Kelly: So -- oh, no, it doesn't seem to want to let me do it.
But, anyway, let's do it here. So for Nigel, if you need to ask any further
questions, his e-mail is nigelh@wolfram.com. And for myself, it's
mkelly@wolfram.com. Nigel's concerned with sales; I'm more concerned with
the -- and let me make this a bit bigger. And I'm concerned mainly with
consulting and also the solution of financial and statistical problems.
But thank you very much for having us here and boring you to death. And I
hope that if you have any further questions or topics of interest, as I said,
Mathematica is a very, very large program indeed. But because of it, it
really has such a wide range of functions that cover every possible area of
human knowledge and scientific application.
And many of the world's leading firms, both intellectual, financial,
engineering, and otherwise, use our products because they make it so much
easier to solve problems than going down and using procedural programs at a
basic level. It takes time. You have to find the libraries. You have to
find the people. Here everything is already precalculated, thought out in
detail and interlocking and interlinking.
So thank you very much.
Download