Practical Machine Learning For The Uninitiated

Last fall when I took on ShippingEasy’s machine learning problem, I had no practical
experience in the field. Getting such a task put on my plate was somewhat terrifying, and even more so as we started to wade into the waters of machine learning. Ultimately, we overcame those obstacles anddelivered
a solution that allowed us to automate our customer’s actions with greater than 95% accuracy
. Here are some of the challenges that we experienced when applying machine learning to the shipping & fulfilment domain, and how we broke through them.

Lost in Translation

Machine learning is a subfield of computer science stemming from research into artificial intelligence.[3] It has strong ties to statistics and mathematical optimization, which deliver methods, theory and application domains to the field.

So sayeth the Wikipedia. These roots are where the lexicon of the machine learning stems from. If you have
not been working directly in machine learning, statistics, math or AI, or perhaps your exposure to these are long past, a discussion about machine learning will be hard to follow. Often it is taken for granted that you know what classification, regression,
clustering, supervised, unsupervised, feature vector, sample, over-fitting, binning, banding, density and a host of other terms mean.

As a result, you will be somewhat lost until you can get familiar with this language. Getting a
good book will help. I would recommend Machine Learning, a short course. It clocks in at less than 200 pages, and so is something
that a working professional can consume. Even if you can’t follow everything in the book, reading through it will give you a foundation that will allow you to make use of all the other resources you may find online.

To give you a starting point to building your vocabulary, I will offer a few terms here that will help determine what type of machine learning problem you are dealing with.

Supervised vs Unsupervised Learning: Supervised learning is where you have a set
of input data with known outcomes by which you wish to predict the outcome of future inputs. Our problem at ShippingEasy was
of this type. We had past orders and shipments and needed to predict shipments given future orders. Unsupervised
learning
 is where you have input data, but no known outcomes. You are searching for what features have meaning within a set of data. If graphed, the data will form clusters around the patterns of meaningful features.

Classification vs Regression: Within supervised learning, there are problems of classification and regression. Classification is
where you wish to determine the class (output) of an input. For instance, predicting what shirt color a person may wear on a given day based on data about what shirts they have worn in the past. The different shirt colors are the classes that you are attempting
to predict.

Regression is where you wish to determine a numeric value given other numeric inputs describing the sample.
For instance, predicting an engineer’s salary based on age and years in the industry. Given enough past data, you could arrive at a statistically relevant salary figure given an arbitrary age and years in the industry (assuming true relationships between age,
years in industry and salary).

Algorithmic Obsession

Once you have a foundation of concepts and language, you can start looking into all of the amazing resources
on the web for machine learning.Stanford’s machine learning videos are great, as are mathematicalmonk’s
youtube videos
.

These are fantastic resources for learning how to write machine learning algorithms. But these turned out to not be of much use to me. Not because they are not great, but because the practical application of machine learning is about solving
a domain problem, not writing machine learning algorithms. To make the point, consider this portion of a machine learning algorithm expressed in mathematical notation (which is yet another barrier to the uninitiated):

What does this have to do with the problem you are trying to solve? Absolutely nothing. This is a
description of one portion of an algorithm that may be fed arbitrary data to produce statistically relevant results. It has been implemented by someone smarter than you in
an open source library
or possibly a service offering that
have been well exercised by a large audience. You could implement it perfectly, and it could produce great results or really bad results. It all depends on the relevancy of the data you feed to it, which brings me to my last point.

Its the Data, Stupid

While there are a tremendous number of resources for how to write machine learning algorithms, there are not many dealing with how to find relevant data within a domain that will allow an algorithm to produce accurate results. This is where you will find that
you have spent most of your time, effort and creativity at the end of an applied machine learning project if you were smart enough to use a good machine learning library or service.

That algorithms dominate the resources for machine learning makes a certain amount of sense. Algorithms
are generic and have practicability for many different scenarios. TheK-Nearest Neighbor algorithm
may be able to predict what movies you would like to watch on Netflix, or it might be able to predict which sex offenders are at high risk for recidivism. These different applications of K-Nearest neighbor would have very different data that needs to be surfaced
from their respective domains and fed to them, however.

There exists an area of machine learning geared towards feature detection, and I won’t dismiss its validity.
I will say, however, that if someone understands the domains of movie consumption and purchasing dynamics or criminal behavior, justice and rehabilitation, they have a leg up in practically applying machine learning to those domains. For even if there is a
statistical correlation between day of the week and movie choices, it does not mean that there is a causative relationship between them. Understanding the domain can help you ascertain if it does.

Some of the data will be obvious. It winds up being a value in a column of a row in the database and it screams its pertinence. Some will be much less obvious and need to be inferred. For instance, for the sex offender recidivism problem, there are probably
a number of criminal incidents, each with a timestamp for when they occurred. For any given person, the amount of time that has passed since their last criminal event, in days, might need to be calculated and included with the data sent to the algorithm. This
‘freshness’ of their criminal activity needs to be inferred from your data, and it may be a key to getting the desired results in predicting future likelihood of behavior. Or it might not.

