机器学习就是把无序的数据转换成有用的信息。
1 相关术语
(1)模型:模型是机器学习的核心概念,可以认为是某种机器学习算法在设定参数后的产物。
(2)数据集:数据集又分为训练集和测试集,在训练模型阶段使用,叫做训练集;在测试模型阶段使用,就叫测试集。
(3)数据:数据集就是数据的集合。在机器学习中,称一条数据为一个样本(Sample),形式类似一维数组。样本通常包含多个特征(Feature),如果是用于分类的数据集,还会包含类别(Class Label)信息,如果是回归问题的数据集,则会包含一个连续型的数值。
(4)特征:在机器学习中,特征是某个对象的几个记录维度。例如一张个人信息表,特征就是这张表里的空格,如名字、性别、出生日期、籍贯等,一份个人信息表格可以看成一个样本,名字、籍贯这些信息就称作特征。前面说数据形式类似一维数组,那么特征就是数组的值。
(5)向量:向量为线性代数术语,机器学习模型算法的运算均基于线性代数法则,可以认为向量就是该类算法所对应的“数据结构”。一条样本数据就是以一个向量的形式输入模型的。一条监督学习数据的向量形式如下:
[特征X1值,特征X2值,...,Y1值]
(6)矩阵:矩阵为线性代数属于,可以将矩阵看成由向量组成的数组,形式上也非常接近二维数组。数据集通常就是以矩阵的形式输入模型的,常见的矩阵形式如下:
[特征X1值,特征X2值,...,Y1值],
[特征X1值,特征X2值,...,Y2值],
...
每一行就是一个样本,每一列就是一个特征维度。
2 如何选择合适的算法
选择实际可用的算法,必须考虑下面两个问题:
(1)使用机器学习算法的目的,想要算法完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;
① 如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。
② 确定目标变量类型,如果目标变量是离散型,如是/否、1/2/3、A/B/C或者红/黄/黑等,则可以选择分类器算法;如果目标变量是连续型的数值,如、或者等,则需要选择回归算法。
③ 如果不想预测目标变量的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。
(2)需要分析或收集的数据是什么。
应该了解数据的以下特性:
- 特征值是离散型变量还是连续型变量
- 特征值中是否存在缺失的值,何种原因造成缺失值
- 数据中是否存在异常值
- 某个特征发生的频率如何(是否罕见得如同海底捞针)
- …
充分了解上面提到的这些数据特性可以缩短选择机器学习算法的时间。
实际上没有绝对的最好的算法,对于每种算法都有改进其性能的其他技术。在处理输入数据之后,两个算法的相对性能也可能发生变化。一般说来发现最好算法的关键环节是反复试错的迭代过程。
3 开发ML应用程序的步骤
(1)收集数据。
(2)准备输入数据。
(3)分析输入数据。
(4)训练算法。
(5)测试算法。
(6)使用算法。
4 Numpy简单介绍
(1)构造一个的随机数组(numpy array)
from numpy import *
random.rand(4,4)
(2)调用 mat()
函数可以把数组(array)转化为矩阵(matrix)
randMat = mat(random.rand(4, 4))
(3).I
可以实现矩阵求逆运算
invRandMat = randMat.I
(4)矩阵乘法
randMat * invRandMat
结果应该是单位矩阵,除了对角线元素是1,4×4矩阵的其他元素应该全是0。实际输出结果略有不同,矩阵里还留下了许多非常小的元素,这是计算机处理误差产生的结果。输入下述命令,得到误差值:
myEye = randMat * invRandMat
myEye - eye(4)
eye(4)
可以创建4×4的单位矩阵。