一、基本概念
1,有监督学习和无监督学习
有监督学习:预先定义好的一组标签(比如禾本科植物:小麦、玉米、水稻、高粱、高羊茅、剪股颖、早熟禾、燕麦、稗、茅、狗尾巴草),通过机器学习后获得的结果是在预先定义好的标签内(比如:燕麦)。
无监督学习:预先没有定义好的一组标签,机器学习后,通过数据中的类似性归为一类。
2,分类、聚类和回归
分类:分类属于有监督学习。比如对于结论在[小麦,玉米,水稻,高粱,高羊茅,剪股颖,早熟禾,燕麦,稗,茅,狗尾巴草]下,给出下面一些训练数据和测试数据。
属性1 |
属性2 |
属性3 |
属性4 |
属性5 |
属性6 |
属性7 |
… |
属性n |
结论 |
值1.1 |
值1.2 |
值1.3 |
值1.4 |
值1.5 |
值1.6 |
值1.7 |
… |
值1.n |
小麦 |
值2.1 |
值2.2 |
值2.3 |
值2.4 |
值2.5 |
值2.6 |
值2.7 |
… |
值2.n |
玉米 |
值3.1 |
值3.2 |
值3.3 |
值3.4 |
值3.5 |
值3.6 |
值3.7 |
… |
值3.n |
小麦 |
值4.1 |
值4.2 |
值4.3 |
值4.4 |
值4.5 |
值4.6 |
值4.7 |
… |
值4.n |
水稻 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
|
值m.1 |
值m.2 |
值m.3 |
值m.4 |
值m.5 |
值m.6 |
值m.7 |
值m.n |
水稻 |
现在给定一组数据,判定具有这组数据属性的禾本科植物属于哪个品种,比如。
属性1 |
属性2 |
属性3 |
属性4 |
属性5 |
属性6 |
属性7 |
… |
属性n |
结论 |
值x.1 |
值x.2 |
值x.3 |
值x.4 |
值x.5 |
值x.6 |
值x.7 |
… |
值x.n |
狗尾巴草 |
最后得出结论为:狗尾巴草(注意最后的结论肯定在[小麦,玉米,水稻,高粱,高羊茅,剪股颖,早熟禾,燕麦,稗,茅,狗尾巴草]之内)。
聚类:分类属于无监督学习,比如同样用上面一组数据,但是我们不给标签,通过训练,得到:
属性1 |
属性2 |
属性3 |
属性4 |
属性5 |
属性6 |
属性7 |
… |
属性n |
结论 |
值1.1 |
值1.2 |
值1.3 |
值1.4 |
值1.5 |
值1.6 |
值1.7 |
… |
值1.n |
类别1 |
值2.1 |
值2.2 |
值2.3 |
值2.4 |
值2.5 |
值2.6 |
值2.7 |
… |
值2.n |
类别2 |
值3.1 |
值3.2 |
值3.3 |
值3.4 |
值3.5 |
值3.6 |
值3.7 |
… |
值3.n |
类别1 |
值4.1 |
值4.2 |
值4.3 |
值4.4 |
值4.5 |
值4.6 |
值4.7 |
… |
值4.n |
类别3 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
|
值m.1 |
值m.2 |
值m.3 |
值m.4 |
值m.5 |
值m.6 |
值m.7 |
值m.n |
类别5 |
在这里,是不是第1条结论就应该是类别1;第2条结论就应该是类别2,预先是未知的。
现在,仍旧用上面的数据:
属性1 |
属性2 |
属性3 |
属性4 |
属性5 |
属性6 |
属性7 |
… |
属性n |
结论 |
值x.1 |
值x.2 |
值x.3 |
值x.4 |
值x.5 |
值x.6 |
值x.7 |
… |
值x.n |
类别4 |
回归:可以看见不管分类还是聚类数据是离散的,而回归的数据是连续的,回归主要用于预测(比如股票预测,天气预测)。
日期 |
最高温度 |
最低温度 |
最高湿度 |
最低温度 |
气压 |
结论 |
2022-1-1 |
1 |
-4 |
80% |
47% |
1.00 |
晴 |
2022-1-2 |
3 |
-3 |
76% |
52% |
1.01 |
阴 |
2022-1-3 |
4 |
-1 |
87% |
51% |
0.98 |
阴 |
2022-1-15 |
4 |
-2 |
85% |
48% |
0.99 |
阴 |
… |
… |
… |
… |
… |
… |
… |
2022-2-5 |
2 |
-3 |
84% |
50% |
1.02 |
小雨 |
今天是2022-2-6,可以通过回归算法预测2022-2-7为晴。
3,训练集和测试集
一组数据用于机器学习,先用一批数据进行学习,然后用另一组数据进行验证,通过验证后的数据的准确与否来调整机器学习模型。用于训练的测试数据为训练集;用于测试的测试数据为测试集。一般而言训练集占所有数据的80%;测试集占所有数据的20%。
4,训练得分和测试得分
训练得分=训练答对的数据个数/所有训练集数据个数*100%。
测试得分=测试答对的数据个数/所有测试集数据个数*100%。
由于无监督学习没有对与错,所以训练集和测试集仅对有监督学习有效。
5,过拟合与欠拟合
过拟合:训练得分很高;测试得分很低。
欠拟合:训练得分和测试得分都很低。
过拟合原因:训练数据不具有普适性;欠拟合原因:训练数据没有训练价值。
我在实际工作中出现过训练得分很低,而测试得分很高,属于不正常现象,可以考虑代码错误或者测试数据过于单一。