I think the moral of the story here is that to really apply machine learning in a practical way, being a mathematical or statistical wizard is not the most important element of success. What I feel is more important is having an understanding of the domain
to know what data is relevant and an explorers curiosity to have meaningful hunches and a willingness to explore and vet them. You will need to be comfortable employing something resembling a scientific method – ensuring accuracy is measurable, quantifying
the effects of change, and meticulously exploring isolated changes to discover what data affects a system.

In conclusion

Employing machine learning to solve domain problems can provide huge value to a company
or the public at large. Learning machine learning and how to properly apply it to a domain, however, can be challenging. You will need to develop a knowledge of the fundamentals of machine learning, but do not need to be a computer science, math or statistics
guru to employ it. Leverage existing libs or services, and then focus your efforts on finding the meaningful data within the domain, both obvious and obscure, that will allow satisfactory results to be achieved.

Practical Machine Learning For The Uninitiated的更多相关文章

  1. 【机器学习Machine Learning】资料大全

    昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...

  2. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  3. How to use data analysis for machine learning (example, part 1)

    In my last article, I stated that for practitioners (as opposed to theorists), the real prerequisite ...

  4. How do I learn machine learning?

    https://www.quora.com/How-do-I-learn-machine-learning-1?redirected_qid=6578644   How Can I Learn X? ...

  5. A Gentle Guide to Machine Learning

    A Gentle Guide to Machine Learning Machine Learning is a subfield within Artificial Intelligence tha ...

  6. 机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...

  7. Lessons learned developing a practical large scale machine learning system

    原文:http://googleresearch.blogspot.jp/2010/04/lessons-learned-developing-practical.html Lessons learn ...

  8. Practical Black-Box Attacks against Machine Learning

    目录 概 主要内容 Jacobian-based Dataset Augmentation Note Papernot N, Mcdaniel P, Goodfellow I, et al. Prac ...

  9. [Machine Learning & Algorithm]CAML机器学习系列2:深入浅出ML之Entropy-Based家族

    声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 写在前面 记得在<Pattern Recognition And Machine ...

随机推荐

  1. CardboardCamera Prefab 中文笔记

    在Cardboard的预制体(Prefab)中, CardboardCamera是最简单的一个,仅有两个子物体,一个PostRender, 一个PreRender,以及分别带的Camera组件. Ca ...

  2. 办公软件Office PPT 2010视频教程从入门到精通系列教程(22课时)

    办公软件Office PPT 2010视频教程从入门到精通系列教程(22课时) 乔布斯的成功离不开美轮美奂的幻灯片效果,一个成功的商务人士.部门经理也少不了各种各样的PPT幻灯片.绿色资源网给你提供了 ...

  3. Activiti系列: 如何给内置表单添加字段类型

     对于内置的表单,除了原来支持的几种数据类型(string, long, enum, date, boolean, collection)之外,还可以自定义数据类型,比如增加一个javascript数 ...

  4. Linux第四次学习笔记

    程序的机器级表示 寻址方式的演变 DOS → 8086 → IA32 Inter处理器系列俗称x86,其演变过程(根据其所需要的晶体管数量来说明): 8086 → 80286 → i386 → i48 ...

  5. 《Java程序设计》第五次实验实验报告

    实验封面 一.实验内容 1.阅读理解源码进入07_httpd所在的目录,使用vi编辑器理解源代码. 2.编译应用程序使用gcc编译器,分别对文件夹下的copy.c和httpd.c进行编译,出现copy ...

  6. canvas学习笔记:小小滴公式,大大滴乐趣

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 最近想弄一个网页,把自己学HTML5过程中做的部分DEMO放上去做集合,但是,如果就仅仅做个网页把所有DEMO一个一个排列又觉得太难看了. ...

  7. [转]Extundelete--数据恢复软件

    前言 作为一名运维人员,保证数据的安全是根本职责,所以在维护系统的时候,要慎之又慎,但是有时难免会出现数据被误删除的情况,在这个时候该如何快速.有效地恢复数据显得至关重要,extundelete就是其 ...

  8. storm如何保证at least once语义?

    背景 前期收到的问题: 1.在Topology中我们可以指定spout.bolt的并行度,在提交Topology时Storm如何将spout.bolt自动发布到每个服务器并且控制服务的CPU.磁盘等资 ...

  9. 从士兵到程序员再到SOHO程序员

    2013年9月13日,我从就职了一年半的S公司正式离职,并开始了我梦寐以求的“SOHO程序员”之路. 这对于我来说,是一次人生道路上的重要选择,在这里,我想分享一下我是如何选择了这条道路的,同时也是对 ...

  10. Flask 开发全球化应用

    从C#世界迈入python总是令人有一种如释重负之感,同样的效果同样的功能,只需要付出1/10不到的代价,可能正是Python所倡导的简美哲学所带来的威力. 我还深深地记得在ASP.NET中做全球化的 ...