Skip to content

Commit

Permalink
Merge pull request #84 from jiangzhonglian/master
Browse files Browse the repository at this point in the history
更新 1.机器学习基础.md/2.k-近邻算法/6.SVM的公式
  • Loading branch information
jiangzhonglian authored Apr 20, 2017
2 parents 7463424 + 9410dcc commit 7523f61
Show file tree
Hide file tree
Showing 7 changed files with 75 additions and 50 deletions.
118 changes: 72 additions & 46 deletions docs/1.机器学习基础.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,87 @@

# 1) 机器学习基础
# 1. 机器学习基础

* 机器学习是什么
* 把无序的数据转换成有用的信息。
我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的真实含义。

* 机器学习的意义
* 我们利用计算机来彰显数据背后的真实含义。
> 机器学习已应用于多个领域,远远超出大多数人的想象,横跨:计算机科学、工程技术和统计学等多个学科。
* 机器学习的任务
* 机器学习的主要任务就是分类
* 分类:将实例数据划分到合适的分类中
* 机器学习的另一项任务是回归
* 回归:主要用于预测数值型数据。(例子———数据拟合曲线:通过给定数据点的最优拟合曲线)
* 搜索引擎,根据你的搜索点击,优化你下次的搜索结果。
* 垃圾邮件,会自动的过滤垃圾广告邮件到垃圾箱内
* 超市优惠券,你会发现,你在购买小孩子的尿布的时候,售货员会赠送你一张优惠券可以兑换6罐啤酒
* 邮局邮寄,手写软件自动识别寄送贺卡的地址
* 申请贷款,通过你最近的金融活动信息继续综合评定,决定你是否合格。

## 机器学习的简单概述

`机器学习`就是把无序的数据转换成有用的信息;机器学习将有助于我们穿越数据雾霾,从中抽取出有用的信息。
* 1.需要获取海量的数据
* 2.才能从海量数据中获取有用的信息

## 机器学习的主要任务

> 机器学习的主要任务就是分类和回归
* 分类:将实例数据划分到合适的分类中。
* 回归:主要用于预测数值型数据。(例子———数据拟合曲线:通过给定数据点的最优拟合曲线)
* 目标变量
* 目标变量是机器学习预测算法的测试结果。
* 在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。
* 在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。

* 机器学习的训练过程
* ![机器学习训练过程图](/images/1.MLFoundation/机器学习基础训练过程.png)

* 监督学习
* 必须知道预测什么,即必须知道目标变量的分类信息。分类和回归属于监督学习。
* 样本集:训练数据 + 测试数据
* 训练样本 = 特征 + 目标变量
* 训练样本的集合称为训练样本集,训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
* 特征(feature-是否有缺失情况) + 目标变量(分类-离散值<A/B/C、 是/否>/回归-连续值<0~100、 -999~999>)
* 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
* `知识表示`:机器已经学会如何识别鸟类的过程
* 1.可以采用规则集的形式
* 2.可以采用概率分布的形式
* 3.可以使训练样本集中的一个实例

* 非监督学习
* 数据没有类别信息,也不会给定目标值
* 聚类:在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程称为聚类;
* 密度估计:将寻找描述数据统计值的过程称之为密度估计。
* 此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
* ![机器学习训练过程图](/images/1.MLFoundation/机器学习基础训练过程.png)

> 监督学习
* 必须知道预测什么,即必须知道目标变量的分类信息。分类和回归属于监督学习。
* 样本集:训练数据 + 测试数据
* 训练样本 = 特征 + 目标变量
* 训练样本的集合称为训练样本集,训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
* 特征(feature-是否有缺失情况) + 目标变量(分类-离散值<A/B/C、 是/否>/回归-连续值<0~100、 -999~999>)
* 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
* `知识表示`:机器已经学会如何识别鸟类的过程
* 1.可以采用规则集的形式
* 2.可以采用概率分布的形式
* 3.可以使训练样本集中的一个实例

> 非监督学习
* 数据没有类别信息,也不会给定目标值
* 聚类:在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程称为聚类;
* 密度估计:将寻找描述数据统计值的过程称之为密度估计。
* 此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。

> 算法汇总
![算法汇总](/images/1.MLFoundation/ml_algorithm.jpg)

## 机器学习的原因

* 选择算法需要考虑的两个问题
* 使用机器学习算法的目的
* 使用机器学习算法的目的
* 想要完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。
* 需要分析或收集的数据是什么
* 举例
* ![选择算法图](/images/1.MLFoundation/机器学习基础-选择算法.png)

* 开发的步骤
* 1.收集数据
* 2.准备输入数据
* 注意数据的格式
* 3.分析输入数据
* 为了确保数据集中没有垃圾数据;如果是算法可以处理的数据格式或可信任的数据源,则可以跳过该步骤;另外该步骤需要人工干预,会降低自动化系统的价值。
* 4.训练算法
* 如果使用无监督学习算法,由于不存在目标变量值,则可以跳过该步骤
* 5.测试算法
* 6.使用算法

* Python相关的库
* 科学函数库:SciPy、`NumPy`(底层语言:C和Fortran)
* ![选择算法图](/images/1.MLFoundation/机器学习基础-选择算法.jpg)

```
开发机器学习应用程序的步骤
1. 收集数据
2. 准备输入数据
* 注意数据的格式
3. 分析输入数据
* 为了确保数据集中没有垃圾数据;如果是算法可以处理的数据格式或可信任的数据源,则可以跳过该步骤;另外该步骤需要人工干预,会降低自动化系统的价值。
4. 训练算法
* 如果使用无监督学习算法,由于不存在目标变量值,则可以跳过该步骤
5. 测试算法
6. 使用算法
```

## Python语言的优势

1. 可执行伪代码
2. Python比较流行
3. Python语言的特色
4. Python语言的缺点
5. Python相关的库
* 科学函数库:`SciPy``NumPy`(底层语言:C和Fortran)
* 绘图工具库:`Matplotlib`
3 changes: 1 addition & 2 deletions docs/2.k-近邻算法.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@

# 2) k-近邻算法
# 2. k-近邻算法

* k-近邻算法的特点
* 优点:精度高、对异常值不敏感、无数据输入假定
Expand Down
2 changes: 1 addition & 1 deletion docs/6.支持向量机.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)\\) (二次函数求导,求极值,平方也方便计算)
* 本质上就是求线性不等式的二次优化问题(求分隔超平面,等价于求解相应的凸二次规划问题。)
* 通过拉格朗日乘子法,求二次优化问题
Expand Down
Binary file added images/1.MLFoundation/ml_algorithm.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
2 changes: 1 addition & 1 deletion src/python/1.MLFoundation/NumPy.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from numpy import random, mat, eye

'''
# NumPy 矩阵和数字的区别
# NumPy 矩阵和数组的区别
NumPy存在2中不同的数据类型:
1. 矩阵 matrix
2. 数组 array
Expand Down

0 comments on commit 7523f61

Please sign in to comment.