• 机器学习 一 监督学习和无监督学习的区别


    前话:

    最近一直想学机器学习的东西,无奈自己的书太多但无法专心看一本,纯理论的东西看了感觉不记下来就忘记类,所以我想理论学习和实践一起.

    所以最近想把机器学习实战这本书看完,并做好记录.加油.!~


    一:什么是监督学习?

    监督学习(supervised learning):通过已有的训练样本(即已知数据以及其对应的输出)来训练,从而得到一个最优模型,再利用这个模型将所有新的数据样本映射为相应的输出结果,对输出结果进行简单的判断从而实现分类的目的,那么这个最优模型也就具有了对未知数据进行分类的能力。

    监督学习中只要输入样本集,机器就可以从中推演出制定目标变量的可能结果.如协同过滤推荐算法,通过对训练集进行监督学习,并对测试集进行预测,从而达到预测的目的.

    一:什么是无监督学习?

    无监督学习(unsupervised learning):我们事先没有任何训练数据样本,需要直接对数据进行建模。比如我们去参观一个画展,我们对艺术一无所知,但是欣赏完很多幅作品之后,我们面对一幅新的作品之后,至少可以知道这幅作品是什么派别的吧,比如更抽象一些还是更写实一点,虽然不能很清楚的了解这幅画的含义,但是至少我们可以把它分为哪一类。再比如我们在电影院看电影,对于之前没有学过相关电影艺术知识的我们,可能不知道什么是一部好电影,什么是一部不好的电影,可是在观看了很多部电影之后,我们脑中对电影就有了一个潜在的认识,当我们再次坐在电影院认真观看新上映的电影时,脑中就会对这部电影产生一个评价:怎么这电影这么不好啊,整个故事线是混乱的,一点也不清晰,比我之前看过的那些电影差远了,人物的性格也没有表现出来,关键是电影主题还搞偏了;哎呀,这个电影拍得确实好啊,故事情节和人物性格都很鲜明,而且场景很逼真,主角的实力表演加上他与生俱来的忧郁眼神一下把人物演活了。

    再给大家举一个无监督学习的例子。远古时期,我们的祖先打猎吃肉,他们本身之前是没有经验而言的,当有人用很粗的石头去割动物的皮的时候,发现很难把皮隔开,但是又有人用很薄的石头去割,发现比别人更加容易的隔开动物的毛皮,于是,第二天、第三天、……,他们就知道了需要寻找比较薄的石头片来割。这些就是无监督学习的思想,外界没有经验和训练数据样本提供给它们,完全靠自己摸索。

    总结

    回想刚才所提到的监督学习和无监督学习两种方法,或许很多人都会认为任何事情有人教当然很好了啊,所有监督学习更方便快捷嘛,大部分情况确实这样,但是如果有些情况比如无法提供训练数据样本或者提供训练数据样本的成本太高的话,或许我们就应该采取无监督学习的策略了。监督学习的典型例子就是决策树、神经网络以及疾病监测,而无监督学习就是很早之前的西洋双陆棋和聚类。

    参考自:http://www.cnblogs.com/BaiYiShaoNian/p/4558279.html

    -----------0--------------------------------------------------------------------------------------------------------------------------------

    2 . 1 何谓机器学习

    机器学习的主要任务就是分类。

    通常我们为算法输人大量已分类数据作为算法的训练集。 训练集是用于训练机器学习算法的数据样本集 合,训练集的每一个样本都包含了特征、一目标变量.目标变量是机器学习算法的预测结果,在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。 训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。

    与监督学习相对应的是无监督学习,此时数据没有类别信息,也不会给定目标值。在无监督学习 中 , 将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数据统计值的过程称之为密度估计。此外 , 无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。

    2 . 2 如何选择合适的算法

    考虑下面两个问题:

    一 、 使用机器学习算法的目的,

    想要算法完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;

    二     需要分析或者收集的数据是什么

    如果目标变量是离散型,如是 / 否 、 1/2/3 、 ― 冗或者红 / 黄 / 黑 等 ,则可以选择分类器算法;

    如果目标变量是连续型的数值,如 0.0~ 100.00 、 -999~999 或者 +00~-00 等 ,则需要选择回归算法。

    其次需要考虑的是数据问题。我们应该充分了解数据, 对实际数据了解得越充分, 越容易创建符合实际需求的应用程序。主要应该了解数据的以下特性: 特征值是离散型变量还是连续型变量 ,特征值中是否存在缺失的值, 何种原因造成缺失值,数据中是否存在异常值, 某个特征发生的 频 率 如 何 (是否罕见得如同海底捞针),等等。充分了解上面提到的这些数据特性可以缩短选择机器学习算法的时间。

    三 使用Python的原因

    Python语言得到了广泛应用。 SciPy和 Numpy等许多科学函数库都实现了向量和矩阵操作, 这些函数库增加了代码的可读性, 学过线性代数的人都可以看懂代码的实际功能。

    Python 的科学工具可以与绘图工具 Matplotlib 协同工作。 Matplotlib 可以绘制 2D 、 3 0 图形.

    安装Numpy的时候安装了很久,原因在于自己Pycharm的python版本和系统默认python版本不同,Pychram使用3.0,但在命令行import numpy的时候是2.7所以在Pycham里面换回2,7就ok了.

    Numpy安装方法:

    Ubuntu-Python2.7安装 scipy,numpy,matplotlib

    http://blog.csdn.net/adream307/article/details/8564441

  • 相关阅读:
    Bootstrap 3 How-To #1 下载与配置
    一致性哈希算法及其在分布式系统中的应用
    哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用
    ASP.NET MVC3 系列教程
    浏览器对象模型BOM小结
    使用JS实现图片展示瀑布流效果
    利用JS实现购物网站商品放大镜效果
    js事件机制——事件冒泡和捕获
    js入门篇之正则表达式基础
    随机得到1-20之间的10个不相同的随机数
  • 原文地址:https://www.cnblogs.com/zzblee/p/4579068.html
Copyright © 2020-2023  润新知