How much programming should I know before learning machine learning?

How much programming should I know before learning machine learning?

I am a math major with zero coding experience. I know almost all data science jobs involve some machine learning. Should I just dive right into machine learning, or is there a certain amount of basics I need first?

Other urls found in this thread:

Veeky
visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15
software.intel.com/en-us/qualify-for-free-software/student
sourceforge.net/projects/mingw/files/latest/download
lfd.uci.edu/~gohlke/pythonlibs/
stackoverflow.com/questions/2620343/what-is-machine-learning
mitpress.mit.edu/books/reinforcement-learning.
twitter.com/NSFWRedditVideo

>How much programming should I know before learning machine learning?
None? ML is applied prob/stats. Let the code monkeys do the implementation crap.

>how much programming
who gives a shit
>how much algorithms
if you don't know this, you're dead in the water.
Machine learning makes use of iterative paradigms, of which makes little sense from a math perspective. This can and will change with the rise of quantum computers, but let's be real, when are you ever going to be able to touch one?

Anyways, all you need to be able to do is think like a turing machine. Can you break down a problem such as "make me a sandwich" step by step, so that it can be done by retards on an assembly line?
As long as you grasp this basic concept you have no limit (in machine learning). Much of the mathematical operations you know of have already been implemented, but it would be useful for you to know how they work (in a computer) so that you understand performance traps and whatnot.

>Veeky Forums-science.wikia.com/wiki/Computer_Science_and_Engineering
Bare minimum:
>Basic Programming & Data Structures
>Algorithms
Realistically
>Various Programming Languages, Paradigms
>Advanced Algorithms and Mathematical Optimization
>Parallel Programming
>Databases
>Distributed Systems and Computing

Basically none. "Programming" is separate, and relates to the engineered web of software that runs the world. Not some applied mathematics.

>...have no limit
except for when you want to implement some parallel /concurrent algorithm

The more programming you now, the easier it will be for you to test things. You should at least be comfortable writing a full script where you can:
>load data /read text files
>iterate through the data using loops
>handling matrices
>make some plots

In practice, you should also be able to do debugging, which can be quite difficult for non computer people. And you should be able to install shit an set up your environment. Things like Matlab are easy as you basically only have to install one big program and it works. But things like python or C++ are non trivial to install, specially on Windows.

Finally, you should know how to "google stackoverflow" to find solutions for your errors.

>Cooking is applied chemistry. Let the kitchen monkeys do the chopping/grilling stuff.

I kind of wanted to tell everyone else in this thread they weren't making any sense by pretending you didn't need to program, so thank you for doing that.
That said:
>things like python or C++ are non trivial to install, specially on Windows.
???????????????????????????????????????????????????????????????
No? Where are you getting that idea from? It's fucking Windows, everything's trivial to install on Windows. You download the installation executable and then you run it.

Setting up a working Python environment in Windows is not trivial. You have to download the correct version, install it, then run a bunch of terminal commands to create environments, install packages / libraries. If you want an IDE you also need to get one and configure it to run in your installation.

It is not insanely difficult to do, but for someone that has never programmed a line of code, it might be difficult to do. Specially compared to Matlab where you only install one thing, and run one application.

what

>But things like python or C++ are non trivial to install, specially on Windows

WinPython makes it easy. Visual Studio is easy to install but it's not that obvious how to use it with external libraries but it doesn't take too long to learn how to point it to the right headers and libs.

try to find an exe installer of 64 bit c++ compiler on windows.

There is no fucking machine learning it's a meme.

How the fuck can circuitry learn anything? It's just recognition of state in a loop.

ML is closer to biology than it is to any necessary coding study.

If you study logic, computer logic, and then evolutionary biology to a rudimentary degree, you should understand the principles of ML. Though, it also requires a good degree of imagination- it's fun in the end though!

Selection. Test a program against some 'selection pressure' for its 'fitness', or ability to achieve higher success (defined by the operator), along with some randomized element. It mimics real life evolution in a novel, and almost beautiful way, and leads to optimizing programs in a way that manually would be difficult to come to.

visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15
software.intel.com/en-us/qualify-for-free-software/student

>WinPython makes it easy.
I haven't even heard of that until now, I still don't see how the regular Python installation is at all difficult or complicated.
>it's not that obvious how to use it with external libraries
I don't see how it could be any more obvious than it already is. You download the DLL and register it and it'll show up as a reference you can add like anything else, or you can even just skip the registering step and use the browse option to add a reference to wherever you downloaded the DLL to.

sourceforge.net/projects/mingw/files/latest/download

>I still don't see how the regular Python installation is at all difficult or complicated.

It's installing the libraries which may depend on other libraries that's annoying.

>mingw

Absolutely disgusting. Just use a virtual machine and clang.

