本文共 1911 字,大约阅读时间需要 6 分钟。
机器学习的实现路线充满了反复试验。在这个领域,新手工程师和科学家将不断调整他们的算法和模型。此过程中会出现挑战,尤其是在数据处理和确定最优模型的时候。
在建立机器学习模型时,重要的是知道现实世界的数据并不完美,因此不同类型的数据需要不同的处理方法和工具,并且在确定最优模型的时候不可避免会有取舍。
下面的系统流程将描述如何开发一个训练好的模型用于手机健康监测app,该app跟踪用户整天的活动。输入包括手机端记录的感知器数据。输出将是用户的活动:行走,站立,坐下,跑步,或跳舞。由于这是一个分类问题,这个例子将应用有监督学习。
访问和加载数据
用户将拿着手机坐下来,记录传感器数据,并将其存储在标记为“坐下”的文本文件中。之后,用户拿着手机站起来,记录传感器数据,并将其存储在标记为“站立”的文本文件中。用同样的方法来记录跑步、行走、跳舞的数据。
数据预处理
由于机器学习算法无法区分数据中的噪声和有价值的部分,所以需要在训练模型前清洗数据。数据预处理可以用数据分析工具来实现,比如MATLAB。为了清理数据,用户可以导入并绘制数据,去除异常值。在这个例子中,离群值可能是由于在记录数据时无意中移动了手机造成。用户还需要检查缺失值,缺失值可用其他样本的近似值或参照数据代替。
图 1 数据预处理之去除离群值,即位于数据主要部分之外的数据点。
数据清洗之后,将数据集分为两个部分,一部分作为训练集,另一部分将是用于测试和交叉验证的“保留”数据。
使用预处理后的数据生成特征
原始数据必须转化成机器学习算法可以使用的信息。要实现这一点,用户必须生成能够区分手机端数据的特征。
在这个例子中,工程师和科学家必须划分好特征以帮助算法区分步行(低频)和跑步(高频)。
表 1 依据数据类型导出特征,可以把原始数据转化成机器学习模型可以使用的高级别信息
建立并训练模型
从一个简单的决策树开始:
图 2 基于特征建立的决策树分类模型
绘制混淆矩阵以观察模型效果。图 3 矩阵显示该模型在区分跳舞和跑步时存在问题
基于上面的混淆矩阵,这表示决策树不适合这种类型的数据,或者应该使用不同的算法。K近邻算法(KNN)存储所有训练数据,将新数据点与训练数据进行比较,得到K个最相似样本,并返回这些相似样本的最频繁类。这个算法展示出更高的准确度。
图 4 改用KNN算法提高了准确度——尽管还有提高的可能性
另一个选择是多分类支持向量机(SVM):图 5 SVM的准确率在每个分类标签上都接近99%
这个过程证明了通过反复试验可以更好实现目标。改进模型
如果模型无法可靠地区分跳舞和跑步,就需要改进模型。改进模型可以通过使其复杂化以更好地拟合数据,或者使其简单化以降低过拟合的可能性。
为了简化模型,可以通过以下方法减少特征数量:
相关矩阵,去除相关性弱的特征;
PCA降维,消除冗余;
有序地缩减特征,直到模型效果不再提高。
为了使模型更加复杂,工程师和科学家可以通过集合多个简单模型得到一个更大的模型或者增加更多数据源。
完成训练和调整之后,模型可以应用在测试集(数据预处理时保留的一部分数据)。如果模型可以可靠地对活动分类,那么它就可以应用在手机应用程序。
工程师和科学家第一次训练机器学习模型的时候将会遇到挑战,但应该意识到反复试验是过程的一部分。
上述的工作流程提供了构建机器学习模型的路线图,并且可以应用到其他不同的问题上,比如预测维护、自然语言处理和自动驾驶。
探索这些资源以了解更多机器学习方法和例子:
Supervised Learning Workflow and Algorithms:Learn the workflow and steps in the supervised learning processMATLAB Machine Learning Examples:Get started with machine learning by exploring examples, articles, and tutorials
Machine Learning with MATLAB:Download this ebook for a step-by-step guide providing machine learning basics along with advanced techniques and algorithms
原文发布时间为:2018-12-17
本文作者: Seth DeLand本文来自云栖社区合作伙伴“ ”,了解相关信息可以关注“ecshujufenxi”微信公众号转载地址:http://cmhal.baihongyu.com/