Merge pull request #84 from jiangzhonglian/master

更新 1.机器学习基础.md/2.k-近邻算法/6.SVM的公式
This commit is contained in:
片刻
2017-04-20 23:50:25 +08:00
committed by GitHub
7 changed files with 71 additions and 46 deletions

View File

@@ -1,61 +1,87 @@
# 1) 机器学习基础
# 1. 机器学习基础
* 机器学习是什么
* 把无序的数据转换成有用的信息。
我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的真实含义。
* 机器学习的意义
* 我们利用计算机来彰显数据背后的真实含义。
> 机器学习已应用于多个领域,远远超出大多数人的想象,横跨:计算机科学、工程技术和统计学等多个学科。
* 机器学习的任务
* 机器学习的主要任务就是分类。
* 分类:将实例数据划分到合适的分类中。
* 机器学习的另一项任务是回归。
* 回归:主要用于预测数值型数据。(例子———数据拟合曲线:通过给定数据点的最优拟合曲线)
* 搜索引擎,根据你的搜索点击,优化你下次的搜索结果。
* 垃圾邮件,会自动的过滤垃圾广告邮件到垃圾箱内。
* 超市优惠券,你会发现,你在购买小孩子的尿布的时候,售货员会赠送你一张优惠券可以兑换6罐啤酒。
* 邮局邮寄,手写软件自动识别寄送贺卡的地址。
* 申请贷款,通过你最近的金融活动信息继续综合评定,决定你是否合格。
## 机器学习的简单概述
`机器学习`就是把无序的数据转换成有用的信息;机器学习将有助于我们穿越数据雾霾,从中抽取出有用的信息。
* 1.需要获取海量的数据
* 2.才能从海量数据中获取有用的信息
## 机器学习的主要任务
> 机器学习的主要任务就是分类和回归
* 分类:将实例数据划分到合适的分类中。
* 回归:主要用于预测数值型数据。(例子———数据拟合曲线:通过给定数据点的最优拟合曲线)
* 目标变量
* 目标变量是机器学习预测算法的测试结果。
* 在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。
* 在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。
* 机器学习的训练过程
* ![机器学习训练过程图](/images/1.MLFoundation/机器学习基础训练过程.png)
* ![机器学习训练过程图](/images/1.MLFoundation/机器学习基础训练过程.png)
* 监督学习
* 必须知道预测什么,即必须知道目标变量的分类信息。分类和回归属于监督学习。
* 样本集:训练数据 + 测试数据
* 训练样本 = 特征 + 目标变量
* 训练样本的集合称为训练样本集,训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
* 特征(feature-是否有缺失情况) + 目标变量(分类-离散值<A/B/C、 是/否>/回归-连续值<0~100、 -999~999>)
* 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
* `知识表示`:机器已经学会如何识别鸟类的过程
* 1.可以采用规则集的形式
* 2.可以采用概率分布的形式
* 3.可以使训练样本集中的一个实例
> 监督学习
* 非监督学习
* 数据没有类别信息,也不会给定目标值
* 聚类:在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程称为聚类;
* 密度估计:将寻找描述数据统计值的过程称之为密度估计。
* 此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
* 必须知道预测什么,即必须知道目标变量的分类信息。分类和回归属于监督学习。
* 样本集:训练数据 + 测试数据
* 训练样本 = 特征 + 目标变量
* 训练样本的集合称为训练样本集,训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
* 特征(feature-是否有缺失情况) + 目标变量(分类-离散值<A/B/C、 是/否>/回归-连续值<0~100、 -999~999>)
* 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
* `知识表示`:机器已经学会如何识别鸟类的过程
* 1.可以采用规则集的形式
* 2.可以采用概率分布的形式
* 3.可以使训练样本集中的一个实例
> 非监督学习
* 数据没有类别信息,也不会给定目标值
* 聚类:在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程称为聚类;
* 密度估计:将寻找描述数据统计值的过程称之为密度估计。
* 此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
> 算法汇总
![算法汇总](/images/1.MLFoundation/ml_algorithm.jpg)
## 机器学习的原因
* 选择算法需要考虑的两个问题
* 使用机器学习算法的目的。
* 使用机器学习算法的目的
* 想要完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。
* 需要分析或收集的数据是什么
* 举例
* ![选择算法图](/images/1.MLFoundation/机器学习基础-选择算法.png)
* ![选择算法图](/images/1.MLFoundation/机器学习基础-选择算法.jpg)
* 开发的步骤
* 1.收集数据
* 2.准备输入数据
* 注意数据的格式
* 3.分析输入数据
* 为了确保数据集中没有垃圾数据;如果是算法可以处理的数据格式或可信任的数据源,则可以跳过该步骤;另外该步骤需要人工干预,会降低自动化系统的价值。
* 4.训练算法
* 如果使用无监督学习算法,由于不存在目标变量值,则可以跳过该步骤
* 5.测试算法
* 6.使用算法
```
开发机器学习应用程序的步骤
1. 收集数据
2. 准备输入数据
* 注意数据的格式
3. 分析输入数据
* 为了确保数据集中没有垃圾数据;如果是算法可以处理的数据格式或可信任的数据源,则可以跳过该步骤;另外该步骤需要人工干预,会降低自动化系统的价值。
4. 训练算法
* 如果使用无监督学习算法,由于不存在目标变量值,则可以跳过该步骤
5. 测试算法
6. 使用算法
```
* Python相关的库
* 科学函数库:SciPy、`NumPy`(底层语言:C和Fortran)
## Python语言的优势
1. 可执行伪代码
2. Python比较流行
3. Python语言的特色
4. Python语言的缺点
5. Python相关的库
* 科学函数库:`SciPy`、`NumPy`(底层语言:C和Fortran)
* 绘图工具库:`Matplotlib`

