机器学习

Java、Python是一门语言,机器学习是一门技术或方法,数据挖掘是一件事情。

语言------------------------->机器学习----------------------->数据挖掘、模式识别、人工智能

 

也许你和这个叫『机器学习』的家伙一点也不熟,但是你举起iphone手机拍照的时候,早已习惯它帮你框出人脸;也自然而然点开今日头条推给你的新闻;也习惯逛淘宝点了找相似之后货比三家;亦或喜闻乐见微软的年龄识别网站结果刷爆朋友圈。恩,这些功能的核心算法就是机器学习领域的内容。

  1. 什么是机器学习

机器学习的定义

机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身。简单一点说,就是计算机从数据中学习出规律和模式,以应用在新数据上做预测的任务。近年来互联网数据大爆炸,数据的丰富度和覆盖面远远超出人工可以观察和总结的范畴,而机器学习的算法能指引计算机在海量数据中,挖掘出有用的价值,也使得无数学习者为之着迷。

机器学习是一门能够挖掘数据价值与应用的学科。

1956年AI 人工智能,机器学习就是为了解决AI中某一部分问题而提出来,后来就独立发展成为了一门学科。深度学习,Deeplearning,是更高级的机器学习方法。

  1. 数据怎么得到?

APP、网站,生活中处处都是数据,通过机器学习领域中的学习方法将这些数据转化为信息或者知识,这个过程就是我们机器学习的目的。

  1. 为什么说现在是进入机器学习领域的最佳时间?

近几年发展有了不少的成熟的机器学习库:

Python的Scikit-learn

Spark的SparkMLlib和SparkR

Java的Weka

我们不在需要一步一步的实现算法的源码,我们只需要会调用学习机器学习库中的模型或者方法即可。

  1. 机器学习关注问题

并非所有的问题都适合用机器学习解决(很多逻辑清晰的问题用规则能很高效和准确地处理),也没有一个机器学习算法可以通用于所有问题。咱们先来了解了解,机器学习,到底关心和解决什么样的问题。

从功能的角度分类,机器学习在一定量级的数据上,可以解决下列问题:

1.分类问题

根据数据样本上抽取出的特征,判定其属于有限个类别中的哪一个。比如:

垃圾邮件识别(结果类别:1、垃圾邮件 2、正常邮件)

文本情感褒贬分析(结果类别:1、褒 2、贬)

 

 

图像内容识别识别(结果类别:1、喵星人 2、汪星人 3、人类 4、草泥马 5、都不是)。

2.回归问题

根据数据样本上抽取出的特征,预测一个连续值的结果。比如:

星爷《美人鱼》票房

帝都2个月后的房价

3.聚类问题

根据数据样本上抽取出的特征,让样本抱抱团(相近/相关的样本在一团内)。比如:

google的新闻分类

用户群体划分

我们再把上述常见问题划到机器学习最典型的2个分类上。

分类与回归问题需要用已知结果的数据做训练,属于“监督学习。

聚类的问题不需要已知标签,属于“非监督学习”。

 

如果在IT行业(尤其是互联网)里溜达一圈,你会发现机器学习在以下热点问题中有广泛应用:

1.计算机视觉

典型的应用包括:人脸识别、车牌识别、扫描文字识别、图片内容识别、图片搜索等等。

2.自然语言处理

典型的应用包括:搜索引擎智能匹配、文本内容理解、文本情绪判断,语音识别、输入法、机器翻译等等。

3.社会网络分析

典型的应用包括:用户画像、网络关联分析、欺诈作弊发现、热点发现等等。

4.推荐

典型的应用包括:虾米音乐的“歌曲推荐”,某宝的“猜你喜欢”等等。

  1. 机器学习需要具备的知识

『数学基础』『典型机器学习算法』『编程基础』

有无数激情满满大步向前,誓要在机器学习领域有一番作为的同学,在看到公式的一刻突然就觉得自己无望了。是啊,机器学习之所以相对于其他开发工作,更有门槛的根本原因就是数学。每一个算法,要在训练集上最大程度拟合同时又保证泛化能力,需要不断分析结果和数据,调优参数,这需要我们对数据分布和模型底层的数学原理有一定的理解。所幸的是如果只是想合理应用机器学习,而不是做相关方向高精尖的research,需要的数学知识啃一啃还是基本能理解下来的。

3.1.1 微积分

微分的计算及其几何、物理含义,是机器学习中大多数算法的求解过程的核心。比如算法中运用到梯度下降法、牛顿法等。如果对其几何意义有充分的理解,就能理解“梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部”,能够更好地理解运用这样的方法。

凸优化和条件最优化 的相关知识在算法中的应用随处可见,如果能有系统的学习将使得你对算法的认识达到一个新高度。

3.1.2 线性代数

大多数机器学习的算法要应用起来,依赖于高效的计算,这种场景下,程序员GG们习惯的多层for循环通常就行不通了,而大多数的循环操作可转化成矩阵之间的乘法运算,这就和线性代数有莫大的关系了

向量的内积运算更是随处可见。

矩阵乘法与分解在机器学习的主成分分析(PCA)和奇异值分解(SVD) 等部分呈现刷屏状地出现。

3.1.3 概率与统计

从广义来说,机器学习在做的很多事情,和统计层面数据分析和发掘隐藏的模式,是非常类似的。

极大似然思想、贝叶斯模型 是理论基础,朴素贝叶斯(Na?ve Bayes )、语言模型(N-gram)、隐马尔科夫(HMM)、隐变量混合概率模型是他们的高级形态。

