深度学习-机器学习 第一篇

简介

前置声明:本专栏的所有文章皆为本人学习时所做笔记而整理成篇,转载需授权且需注明文章来源,禁止商业用途,仅供学习交流.(欢迎大家提供宝贵的意见,共同进步)

正文:

机器学习,顾名思义,就是研究计算机如何学习和模拟人类的行为,并根据已学得的知识对该行为进行增强和改进。

举例来说,假设邮箱收到了一封新邮件,通常我们可以通过邮件里是否含有广告、不相关信息以及乱码等特征,人为的来判断这封邮件是否是一封垃圾邮件。

如上述可知,机器学习模拟人类的行为,所以它同样依据这些邮件内容的特征来判断一封邮件是否是垃圾邮件。那么计算机是如何判断邮件内容里那些是广告和垃圾信息的呢? 我们知道,在我们刚出生的时候,大家都不知道世间那些事情是好的,那些事情是坏的,都是爸爸妈妈告诉我们说:打人是不对的,帮助他人才是该做的。同理,尚未学习的计算机刚开始也不能独立思考,为了让它区分垃圾邮件和正常邮件,所以我们必须需要告诉它,邮件里的内容那些是广告和垃圾信息,那些是正常的内容。这一过程是机器学习的核心过程,通过这一核心过程,计算机便有了初步的对于邮件垃圾与否的“知识”,正如我们学了加减乘除后便可以做简单的运算。

机器学习的核心过程一般分为包含如下模块:

  1. 训练数据集:训练数据集是机器学习的“课本”,如邮件训练数据集,其中包含了各种各样的邮件,其中每个邮件都有一个标识,用来表示其为正常邮件还是垃圾邮件。典型的数据格式如:邮件1,1;邮件2,0,;邮件3,1;其中0表示正常邮件,1表示垃圾邮件,因此可以看出邮件1和3为垃圾邮件,邮件2为正常邮件;
  2. 学习算法:计算机通过机器学习算法对训练数据集进行分析,并建立最终的模型。即通过对“课本”的学习,建立一套自己的解题方案。如通过对邮件数据集的学习后,当收到新邮件时,通过模型便可判断该邮件是否是垃圾邮件。模型的最终生成以及其性能的高低依据选择的机器算法而定。
  3. 测试模型:通过某些测试数据[类别未知]对模型进行测试,如输入多封新邮件测试模型能够将邮件正确分类的效果,若达不到预期效果则需要调整学习算法的参数。

机器学习算法有很多,大致分为监督学习算法和无监督学习算法。

监督学习:训练数据集的类别已知,如上文提到的邮件训练数据集,通过对训练数据集的学习生成模型。好比面前有一位老师告诉了你题目的方法和答案,,当你了解了老师教你的方法时,面对的新的题目便可自行解答。

监督学习的算法:

  1. 分类算法 —— K-近邻算法、决策树、朴素贝叶斯算法、Logistic回归、etc.
  2. 预测算法 —— 局部加权线性回归、线性回归、支持向量、Ridge回归、Lasso最小回归系数估计、etc.

无监督学习:数据集的类别未知,如草原上一群未被标记的动物,起初不知道这些动物该如何分类,但通过观察这些动物的特征便可知道,可以将体格壮的分为一类(大型动物),食草的分为一类(食草动物)以及爬行的分为一类(爬行动物)等,因此无监督学习也是通过对数据集的特征进行分析,根据特征相似性对数据集进行分类。

无监督学习算法:K-均值、最大期望算法、DBSCAN、Parzen窗设计、etc.

[上述提到的机器算法会在后续中一 一讲解]

总之,机器学习通过算法对训练数据集进行学习,生成最终的模型,并用此模型模拟人类行为对新输入进行判断。

机器学习模型除了可以分辨垃圾邮件外,还可以做很多事情,比如根据对超市顾客购物清单的学习分析,可知买了尿布的顾客会顺便买一罐啤酒,因此超市可将尿布和啤酒放在一起从而提高销量;通过对图书馆借书记录的分析,可以将相似的书籍推荐给读者;对购买产品记录的分析,网站会提示买家该产品的最佳搭配产品或者提示买家其他顾客除了购买该产品还购买了哪些与之搭配的产品;通过对房子的特征及其房价的数据分析,可以预测某种房子的房价;通过对文本的分析对大量的文章进行自动分类......。机器学习可以做很多自动化的事情,从而提高效率。

在学习机器学习算法的理论及代码实现前,需要如下几个前提:

  1. 高等数学、线性代数、概率论与数理统计的基础 (至少了解概念)
  2. 编程基础 (Java、C++、Python 等都可作为实现机器学习算法的语言) [建议:Python,Python包含众多的科学计算包,更容易更方便实现其算法]

Python机器学习环境搭建

若未接触过Python,需要看下Python的基础语法,不过代码里面我会写上详细注释。

正如安装Java一样,我们需要去官方网站下载JDK,Python类似,Python分为2.7和3.6版本,本专栏选择使用2.7版本。

安装好Python后,还需要安装机器学习所需要的Python科学计算包 ,例如:numpy+mkl、scipy、matplotlib等。不过这里我们并不安装原始的Python版本,而是安装anaconda,它是Python的一个发行版本,安装好它后就不用再去下载上述Python包,其本身已经包含了,比较方便。

anaconda下载地址:Downloads 选择Python 2.7 version下载

安装步骤在此略过。

安装好后打开Anaconda Navigator 如图:

启动后如图所示:

lauch spyder,spyder是Anaconda下的一个Python集成开发环境,正如Java之于Eclipse,.net之于Visual Studio .其他工具后续再说。

当然按照惯例 输出 hello world

