机器学习

博客分类: 江河计划

机器学习

算法

岛屿的个数

给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:
11110
11010
11000
00000

输出: 1
function to0(grid, i, j){
    if(i < 0 || j < 0 || i > grid.length - 1 || j > grid[0].length - 1 || grid[i][j] === '0') return;
    grid[i][j] = '0'
    to0(grid, i - 1, j);
    to0(grid, i + 1, j);
    to0(grid, i, j - 1);
    to0(grid, i, j + 1);
}
var numIslands = function(grid) {
    var count = 0;
    for(var i=0; i<grid.length; i++){
        for(var j=0; j<grid[i].length; j++){
            if(grid[i][j] === '1'){
                count++;
                to0(grid, i, j);
            }
        }
    }
    return count;
};

机器学习

什么是机器学习

拆分来看,先说学习,再说机器。

学习本身是动物所具备的能力,人类的学习分为三个可简化为三个阶段:输入,整合,输出。

举个学英语的例子:

  1. 我们在学习英语的时候,起初都需要背单词,没有一定单词量后续学习无从谈起。(输入阶段)
  2. 当我们单词量积累到一定程度之后,我们还是无法与外国人愉快交流,这时候我们就需要用把现有的单词用一定语法规则串成句子。(整合阶段)
  3. 最后当我们拥有了词汇量,并且有了语法规则作为架构,就可以用英文随时随地的表达自己的想法,而非仅仅 i’m fine, thank you , and you 了。(输出阶段)

总结:学习是一个根据过往经验,总结一定认知和规律,利用规律和认知来对应对新的问题的过程。

机器学习定义

一个程序被认为能从经验E中学习,解决任务 T,达到 性能度量值P,当且仅当,有了经验E后,经过P评判, 程序在处理 T 时的性能有所提升

我认为他提出的这个定义就是为了压韵 在西洋棋那例子中,经验e 就是 程序上万次的自我练习的经验 而任务 t 就是下棋。性能度量值 p呢, 就是它在与一些新的对手比赛时,赢得比赛的概率

那么机器和人在学习这件事儿上,最重要的区别是啥?

种类 学习能力 记忆力 计算能力 生存能力
有,但因人而异 有,但会随年纪衰减,还可能成老年痴呆 普通人一秒一次 一般,且脑子不可以换
机器 没有,俗称呆 取决于硬盘有多大,可被固化 CPU 已经完爆人类了,GPU 更是 稳定,数据可以存在在大部分载体上

所以机器学习,就是综合人类的学习能力和机器特性。

  1. 人类可以从自己获得的经验中学习知识,然而计算机没法读书万卷也做不到阅人无数,只能从我们投喂给它的数据中学习规律了。我们当然希望计算机学到规律之后立马智商爆表,分分钟就能自己用新知识独当一面啦。
  2. 不难想象,一旦这个设想成为现实,计算机就能以类似人类的方式解决很多复杂而多变的问题。计算机解决问题与人类思考的经验过程将会趋同,不过它能考虑更多的情况,执行更加复杂的计算,从而产生及其可观的效益。

如何让计算机从数据中总结规律?

几十年来,很多计算机科学和应用数学界的学者们总结出了不少教会计算机的办法,它们就是各式各样的机器学习算法。它们是数据科学家们胯下的挖掘机,担负着将海量数据化腐朽为神奇的使命。

下定义,机器学习是一种让机器通过某些算法,利用已知数据,训练出适当的模型,然后使用模型对于新的情景进行(判断)预测的过程。

那么机器学习中最重要的环节是什么?

是数据,还是学英语的比方,没有单词量,你会再多的语法,也不能和老外随意 conversation。这也是为什么机器学习和大数据密不可分的原因。

学习类型

机器学习根据所处理数据的类型不同,可分为:

  1. 监督学习(应用较多)
  2. 无监督学习(应用较多)
  3. 半监督学习
  4. 强化学习

监督学习:

数据样本会告诉机器在该情形下的正确输出结果(预知输出),从而希望计算机在面对没有见过的输出样本时,也能达到预测未知的目的。打个比方,就和老师监督我们平时写作业一样,希望我们在期末考面对老师新出的考题能尽可能答对。

学习必定是需要解决某些类型的问题,根据输出结果是离散值还是连续值,监督学习又可以分为 分类问题和回归问题 两大类。他们在文字、语音、图像识别,垃圾邮件分类与拦截,网页检索,股票预测等方面有着广泛应用。

监督学习需要抽离特征,需要大量的数据样本即训练集,在有监督的学习中,我们得到一个数据集,并且已经知道我们的正确输出应该是什么样的,并且认为输入和输出之间存在关系

无监督学习:

反过来,数据样本中没有正确的输出结果信息,便是无监督学习。就如做了很多套没有卷子的模拟考,然后去高考,惊悚。。。但我们不能因此否定这样做题是否有问题,在过程中我们会知道哪些题出题率高,出题规律是什么,ABCD选项占比,考试完成平均时间等等。无监督学习,便是从数据中挖掘这一类信息。常见的例子有聚类,子树挖掘,关联规则挖掘,离群点检测等等。

机器学习适用场景

适用:明天下不下雨,今天吃啥等所有这些可以基于采样数据来识别和解决的问题。

不适用:彩票号码预测这种无规律随机事件。