初始机器学习
什么是机器学习
什么是机器学习?
机器学习指的是计算机对历史数据进行统计分析,找出规律,建立模型,最关键的是可以对未来不确定性场景进行判断和决策
具体可见:什么是机器学习
那什么是不确定性的场景呢?比如说太阳明天从什么地方升起,这就是确定的场景,因为永远都是从东方升起,从西方落下。但是下个季度的能完成多少业绩,这就是不确定的。
理解机器学习需要注意以下几个要点:
-
对历史数据的分析的主体是机器而不是人,这就与数据分析区别开了。
数据分析因为主体是人,所以能分析出什么很大程度取决于人的水平。而机器学习其实就是想撇开人的因素,完全使用机器来挖掘数据
-
需要大量的原材料,也就是数据。
只有数据多了,能找出来的规律就越精准。
-
找出了规律如何落地:
从数据中挖掘出来的规律,其实就是一个函数,我们可以把输入代进去,就可以得到输出。
那机器挖掘出这个规律以后,会直接由机器生成代码。
从数据中寻找规律
全量数据分析
人们从数据中寻找规律的历史已经非常长了,还建立了概率论和统计学两们学科。
在过去很长一段时间里面,因为受限于人类的计算能力,我们对数据一般会先采样,建立模型。但是因为是采样的,一定有样本的损失,所以一般来说会回过头去验证这个模型是否靠谱。
那我们来总结一下整个流程:
抽样——描述统计——结论——假设检验
不过现在因为计算能力得到很大的提升,我们完全可以对全量的数据进行分析了。
从可视化到函数
假设我们现在想分析美国某个地区的气温的情况,最直观的方法是把历史数据画一个图,可视化展示,这样就可以直观的了解其规律。
比如从上图这个散点图里面,我们可以发现如下规律:
这些年的气温总体是上升的
局部是上下波动的。
这种方法最大的好处是直观,缺点是没办法进行计算,所以我们需要进行量化。
那怎么使用模型来拟合规律呢?
我们可以使用函数来拟合,然后通过函数画一条函数曲线。
我们希望这个函数曲线可以尽量的与之前的散点图拟合在一起。
机器学习发展的源动力
机器学习在这几年得到蓬勃发展,其主要动力是:
从历史数据中找出规律,可以辅助未来决策。
用数据代替专家
数据变现
业务系统发展的历史
最开始的时候基本上是靠人拍脑袋决定业务的方向,后面引入了数据的因素,也就是让一批懂数据分析的人,按照不同的维度整理报表,同样人的因素在里面依然重要。结论准确不准确,依靠的是这个人的经验如何。
而第三个阶段就是机器学习,可以分为离线以及在线学习。
离线学习:利用空余时间训练模型,然后把模型应用到原来的系统中。
在线学习:来一条数据就可以加入原有的模型中,也就是模型是实时更新的。主要还是电商、搜索等行业需求比较多。
在线学习和离线学习在算法层面其实没有什么差异。
机器学习的典型应用
关联规则
最典型的案例是啤酒和尿布,具体的可见什么是机器学习
这个算法也就有了个新的名称,叫“购物篮算法”
聚类
使用聚类可以解决用户细分精准营销的问题。聚类算法可以把一堆消费的数据进行分析,将用户分为若干类。再由业务人员去看哪一类的人员有什么样的消费特征。
朴素贝叶斯和决策树
朴素贝叶斯的典型应用是垃圾邮件识别。
贝叶斯就是通过一些公式计算事件A对事件B的发生概率的影响,所以垃圾邮件识别就是通过邮件的一些特征,比如一些关键词、发件人等来判断该邮件是垃圾邮件的概率。
决策树主要用在防信用卡欺诈上,主要是银行用来进行信贷的风险识别,以决定是否放贷给你,它可以识别你是否有能力偿还贷款,另一方面还可以判断你是否是恶意骗贷。
ctr预估和协同过滤
ctr预估主要用于搜索引擎的互联网广告,对于每条链接,百度都会对它进行点击率进行评估,然后把预测出来的最可能点击的链接放到第一位。里面使用的算法就叫“线性的逻辑回归”
协同过滤主要用在推荐系统里面。其实就非常类似于之前讲过的购物车分析,只是可能的算法不一样,但是要解决的问题都一样。
自然语言处理和图像识别
自然语言处理又是机器学习的另一个领域了,可以进行
情感分析
实体识别:可以把人名、地名等识别出来
深度学习目前主要用于图像识别,可以对图片进行深度学习 ,识别图片中人物的特征。
数据分析与机器学习的区别
本章主要介绍数据分析与机器学习之间的区别在哪里。
-
首先他们分析的数据不同,
数据分析主要处理的是交易数据,而机器学习主要分析的是行为数据,比如搜索历史、点击历史、评论等。
从这两类数据就衍生出数据量的不同,交易数据明显就是少量的数据,而用户的行为数据就是海量的数据。
对两种数据分析方法也是不一样的
对交易数据一致性要求非常高,而行为数据一致性要求并不高。所以行为数据一般使用NoSQL来处理。NoSQL数据库只能用来处理行为数据,因为它的底层架构就是分布式的,而且强调CAP的概念,也就是在保证数据吞吐量的前提下,会对一致性大大折扣。
所以对于交易数据而言,我们通常可以采用采样分析的方法。对行为数据,我们一般采用全量分析,这也是我们强调Hadoop等海量数据分析平台的原因
-
他们要回答的问题也是不一样的。
传统的数据分析,其实是想要报告历史上发生了的事情的。比如过年3年内,哪些是我们的优质客户,业绩如何等等。
而机器学习更重要的是预测未来会发生什么事情,这就是二者最本质的区别。
-
采用的技术手段不同。
数据分析主要是靠人的经验来进行分析建模,利用OLAP联机的分析工具。分析的能力受限于分析师本人。也限制了我们数据处理的维度以及属性。
而机器学习主要靠算法驱动,可以维度可以相当大。
部分算法其实已经比较成熟了,比如推荐系统等。
-
参与者不同。
数据分析主要靠分析师的能力。
而机器学习靠算法来驱动,主要靠数据质量来决定结果,而算法的区别其实没有那么悬殊。
-
服务的对象不同。
数据分析主要面向的还是高层,为他们提供决策驾驶舱。
机器学习更多的是面向个人。
常见的算法分类
分类
机器学习的算法相当之多,我们可以进行简单的分类,而且分类的方法也多种多样,
我们可以把算法分为:
- 有监督学习:
对分类数据提前打好了标签,然后对一堆数据进行训练。
典型的有监督学习算法是分类算法和回归算法,这两者明确给出了最终的目的是什么。比如分类算法给出了Y,也就是明确了最终可以区分出那些是垃圾,那些是正常邮件。
- 无监督学习
就是我们最终要分的类别其实我们事先是不知道的。最典型的就是聚类。只能让算法自己的推测出Y是什么。
-
半监督学习:也叫强化算法。
有目的,但是可能不准确,然后一步一步的修正。
第二种分类的方法是根据我们要解决的问题来进行分类。
分类与回归:根据问题来进行分类。
聚类
标注:给一段文本,对里面的词语打上标签。
第三种分类是生成模型和判别模型,这种分类算法直指算法本质。
生成模型:它不会告诉你属于哪一类,只是告诉你属于哪一类的概率。
判别模型:相当于有个函数,给一个输入,就可以告诉这个数据属于哪个一类别,直指最后的目的。
所以他们回答问题的方式是不一样的。
机器学习常见的算法
机器学习解决问题的流程
机器学习要解决的问题相对而言还是比较单纯的,一个是预测的问题,一个是聚类的问题。
而预测问题无非就是要预测所属的分类要么就是预测数值,本质上就是要预测的Y是个连续型的变量还是一个离散型的变量。
所以机器学习要解决的问题是比较单纯的。
为什么会出现了这么多算法呢?他们有没有相似性。
下面我们可以介绍一下机器学习总的框架,介绍一下算法的通用的思想和指导的原则。
下面我们来看机器学习是怎么样解决问题的
确定目标
做机器学习之前我们肯定需要先确认业务目标的,看看业务层面要解决什么问题。然后
分析业务上有什么样的需求
搜集历史数据:数据搜集得越多,则模型构建得更精确。
-
接着就是做很重要的一步就是数据的预处理,做整合,提取一些特征。
比如说滴滴打车可能与天气有关,所以天气的数据可能就非常重要,我们可以把它们单独提取出来。
从纯算法来提升性能其实很有限,而数据的质量决定了最后的效果,所以数据的特征工程最重要。
训练模型
接下来就是构建模型。
首先我们要定义一个模型,其实就一个函数,只是有些参数我们不知道。这个模型是根据我们要解决的问题来定义的。
-
然后定义损失函数:做机器学习,其实就是要做预测,既然是预测,所以一定是与真实情况有偏差的。损失函数就是定义一个偏差的大小,就是一个标准。评价的标准,相似程度有多大。评估这个模型好不好。
回归问题的损失函数比较容易定义,因为回归就是找一个恰当的模型,我们把真实的情况减去使用这个模型得到的值就可以获得到损失函数
但是分类问题就比较难做了。
-
优化算法:
让损失函数取最小值的。也就是让函数求最小值。
模型评估
我们是从历史的数据中得到的模型,需要进行验证,
交叉验证
效果评估