一、什么是机器学习:
以下内容摘自百度百科:“机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。”
看完知道什么是机器学习了吗,不管你知不知道,反正我是不知道。
那么问题来了,如何用人话解释一下机器学习?下面我们看看斯坦福大学的印度学生 Pararth Shah在Quora(我们可以把它理解为外国的知乎)上对机器学习的解释:
买点芒果去
假设有一天你准备去买点芒果。有个小贩摆放了一车。你可以一个一个挑,然后小贩根据你挑的芒果的斤两来算钱(在印度的典型情况)。显然,你想挑最甜最熟的芒果对吧(因为小贩是按芒果的重量来算钱,而不是按芒果的品质来算钱的)。可是你准备怎么挑呢?
你记得奶奶和你说过, 嫩黄的芒果比暗黄的甜。所以你有了一个简单的判断标准:只挑嫩黄的芒果。你检查各个芒果的颜色, 挑了些嫩黄的,买单,走人,爽不?
可没那么简单。
生活是很复杂的
你回到家,开始慢慢品尝你的芒果。你发现有一些芒果没有想的那么甜。你焦虑了。显然,奶奶的智慧不够啊。挑芒果可不是看看颜色那么简答的。
经过深思熟虑(并且尝了各种不同类型的芒果),你发现那些大个儿的,嫩黄的芒果绝对是甜的,而小个儿,嫩黄的芒果,只有一半的时候是甜的(比如你买了100个嫩黄的芒果,50个比较大,50个比较小,那么你会发现50个大个儿的芒果是甜的,而50个小个儿的芒果,平均只有25个是甜的)。
你对自己的发现非常开心,下次去买芒果的时候你就将这些规则牢牢的记在心里。但是下次再来到市集的时候,你发现你最喜欢的那家芒果摊搬出了镇子。于是你决定从其它卖芒果的小贩那里购买芒果,但是这位小贩的芒果和之前那位产地不同。现在,你突然发现你之前学到的挑芒果办法(大个儿的嫩黄的芒果最甜)又行不通了。你得从头再学过。你在那位小贩那里,品尝了各类芒果,你发现在这里,小个儿、暗黄的芒果其实才是最甜的。
没多久,你在其它城市的远房表妹来看你。你准备好好请她吃顿芒果。但是她说芒果甜不甜无所谓,她要的芒果一定要是最多汁的。于是,你又用你的方法品尝了各种芒果,发现比较软的芒果比较多汁。
之后,你搬去了其它国家。在那里,芒果吃起来和你家乡的味道完全不一样。你发现绿芒果其实比黄芒果好吃。
再接着,你娶了一位讨厌芒果的太太。她喜欢吃苹果。你得天天去买苹果。于是,你之前积累的那些挑芒果的经验一下子变的一文不值。你得用同样的方法,去学习苹果的各项物理属性和它的味道间的关系。你确实这样做了,因为你爱她。
有请计算机程序出场
现在想象一下,最近你正在写一个计算机程序帮你挑选芒果(或者苹果)。你会写下如下的规则:
if(颜色是嫩黄and 尺寸是大的 and 购自最喜欢的小贩): 芒果是甜的
if(软的): 芒果是多汁的
等等等等。
你会用这些规则来挑选芒果。你甚至会让你的小弟去按照这个规则列表去买芒果,而且确定他一定会买到你满意的芒果。
但是一旦在你的芒果实验中有了新的发现,你就不得不手动修改这份规则列表。你得搞清楚影响芒果质量的所有因素的错综复杂的细节。
如果问题越来越复杂, 则你要针对所有的芒果类型,手动地制定挑选规就变得非常困难。你的研究将让你拿到芒果科学的博士学位(如果有这样的学位的话)。
可谁有那么多时间去做这事儿呢。
有请机器学习算法
机器学习算法是由普通的算法演化而来。通过自动地从提供的数据中学习,它会让你的程序变得更“聪明”。
你从市场上的芒果里随机的抽取一定的样品(训练数据),制作一张表格, 上面记着每个芒果的物理属性, 比如颜色, 大小,形状, 产地, 卖家, 等等。(这些称之为特征)。
还记录下这个芒果甜不甜, 是否多汁,是否成熟(输出变量)。你将这些数据提供给一个机器学习算法(分类算法/回归算法),然后它就会学习出一个关于芒果的物理属性和它的质量之间关系的模型。
下次你再去市集, 只要测测那些芒果的特性(测试数据),然后将它输入一个机器学习算法。算法将根据之前计算出的模型来预测芒果是甜的,熟的,并且/还是多汁的。
该算法内部使用的规则其实就是类似你之前手写在纸上的那些规则(例如,决策树),或者更多涉及到的东西,但是基本上你就不需要担心这个了。
瞧,你现在可以满怀自信的去买芒果了,根本不用考虑那些挑选芒果的细节。更重要的是,你可以让你的算法随着时间越变越好(增强学习),当它读进更多的训练数据,它就会更加准确,并且在做了错误的预测之后自我修正。但是最棒的地方在于,你可以用同样的算法去训练不同的模型, 比如预测苹果质量的模型, 桔子的,香蕉的,葡萄的,樱桃的,西瓜的,让所有你心爱的人开心:)
这,就是专属于你的机器学习,是不是很酷啊。
二、机器学习过程中有哪些关键要素:
从 Pararth Shah的故事中我们可以看到,机器学习有以下几个要素:
(一) 训练数据:我要有一堆芒果(或者别的什么水果),并且我要知道每一个芒果的属性,比如颜色,大小,形状,产地,卖家,等等(特征);以及每一个芒果甜不甜,是否多汁,是否成熟(输出变量)。这些芒果的覆盖面越广越好,挑选的随机性越高越好。
(二) 特征:就是芒果的属性比如颜色,大小,形状,产地,卖家,等等,芒果可能有很多特征,但是如果想要得到一个靠谱的机器学习算法,我们就要挑选那些对期望的结果(比如:甜不甜)关联性高的那些特征。
(三) 输出变量:就是我们最终想要的结果,芒果甜不甜,是否多汁,是否成熟,等等。
(四) 算法:我们需要挑选一个算法,决策树、贝叶斯算法、神经网络还是遗传算法。可能我现在还不完全知道这些名词是什么意思,没关系,后面有时间会慢慢学习。
(五) 测试数据:如果我们已经训练出了一个算法,我可以去测试它,看看学习的结论是否有效。因此,我需要一些测试数据和对算法的评估标准。
(六) 增强学习:这个世界上唯一不变的就是变化。芒果在变,市场在变,用户也在变,如果我的算法需要适应这些变化,我需要不断地有增量的训练数据,并且需要一个增强学习的算法。
三、机器学习如何应用到营销过程中:
如果不知道要去哪儿,再怎么努力的走都是错误的。
在市场营销的时候,通常我们会遇到以下两个问题:
1、给定一个用户,我要不要向他营销,向他营销什么?
2、给定一个产品,我要向哪些用户进行营销?
可能在业务人员看来,这就是一个问题,但是对于一个码农来说,这绝对是两个问题。虽然本质上都是对用户进行分类,但是需要的训练数据不一样,在算法的选择上也有不同的侧重,测试方法也不一样。
下面我们逐一来看一下机器学习的关键要素在现实世界营销场景中的情况:
· 训练数据:是的,我们有营销的结果,虽然这个结果会受到种种其它因素的影响(比如:KPI的力度,营业员的能力与心情,产品本身的吸引力与受理的方便程度,等等)。如果要得到有效的训练数据,最好能将上述的其它因素考虑在内。当然,如果实在不行,这样的训练数据也可以用。回到上面说的目标,不同的问题,训练数据是有差异的:如果是为用户找合适的产品,倾向于取全量的用户样本数据(无论是否进行了营销)进行训练;如果是为产品找合适的用户,则倾向于取营销结果数据进行训练。
· 特征:现在我们已经有了上千的客户标签,但是,针对一个特殊的学习目标,我们如何从上千个客户标签中挑选合适的那些,在这方面,市场营销的经验可能比大数据的计算能力更为重要。同时,一些影响销售的关键数据是否我们还有缺失?
· 输出变量:一般来说,我们是要对用户进行分类,要营销、不营销、营销什么?
· 算法:这个应该不是太困难,很多算法都有开源的代码,相对比较成熟,这儿需要的能力是判断什么样的算法适合什么样的营销场景。
· 测试数据:有了算法之后,需要将结果再次放到营销系统中去进行验证,需要解决的问题有两个:1、如何评估验证的结果?2、现在的营销,阶段性的比较多,等我的算法出来,市场人员告诉我已经不营销这个了。
· 增强学习:首先,还是要有一个相对持续时间较长的营销活动,才能谈得上不断优化营销规则。当然,如果我能标识出两个营销活动的本质其实是一样的,上一个营销活动的学习结果也能应用到新的活动中。而标识需要业务经验。
以上是对机器学习算法及应用的一些近期的学习心得与笔记,很多因为刚学可能还没想清楚或者概念错误,希望大家批评指正。
下期预告:决策树算法。