机器学习的简介和Python开发环境的搭建到此结束,后续将会依次讲解机器学习的算法、数学知识以及算法的推导过程。

2017/10/30 阿弎

原文地址:https://www.cnblogs.com/jiaopaner/p/8972676.html

时间: 2024-09-30 07:24:54

深度学习-机器学习 第一篇的相关文章

从冷战到深度学习:一篇图文并茂的机器翻译史

从冷战到深度学习:一篇图文并茂的机器翻译史 选自Vas3k.com 作者:Ilya Pestov 英语版译者:Vasily Zubarev 中文版译者:Panda 实现高质量机器翻译的梦想已经存在了很多年,很多科学家都为这一梦想贡献了自己的时间和心力.从早期的基于规则的机器翻译到如今广泛应用的神经机器翻译,机器翻译的水平不断提升,已经能满足很多场景的基本应用需求了.近日,Ilya Pestov 用俄语写的机器翻译介绍文章经 Vasily Zubarev 翻译后发表到了 Vas3k.com 上.机

Linux学习笔记——第一篇——Ubuntu安装与操作

笔者是Windows的使用者,由于Coding的需要以及在Linux下开发的方便,所以开始使用Linux. 当然笔者还是割舍不下Windows的,毕竟很多通讯工具等软件以及游戏在Linux下是没有发行的,所以笔者使用了虚拟机啊. 下面给出简单的安装过程. 1.下载虚拟机软件,笔者比较喜欢VMPlayer,因为它比较轻便且免费,并且很好的支持了拖拽复制功能(VM TOOL),当然也可以使用如VirtualBox.VPC等 链接:https://my.vmware.com/web/vmware/fr

吴恩达深度学习课程第一课 — 神经网络与深度学习 — 第一周练习

课程一 - 神经网络和深度学习 第一周 - 深度学习简介 第 1 题 “人工智能是新电力”这个比喻指的是什么? A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力. B.通过“智能电网”,人工智能正在传递新一波的电力. C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情. D.与100年前开始的电力类似,人工智能正在改变多个行业. 第 2 题 以下哪些是最近深度学习开始崛起的原因?(选2个答案) A.我们拥有了更多的计算能力 B.神经网络是一个崭新的领域. C.

PHP学习记录第一篇:Ubuntu14.04下LAMP的安装

最近一段时间会学习一下PHP全栈开发,将会写一系列的文章来总结学习的过程,以自勉. 第一篇记录一下LAMP环境的安装 0. 安装Apache Web服务器 安装之前先更新一下系统 sudo apt-get update && sudo apt-get dist-upgrade 然后安装Apache sudo apt-get install apache2 这时在浏览器里输入localhost就可以看到 "It works!", 说明安装成功. 1. 安装MySQL数据库

我们一起学习WCF 第一篇初识WCF(附源码供对照学习)

前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wcf所遇到的困难以及解决方案一点点记下来,可能还有很多不足之处那我们一起共同学习.在学习之前我们有必要初步的看下百度百科对wcf的解释,让我们心中有这一个概念,然后建立项目,然后再次看概念,然后在去更深层的建立项目,然后再去理解这样反复的去做我相信可以做好wcf.那么下面我就会从初识wcf,wcf消息

学习KnockOut第一篇之Hello World

笔者刚开始学习KnockOut.写的内容就相当于一个学习笔记.且在此处向官网致敬,比较喜欢他们家的Live Example版块,里面有jsFiddle.至于文档,辅导章节,也是有的.附上地址:KnockOut.感兴趣的话可以看一下的. 那么,开始. 先写一个连Hello World级别都算不上的.看了文档,貌似很简单的样子. 第一步引进ko的js脚本.第二步创建一个ViewModel.第三步创建一个简单的View,用data-bind绑定. 一个非常简单的text绑定. 1 <!DOCTYPE

在linux ubuntu下搭建深度学习/机器学习开发环境

一.安装Anaconda 1.下载 下载地址为:https://www.anaconda.com/download/#linux 2.安装anaconda,执行命令: bash ~/Downloads/Anaconda3-5.1.0-Linux-x86_64.sh 3.在安装过程中会显示配置路径 Prefix=/home/jsy/anaconda2/ 4.安装完之后,运行python,仍是ubuntu自带的python信息,需自己设置下环境变量 5.在终端输入$sudo gedit /etc/p

吴恩达《深度学习》第一门课(1)深度学习引言

1.1欢迎 主要讲了五门课的内容: 第一门课:神经网络基础,构建网络等: 第二门课:神经网络的训练技巧: 第三门课:构建机器学习系统的一些策略,下一步该怎么走(吴恩达老师新书<Machine Learning Yearning>就是针对这个以及上一课): 第四门课:卷积神经网络相关: 第五门课:循环神经网络相关. 1.2什么是神经网络 (1)常说的深度学习指的就是训练神经网络,或者也指特别大规模的神经网络. (2)每一个神经元都代表着从输入到输出的函数映射,如下的房价预测: (3)激活函数Re

吴恩达《深度学习》第一门课(4)深层神经网络

4.1深层神经网络 (1)到底是深层还是浅层是一个相对的概念,不必太纠结,以下是一个四层的深度神经网络: (2)一些符号定义: a[0]=x(输入层也叫做第0层) L=4:表示网络的层数 g:表示激活函数 第l层输出用a[l],最终的输出用a[L]表示 n[1]=5:表示第一层有五个神经元,第l层神经元个数用n[l]表示 4.2前向传播和反向传播 (1)前向传播:输入a[l-1],输出是a[l],缓存为z[l],步骤如下:(下面第一个式子应该是a[l-1]) 向量化: (2)反向传播:输入da[