View File

@@ -1,5 +1,4 @@
# 2) k-近邻算法
# 2. k-近邻算法
* k-近邻算法的特点
* 优点:精度高、对异常值不敏感、无数据输入假定

View File

@@ -75,7 +75,7 @@ This is the simplest kind of SVM (Called an LSVM) Support Vectors are those data
* 1.如果 \\(lable*(w^Tx+b)>0\\) 表示预测正确,也称`函数间隔`,\\(||w||\\) 可以理解为归一化,也称`几何间隔`,我们始终可以找到一个阈值让 \\(lable*(w^Tx+b)>=1\\)
* 2.所以令 \\(lable*(w^Tx+b)=1\\),我们本质上是求 \\(arg: max\{关于w, b\}\ (1/||w||)\\);也就说,我们约束(前提)条件是: \\(lable*(w^Tx+b)=1\\)
* 新的目标函数求解: \\(arg: max\{关于w, b\}\ (1/||w||)\\)
* => 就是求: \\(arg: min\{关于w, b\}\ (||w||)\\) (求矩阵会比较麻烦,如果x只是1/2*X^2的偏导数,那么。。同样是求最小值)
* => 就是求: \\(arg: min\{关于w, b\}\ (||w||)\\) (求矩阵会比较麻烦,如果x只是 \\(\frac{1}{2}*x^2\\) 的偏导数,那么。。同样是求最小值)
* => 就是求: \\(arg: min\{关于w, b\}\ (\frac{1}{2}*||w||^2)\\) (二次函数求导,求极值,平方也方便计算)
* 本质上就是求线性不等式的二次优化问题(求分隔超平面,等价于求解相应的凸二次规划问题。)
* 通过拉格朗日乘子法,求二次优化问题

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 KiB

View File

@@ -4,7 +4,7 @@
from numpy import random, mat, eye
'''
# NumPy 矩阵和数字的区别
# NumPy 矩阵和数组的区别
NumPy存在2中不同的数据类型:
1. 矩阵 matrix
2. 数组 array