>(in machine learning)
all parallelizable and concurrent algorithms can be reduced to sequential.

That's a lot like saying you don't need a car because you can cover the same distance in a much longer amount of time by walking.
I use VS, just wanted to add another example because I'm surprised anyone thought it was difficult to find and install a C++ compiler in the first place.

When programming in Python, doing anything remotely complex suddenly means that your whole project is controlled by libraries that depend on other libraries, who may or may not support the same versions of other libraries.
This then conflicts with the libraries you already have installed.

The solution to the centralization of packages is ironically the decentralization of packages. You create a virtual environment for your application (project) using venv or conda, which isolates your project and its dependencies from all of your other projects and their dependencies.

Of course, when you're first starting out programming as a data scientist, you don't want to be dealing with all of this technical debt, which is kind of ass.

This is one of the biggest headaches for machine learning with Python.

Machine learning libraries like scikit-learn require a number of libraries, and there are errors and problems that arise in trying to install them.

OP, have this link on hand, you might need it in future; lfd.uci.edu/~gohlke/pythonlibs/

It's definitely doable. One everything is set up scikit-learn is a breeze.

This is coming from a lawyer with zero formal programming or statistics training

Do a computer science degree if you want to go into a computer science field.

>ML
>a computer science field
lol

Wikipedia:
>Machine learning is a field of computer science that gives computers the ability to learn without being explicitly programmed.[1]

>What is Machine Learning?, asked on Stack overflow, not mathoverflow.
stackoverflow.com/questions/2620343/what-is-machine-learning

Learn R, Haskell, and C.

>R
No. Learn Python.

You can give Andrew NG's ML course on coursera a try, they don't seem to require much programmijg experience and they explain all the concepts you need anyways. I just completed week 2 and it seems you'll need math a lot more than programmingm
The course uses Octave and that's pretty easy to set up. After that I'll probably try to apply my knowledge in python since python and R seem to work real well with this

Most of the successful ML doesnt use evolutionary algorithms though

>setting up a development environment is trivial on Windows
lol'd

Oh? Maybe my rudimentary knowledge of ML isn't enough to weigh in then, my bad. I wasn't aware of this- I've only ever learned it from an evolutionary perspective. How does a machine learn if not by a selective process?

there's plenty of other ones, linear/logistic regression, k-means, gradient boosting etc etc. I'm not that educated in this subjec but I remember using genetic mutation for this once as well

Oh, I think I see what you mean. Yeah, I think I understand- if it's testing any algorithm against an expected, however the means of learning (for example, changing via gradient boost), isn't it still evolutionary? I'm not well-versed at all in the formality of studying ML, so I might just be mixing paradigms here, but it seems like the process of selection is still present, but the process of mutation just differs based on the type of algorithm you're using to change behavior.

Gradient decent isnt evolutionary since theres nothing random about it you use back propagation to change the weight on the neurons. Yes the decent will be stochastic but theres a reason the loss function (the error of classification) is a convex function.

Theres also reinforcement learning which works by estimating a value function of states. The value of a state depends on how much reward the program can expect to get from following a policy when in that state. Even if the rewads and state transitions are random the changes to the value function isnt random.

Oh okay! Thanks user. I suppose I might as well pick up a fucking book on it. As a genetics guy, I'm so used to random change that it's a little more difficult for me to intuit non-random changes, though even biological systems have evolved non-random mutagenesis pathways (that aren't very well understood yet) that lead to trying to optimize the system faster than random mutation + natural selection can.

Know any good books for any nonrandom methods employed to produce effective ML? I really appreciate the insight here.

This book is really good for reinforcement learning atleast. mitpress.mit.edu/books/reinforcement-learning. Dont know any good books for supervised learning or unsupervised learning sadly.

?
I really don't understand you people.

JUST GIVE MORE LAYERS

>Learn R

No human should be subjected to that hideous pile of shit. Its syntax is a crime.

You fucking idiot.

the point is windows is a pile of shit

Take an intro-level programming class, then a data structures class. That should be all you need to get the ball rolling for machine learning. Other helpful stuff includes:
>Discrete Math (should be easy if you're a math major)
>Analysis of Algorithms
>Functional Programming

t. CS kid currently enrolled in a machine learning class.

>t. CS kid
Oh it shows

It's better not to use a proprietary OS for completely unrelated reasons, but no way is installing an IDE on Windows difficult.
I'm still amazed anyone is agreeing with that sentiment. Having to deal with libraries that have prerequisites isn't some elaborate brain teaser, you find them and you download them.

Step 1. Download Anaconda.
Step 2. Run installer.
That's literally it.

MORE

>installing unecessary bloat

>Python with just scipy and related installed
>550MB
>WinPython with the bells
>1.0GB

I rather save my time.

-1 downvote