1 四种对问题的建模方案
数据分类
将数据归为某一类,输入一个数据,期望输出这个数据的类别
可用在监督学习上,监督AI是否正确分类。
鸢尾花数据集
https://archive.ics.uci.edu/ml/machine-learning-databases/iris/
数据集给出了每一种花的一些特征,例如花萼长度、花瓣长度等。
算法应该根据输入的数据来判断是哪一种花。
蛇和鳄鱼
给定身长和体重数据,算法应该分出蛇还是鳄鱼。
例如3米长100kg重应该是鳄鱼,10米长5kg重应该是蛇。
这属于简单的二分类问题,也就是在二维坐标中划分出一条直线将不同的数据集合分隔开。
回归分析
对于一些需要给出计算结果的问题来说,这类问题需要进行回归分析
燃油效率
例如给定发动机的规格和车身重量,计算汽车的燃油效率
https://archive.ics.uci.edu/ml/datasets/Auto+MPG
该数据集给定特定车型,希望算法输出燃油效率
聚类问题
对于特定的数据,往往会有相似的特征。例如蛇和鳄鱼的二分类。再加入昆虫和鱼。就是四个分类。这四类可以看作聚类问题。
我们更希望聚类问题的算法能自动识别新数据,给出类别。
时序问题
对于一些股票走势,时序问题往往可以分析和时间有关的问题。对于燃油或是二分类则完全不需要考虑时间。
数据和时间的走势可以被算法分析出来。从而进行预测。
2 输入输出模型
机器学习本质很想数学的函数,给定一个输入,通过函数计算出一个输出。
因此对于机器学习给定数据,给出输出就类似于函数。
对于抽象的输入输出而言,一个算法或是一个模型便是一个函数,
给定这个函数一个输入,函数会给你一个输出结果。
具体的,在机器上运行的代码本质上是对输入的数据进行计算,得出输出的数据。
输入的数据会被转化成浮点数,一系列浮点数组成浮点数组,也就是向量的形式。
而算法或是学习模型要做的就是对矩阵进行变换,通过什么样的变换来得到结果矩阵。
词袋算法 - 字符串编码
对于一系列字符串而言,词袋算法认为组成句子的单词是没有意义的。
因此一个字符串可以用一个对应表来将数字和单词一一对应。
字符串表示为一系列数字,而数字出现的频率映射到数组上就是一个根据对应表而来的一维数组。
异或映射
异或操作XOR输入两个布尔值,如果布尔值相同,那就输出假,反之输出真
也就是说一旦输入的数值不同,那就给出真值。
设输入的数据是两个浮点数: float1, float2,输入的值是一个浮点数 float3
那么设前两个浮点数为A,输出结果为B
Ax -> B的映射表为:
[0.0, 0.0] -> [0.0]
[1.0, 0.0] -> [1.0]
[0.0, 1.0] -> [1.0]
[1.0, 1.0] -> [0.0]
上述映射便是预期的结果。我们应该让算法实现上面的映射。
3 归一化
当我们有一个大范围数据要处理的时候,例如汽车的重量:从50千克到5吨都有可能。
这时计算机需要将这么大范围的数据用一个从0到1的浮点数表示,例如最小的50千克就很接近0,最大的5吨就很接近1,这样不论多大的数据,都可以被一个浮点数表示。
为什么需要归一化,一些数据在现实中是有意义的,比如说1公斤或是10公斤代表重量,这里的公斤是量纲,而计算机无法理解一公斤代表什么意义,因此需要将有量纲的数据转为无量纲的数据。
归一化步骤
求出数据所在的区间。例如50kg-5000kg的数据来说,他的范围可以在数轴上表示为从0到4950的线段。
而对于一个新数据:600kg,他的起始点也是50,因此需要减去50 = 550,550是从0到550的线段。
后一个线段占前一个线段的几分之几,就可以限制在1以内。550 / 4950 = 0.111
对于分类问题,使用布尔值即可,例如燃油问题中的混合动力和常规动力两种情况。
可以用1代表常规动力,0代表混合动力,也能完成归一化。
图像归一化
对于一个图像而言,最小的组成单位可以是像素,一个像素拥有不同的颜色,任何颜色都可以近似用一个从0-255的整数来表示光强,数值越高,亮度越高,255是最亮的白色,0是最暗的黑色。这时再用像素值/255也能进行归一化。RGB需要三个数值来表示,也就是一个像素需要三个值。分别为红色的0-255,蓝色的0-255,绿色的0-255.
序列归一化
金融预测是常见的时间算法预测。
不同于前面的数据,时间序列更在乎数据的变化情况,例如金融序列中的金融产品价格变化的百分比。
例如初始数据为 10,现在时间序列为 10 20 40 80 160 320 …
每次都比前一次增加了100%,那么很明显下一个数据可能是640。
不过问题就出现了,我们如何确定数据集呢?
滑动窗口算法提供给了我们一个将序列化数据转为状态序列的方法。例如还是上面的递增数列。我们可以转换为:
10 20 40
20 40 80
40 80 160
80 160 320
…
这时我们就实现了根据前三天的数据和第四天的数据来构建映射。
4. 运算本质
我们已经知道了对于计算机而言,学习的过程实际上就是对矩阵的运算。
因此实际上在计算机底层运算的是一个矩阵权重。一般我们将这种运算归类,称之为线性代数。
学习方法
- 在线学习,整个模型和输入输出部分时刻都在工作,每次输入新的数据,就进行学习并且更新算法。类似于我们的人脑,每次遇见新事物就会进行记忆和理解,不断完善不断调整。但对于机器学习算法在线学习并不常用。
- 批量学习,一次性输入大量的数据进行学习,学习后确定模型,确定后进行测试验证,这种单次大批量的学习在程序上更方便。
深度置信网络
对于训练方法而言,有两种训练方法,一种是监督式学习,给定数据并且给定结果,让算法去调整属于监督式学习。给定数据,不给定结果,让算法输出结果,这样属于非监督式学习。
但对于深度置信网络而言,往往需要将两种不同的训练方法结合起来使用。确定学习和不确定学习
对于给定一个数据,输出一个固定结果的算法,不论给定多少次原始数据,只要原始数据一样,那么输出就一样。这样是确定学习。
但是不确定学习需要使用到随机数,即便是给定一个确定的数,输出的结果也可能不同。