常见分布如高斯分布是混合高斯模型(GMM)等的基础。

3.3.1 python

python有着全品类的数据科学工具,从数据获取、数据清洗到整合各种算法都做得非常全面。

网页爬虫: scrapy

数据科学处理框架: 

pandas:模拟R,进行数据浏览与预处理。

numpy:数组运算。

scipy:高效的科学计算。

matplotlib:非常方便的数据可视化工具。

机器学习: 

scikit-learn:远近闻名的机器学习package。未必是最高效的,但是接口真心封装得好,几乎所有的机器学习算法输入输出部分格式都一致。而它的支持文档甚至可以直接当做教程来学习,非常用心。对于不是非常高纬度、高量级的数据,scikit-learn胜任得非常好(有兴趣可以看看sklearn的源码,也很有意思)。

libsvm:高效率的svm模型实现(了解一下很有好处,libsvm的系数数据输入格式,在各处都非常常见)

keras/TensorFlow:对深度学习感兴趣的同学,也能很方便地搭建自己的神经网络了。

自然语言处理: 

nltk:自然语言处理的相关功能做得非常全面,有典型语料库,而且上手也非常容易。

交互式环境: 

ipython notebook:能直接打通数据到结果的通道,方便至极。强力推荐。

3.3.2 R

 

R最大的优势是开源社区,聚集了非常多功能强大可直接使用的包,绝大多数的机器学习算法在R中都有完善的包可直接使用,同时文档也非常齐全。常见的package包括:RGtk2, pmml, colorspace, ada, amap, arules, biclust, cba, descr, doBy, e1071, ellipse等等。另外,值得一提的是R的可视化效果做得非常不错,而这对于机器学习是非常有帮助的。

机器学习使用

选择算法需要考虑的两个问题

  1. 算法场景
    1. 预测明天是否下雨,因为可以用历史的天气情况做预测,所以选择监督学习算法
    2. 给一群陌生的人进行分组,但是我们并没有这些人的类别信息,所以选择无监督学习算法、通过他们身高、体重等特征进行处理。
  2. 需要收集或分析的数据是什么

机器学习 开发流程

* 收集数据: 收集样本数据

* 准备数据: 注意数据的格式

* 分析数据: 为了确保数据集中没有垃圾数据;

    如果是算法可以处理的数据格式或可信任的数据源,则可以跳过该步骤;

    另外该步骤需要人工干预,会降低自动化系统的价值。

* 训练算法: [机器学习算法核心]如果使用无监督学习算法,由于不存在目标变量值,则可以跳过该步骤

* 测试算法: [机器学习算法核心]评估算法效果

* 使用算法: 将机器学习算法转为应用程序

 

  1. 机器学习工程师做什么的?
  1. 构建和实现机器学习系统(比如推荐系统,分类决策系统)
  2. 在搭建好的机器学习系统之后,能够优化系统,比如速度和稳定性
  3. 会做一些数据的切分,训练模型,测试模型,特征提取,特征创建,特征保存以及特征工程的活。
  4. 我们会完成一些机器学习中的分类、聚类、回归、标注等方面具体的任务。

很多情况下取决于不同公司的应用而不同。

  1. 机器学习工程师所必备的技能?
  1. 掌握计算机基础知识和程序设计基础知识
  2. 数学、概率以及统计学方面的知识
  3. 熟练使用R或者Python或者Java其中的一门语言
  4. 数据建模和数据评估
  5. 应用机器学习算法和机器学习库
  6. 软件工程和系统设计方面能力

软件工程师---机器学习工程师----数据科学家

  1. 机器学习工程师求职

如何去找一份机器学习工程师工作呢?机器学习工程师,人工智能工程师,数据挖掘工程师,数据分析工程师等。

 

岗位职责:

1、结合数据挖掘传统算法,机器学习浅层算法,深度学习深层算法在人工智能领域的产品中进行分类和预测;

2、以上算法在图像识别、自然语言处理、舆情分析、语音识别等人工智能方面的应用;

3、以上算法在高性能云计算服务器上的并行化和优化工作。

 

任职要求:

1、本科及以上学历,计算机相关专业毕业;

2、对机器学习的一般模型如分类、聚类、关联分析、预测等模型熟悉(LR,CART,SVM,NN,Bayes,PCA,LDA等),理解一些常用的特征选择和矩阵分解的算法;

3、熟悉深度神经网络和常用的模型,如CNN、RNN等,对常用的开源实现,如TensorFlow、Theano等有实践经验者优先考虑;

4、熟悉深度神经网络在图像识别、自然语言处理方面的应用,有文本处理方面的经验者优先考虑;

5、熟悉大规模并行计算的基本原理并具有实现并行计算算法的基本能力,熟悉Hadoop或者Spark架构者优先考虑,有过基于GPU指令的算法优化经验者优先考虑;

6、良好的英文阅读能力,跟踪学术界和工业界的最新研究成果,并可以通过编程语言(C、C++、java、Python、Matlab)来编程实现,有编程实现过近几年深度学习相关论文算法者着重考虑;

7、有创造性的思维,敢于超越技术极限,致力于研发一流的技术和产品;

8、具有良好的沟通能力,和良好的团队合作精神。

总体来说岗位需求有:

图像识别,语音识别,系统设计,NLP自然语言处理,根据自己的兴趣选择机器学习具体方面的工作。

5.总结

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