Welcome to Machine Learning!
1、Ai: Artificial intelligence.
2、Many scientists think the best way to make progress on this is through learning algorithms called neural networks, which mimic how the human brain works.
3、但是,仅仅了解其中的算法和数学是不够的,尤其是如果你并不知道如何将所学的理论知识用到你的实际问题上时。
4、机器学习发源于人工智能领域,我们希望能够创造出具有智慧的机器。 我们通过编程来让机器完成一些基础的工作,比如如何找到从A到B的最短路径,但在大多数情况下,我们并不知道如何显式地编写人工智能程序,来做一些更有趣的任务,比如网页搜索,标记照片和拦截垃圾邮件等,人们意识到唯一能够达成这些目标的方法 就是让机器自己学会如何去做。
5、机器学习领域的几个应用示例:(自主学习能力)
数据挖掘/
应用无法显示编程时(自主飞行/手写识别/自然语言处理 Natural Language Processing (NLP),计算机视觉)
用户自定制化程序
6、In general, any machine learning problem can be assigned to one of two broad classifications:
Supervised learning and Unsupervised learning.
7、监督学习(基本思想是,监督学习中,对于数据集中的每个数据, 都有相应的正确答案,(训练集) 算法就是基于这些来做出预测。)
术语监督学习,意指给出一个算法, 需要部分数据集已经有正确答案。比如给定房价数据集, 对于里面每个数据,算法都知道对应的正确房价, 即这房子实际卖出的价格。算法的结果就是 算出更多的正确价格,比如那个新房子, 你朋友想卖的那个。
回归:用更术语的方式来定义, 监督学习又叫回归问题,(应该是回归属于监督中的一种) 意指要预测一个连续值的输出,比如房价。所以实际还是个离散值,但通常把它看作实际数字, 是一个标量值,一个连续值的数,而术语回归, 意味着要预测这类连续值属性的种类。
分类: 分类是要预测一个离散值输出。事实证明, 在分类问题中,有时会有超过两个的值, 输出的值可能超过两种。最有趣的学习算法(本课中将学到) 能够处理,无穷多个特征。不是3到5个这么少。
(那么,你如何处理 无限多特征呢?甚至你如何存储无数的东西 进电脑里,又要避免内存不足? 事实上,等我们介绍一种叫支持向量机的算法时, 就知道存在一个简洁的数学方法,能让电脑处理无限多的特征。)
回归来预测一个连续值输出。 我们还谈到了分类问题, 目标是预测离散值输出。
8、无监督学习(聚类算法):组织大型的计算机群/社交网络分析/市场分割/天文数据分析。。。
(因此,对于监督学习中的每一个样本,我们已经被清楚地告知了,什么是所谓的正确答案,即它们是良性还是恶性。在无监督学习中,我们用的数据会和监督学习里的看起来有些不一样,在无监督学习中,没有属性或标签这一概念,也就是说所有的数据,都是一样的,没有区别。
所以在无监督学习中,我们只有一个数据集,没人告诉我们该怎么做,我们也不知道,每个数据点究竟是什么意思,相反,它只告诉我们,现在有一个数据集,你能在其中找到某种结构吗? 对于给定的数据集,无监督学习算法可能判定,该数据集包含两个不同的聚类,你看,这是第一个聚类 ,然后这是另一个聚类。)
这就是无监督学习,我们没有提前告知这个算法,这些是第一类的人,这些是第二类的人,这些是第三类的人等等。相反我们只是告诉算法,你看,这儿有一堆数据,我不知道这个数据是什么东东,我不知道里面都有些什么类型,叫什么名字,我甚至不知道都有哪些类型。但是,请问你可以自动的找到这些数据中的类型吗? 然后自动的,按得到的类型把这些个体分类,虽然事先我并不知道哪些类型,因为对于这些数据样本来说 我们没有给算法一个正确答案,所以 ,这就是无监督学习。
9、Octave
Octave是一个免费的,开放源码的软件,使用Octave或Matlab这类的工具,许多学习算法,都可以用几行代码就可以实现。事实上,在硅谷,很多的机器学习算法,我们都是先用Octave 写一个程序原型,因为在Octave中实现这些,学习算法的速度快得让你无法想象 。在教授机器学习将近10年后,我得出的一个经验就是,如果你使用Octave的话 会学的更快,并且如果你用 Octave作为你的学习工具,和开发原型的工具,你的学习和开发过程,会变得更快 。而事实上在硅谷,很多人会这样做,他们会先用Octave 来实现这样一个学习算法原型,只有在确定,这个算法可以工作后,才开始迁移到 C++、 Java或其它编译环境,事实证明,这样做,实现的算法比你一开始就用C++实现的算法要快多了 。当见过很多的人这样做以后 我觉得如果你也这样做,作为一个机器学习的,研究者和开发者,你会更有效率,如果你学会先用Octave开发原型 而不是先用其他的编程语言来开发。
10、Linear regression
(回归)被称作监督学习是因为对于每个数据来说,我们给出了 “正确的答案”,即告诉我们,根据我们的数据来说,房子实际的价格是多少,而且,更具体来说,这是一个回归问题,回归一词指的是我们根据之前的数据预测出一个准确的输出值。
(训练集)在监督学习中我们有一个数据集,这个数据集被称训练集,因此对于房价的例子,我们有一个训练集,包含不同的房屋价格,我们的任务就是从这个数据中学习预测房屋价格。
(该课程中的符号表示规则)m 来表示训练样本的数目;x来表示输入变量,往往也被称为特征量,这就是用x表示输入的特征;y来表示输出变量或者目标变量,也就是我的预测结果;(x, y)来表示一个训练样本;表示某个训练样本 我将使用x上标(i)与y上标(i)来表示(x(i), y(i))。
(线性回归算法的具体流程思想)
一个监督学习算法的工作方式:
我们可以看到这里有我们的训练集里房屋价格,我们把它喂给我们的学习算法,这就是学习算法的工作了,然后输出一个函数,按照惯例,通常表示为小写h,h代表hypothesis(假设),h表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 h 根据输入的 x 值来得出 y 值 ,y值对应房子的价格,因此 h是一个从x到y的函数映射。
所有这一切意味着我们要预测一个关于x的 线性函数 y 对吧? 所以这就是数据集和函数的作用 用来预测,这里是y关于x的线性函数 hθ(x)=θ0+θ1*x,那么为什么是一个线性函数呢? 这个模型被称为线性回归(linear regression)模型。 这实际上是关于单个变量的线性回归,这个变量就是x,根据x来预测所有的价格函数,同时,对于这种模型有另外一个名称,称作单变量线性回归,单变量是对一个变量的一种,特别的表述方式,总而言之,这就是线性回归。
模型描述: