铅笔

在你的害怕中坚持的越多,你就会越自信
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

机器学习

Posted on 2020-05-11 10:18  黑色の铅笔  阅读(193)  评论(0编辑  收藏  举报

机器学习主要来说有两种方法,监督式学习(Supervised Learning)和非监督式学习(Unsupervised Learning)

1. 监督式学习

所谓监督式学习,也就是说,我们需要提供一组学习样本,包括相关的特征数据以及相应的标签。程序可以通过这组样本来学习相关的规律或是模式,然后通过得到的规律或模式来判断没有被打过标签的数据是什么样的数据。

举个例子,假设需要识别一些手写的数字,那么我们就需要找到尽可能多的手写体数字的图像样本,然后人工或是通过某种算法来明确地标注什么是这些手写体的图片,谁是 1,谁是 2,谁是 3……这组数据就叫样本数据,又叫训练数据(training data)。

 

通过机器学习的算法,我们可以找到每个数字在不同手写体下的特征,进而找到规律和模式。然后通过得到的规律或模式来识别那些没有被打过标签的手写数据,以此完成识别手写体数字的目标。

一种比较常见的监督式学习,就是从历史数据中获得数据的走向趋势,来预测未来的走向。比如,我们使用历史上的股票走势数据来预测接下来的股价涨跌,或者通过历史上的一些垃圾邮件的样本来识别新的垃圾邮件。

在监督式学习下,需要有样本数据或是历史数据来进行学习,这种方式会有一些问题。比如

  • 如果一个事物没有历史数据,那么就不好做了。变通的解决方式是通过一个和其类似事物的历史数据。我以前做过的需求预测,就属于这种情况。对于新上市的商品来说,完全没有历史数据,比如,iPhone X,那么就需要从其类似的商品上找历史数据,如 iPhone 7 或是别的智能手机。
  • 历史数据中可能会有一些是噪音数据,需要把这些噪音数据给过滤掉。一般这样的过滤方式要通过人工判断和标注。举两个例子,某名人在其微博或是演讲上推荐了一本书,于是这本书的销量就上升了。这段时间的历史数据不是规律性的,所以就不能成为样本数据,需要去掉。同样,如果某名人(如 Michael Jackson)去世导致和其有关的商品销售量很好,那么,这个事件所产生的数据则不属于噪音数据。因为每年这个名人忌日的时候出现销量上升的可能性非常高,所以,需要标注一下,这是有规律的样本,可以放入样本进行学习。

 

2.非监督式学习

对于非监督式学习,也就是说,数据是没有被标注过的,所以相关的机器学习算法需要找到这些数据中的共性。因为大量的数据是没有被标识过的,所以这种学习方式可以让大量未标识的数据能够更有价值。

而且,非监督式的学习,可以为我们找到人类很难发现的数据里的规律或模型。所以,也有人将这种学习称为“特征点学习”。其可以让我们自动地为数据进行分类,并找到分类的模型。

 

一般来说,非监督式学习会应用在一些交易型的数据中。比如,有一堆的用户购买数据,但是对于人类来说,我们很难找到用户属性和购买商品类型之间的关系,而非监督式学习算法可以帮助我们找到他们之间的关系。

比如,一个在某一年龄段区间的女生购买了某种肥皂,有可能说明这个女生在怀孕期,或是某人购买儿童用品,有可能说明这个人的关系链中有孩子,等等。于是这些信息会被用作一些所谓的精准市场营销活动,从而可以增加商品销量。

我们这么来说吧,监督式学习是在被告诉过正确的答案之后的学习,而非监督式学习是在没有被告诉正确答案时的学习,所以说,非监督式的学习是在大量的非常混乱的数据中找寻一些潜在的关系,这个成本也比较高。

这种非监督式学习也会经常被用来检测一些不正常的事情发生,比如信用卡的诈骗或是盗刷。也有被用在推荐系统中,比如买了这个商品的人又买了别的什么东西,或是如果某个人喜欢某篇文章、某个音乐、某个餐馆,那么可能他会喜欢某款车、某个明星,或某个地方。

在监督式的学习的算法下,我们可以用一组“狗”的照片来确定某个照片中的物体是不是狗。而在非监督式的学习算法下,我们可以通过一个照片来找到与其相似事物的照片。这两种学习方式都有各自适用的场景。

 

 

3.如何找到数据的规律和关联

机器学习基本就是在已知的样本数据中寻找数据的规律,在未知的数据中找数据的关系。所以,这就需要一定的数学知识了,但对于刚入门的人来说,学好高数、线性代数、概率论、数据建模等大学本科的数学知识应该就够用了。以前上大学时,总觉得这些知识没什么用处,原来只不过是自己太 low,还没有从事会运用到这些知识的工作。

总之,机器学习中的基本方法论是这样的。

  1. 要找到数据中的规律,你需要找到数据中的特征点。
  2. 把特征点抽象成数学中的向量,也就是所谓的坐标轴。一个复杂的学习可能会有成十上百的坐标轴
  3. 抽象成数学向量后,就可以通过某种数学公式来表达这类数据(就像 y=ax+b 是直线的公式),这就是数据建模

这个数据公式就是我们找出来的规律。通过这个规律,我们才可能关联类似的数据。当然,也有更为简单粗暴的玩法

          1. 把数据中的特征点抽象成数学中的向量

          2. 每个向量一个权重

          3.写个算法来找各个向量的权重是什么。

有人把这个事叫“数据搅拌机”。据说,这种简单粗暴的方式超过了那些所谓的明确的数学公式或规则。这种“土办法”有时候会比高大上的数学更有效,哈哈