罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经退休,不会被更新。

从可穿戴设备在MATLAB分析健康数据

收集和跟踪健康和健身数据与可穿戴设备将成为未来的主流智能手机巨头苹果、谷歌和三星进入战斗。但是如果你收集数据,有什么意义,如果你不分析吗?

今天的嘉宾博客古原竹内,想与大家分享一个举重的分析数据集他发现在公共存储库。

内容

动机、数据集和预测精度

人类活动识别(HAR)举重训练数据集提供了测量来确定如何执行一个活动”。6科目执行1组10单边哑铃肱二头肌旋度在5个不同的方面。

当我遇到这个数据集时,我马上想到建立一个移动应用程序建议最终用户是否正确执行运动,如果没有,他们正在常见错误。我使用了强大的随机森林算法,看看我可以建立一个成功的预测模型,以支持这样的应用程序。我能够实现99%的预测精度这个数据集和我想和你分享我的成果。

与159年数据集提供了39242个样本变量标记与5种活动检测4 - 1正确方法和常见的错误:

  1. 完全按照规范(A类)
  2. 把手肘到前面(B类)
  3. 举起哑铃只有一半(C类)
  4. 降低了哑铃只有一半(类D)
  5. 把臀部到前面(类E)

传感器放置在受试者的腰带、臂章、手套和哑铃,如下所述:

引用韦洛索,大肠;提高身价,a;Gellersen h;Ugulino w;福娃,h .定性活动识别的举重练习。4日学报》国际会议与SIGCHI合作(增强人类的13)。斯图加特,德国:ACM SIGCHI, 2013年。阅读更多:

数据预处理和探索性分析

通常不能直接使用原始数据。预处理的一个重要组成部分是你的下游分析工作流程,具有显著的影响。

  1. 加载数据集和检查数据缺失值
  2. 分区交叉验证的数据集
  3. 清洁和标准化变量
  4. 选择预测变量(特征)

在这些步骤中,交叉验证是一个特定于预测建模的关键一步。大致说来,你持有的一部分可用数据测试后,使用剩余的数据集和构建模型。伸出集称为测试集和集用于建模称为“训练集”。这使得更难overfit你的模型,因为你可以测试你的模型对数据您没有使用在建模过程中,给你一个真实的想法与未知的数据模型将如何实际执行。

探索面向通常始于可视化数据分析得到的细微差别。块下面的第一个四个变量表明:

  1. 数据是由类——就像“AAAAABBBBBCCCCC”。这可以成为一个工件的数据收集和现实生活中这样的数据可能不是结构化的,所以我们要用更实际的数据来创建我们的模型。我们可以解决这个问题通过随机重组数据。
  2. 集群数据点周围的几个不同的平均值,表明测量设备校准在几个不同的方式
  3. 这些变量表现出不同的模式类E(红色的),这些变量隔离它会有用的

审查preprocess.m如果你是好奇的细节。

进行预处理

用随机森林预测建模

数据集与校准的一些问题。我们可以进一步进行预处理的数据为了消除标定缺口。然而这一次,我想使用一个灵活的预测算法随机森林。在MATLAB中,该算法的实现TreeBagger类中可用统计工具箱

随机森林流行尤其是在它被许多赢家Kaggle比赛。它使用一个大的决策树(因此“森林”)训练随机子集的数据,并使用这些树木的多数选票来预测结果。它会产生一个高度精确的结果,但算法的复杂性使其缓慢而难以解释。

加速计算,我将使并行支持的选项金宝app并行计算工具箱。你可以注释掉不必要的代码,如果你不使用它。

模型建立后,你会看到的混淆矩阵比较实际的类标签预测类标签。如果一切行对角线,那么你已经达到了100%的准确率。非对角的数字错误分类错误。

模型具有很高的预测精度,尽管我们之前看到的,我们的数据集有校准问题。

初始化并行的选择——如果你不使用注释掉平行

poolobj = gcp (“nocreate”);%不创建一个新的池即使没有池退出如果isempty (poolobj) parpool (“本地”2);结束选择= statset (“UseParallel”,真正的);
开始平行池(parpool)使用“本地”概要文件…连接到两个工人。

创建一个随机森林模型100棵树,平行启用……

rfmodel = TreeBagger(100年,table2array (Xtrain) Ytrain,“方法”,“分类”,“oobvarimp”,“上”,“选项”、选择);
这是场版本相同的模型rfmodel = TreeBagger(100年,table2array (Xtrain) Ytrain,…“方法”、“分类”、“oobvarimp”,“上”);

为测试集预测类标签。

[Ypred, Yscore] =预测(rfmodel table2array (Xtest));

计算混淆矩阵和预测精度。

C = confusionmat(欧美、分类(Ypred));disp (array2table (C,“VariableNames”rfmodel.ClassNames,“RowNames”rfmodel.ClassNames))流(测试集上的预测精度:% f \ n \ n '总和(C(逻辑(眼(5))))/笔(和(C)))
A B C D E 1133年出生一幅中国画1 0 0 0 B 728 1 0 0 0 3 645 C 3 0 D 0 0 741 651 0 E 0 0 0 6预测精度测试集:0.993374

情节误分类错误的数量的树木

我碰巧选100棵树模型中,但是你可以检查错误分类错误相对于树的数量用于预测。情节表明,100是一个过度——我们可以用更少的树木,这将使它更快。

图绘制(oobError (rfmodel));包含(种植树木的数量);ylabel (“Out-of-Bag分类错误”);

变量的重要性

随机森林的一个主要的批评是,它是一种黑盒算法和它不容易理解它是什么做的。然而,随机森林可以提供变量重要性度量,这对应于预测误差的变化有或没有给定模型中变量的存在。

对于我们的假设的举重教练移动应用,随机森林太繁琐和缓慢的实现,所以你想要使用一个简单的用更少的预测变量预测模型。随机森林可以帮助你选择,预测可以在不牺牲预测精度下降太多。

让我们看看如何做到这一点TreeBagger

变量的名字

var = Xtrain.Properties.VariableNames;

得分和排序变量的重要性。因为我们把“oobvarimp”“上”,该模型包含了OOBPermutedVarDeltaError它充当变量测量的重要性。

varimp = rfmodel.OOBPermutedVarDeltaError ';[~,idxvarimp] = (varimp)进行排序;标签= var (idxvarimp);

画出分数排序。

图barh (varimp (idxvarimp), 1);ylim (52 [1]);集(gca),“YTickLabel”、标签“YTick”1:元素个数(标签)标题(“变量重要性”);包含(“分数”)

评估与中华民国情节取舍

现在让我们做的数量之间的权衡预测变量和预测精度。的接受者操作特征(中华民国)图提供了一种方便的方法来可视化和比较二元分类器的性能。你画出假阳性率对真阳性率在不同预测阈值曲线。如果你得到一个完全随机的结果,应该遵循一个对角线的曲线。如果你有100%的准确率,曲线应该拥抱左上角。这意味着您可以使用曲线下的面积(AUC)来评估每个模型如何执行。

让我们用不同的绘制ROC曲线预测变量,使用“C”类作为正类,因为我们只能做这一个类,和之前的混淆矩阵显示了该类比其他人更多的误分类错误。您可以使用perfcurve计算ROC曲线。

看看myROCplot.m看到的细节。

nFeatures =(3、5、10、15、20、25日,52);myROCplot (Xtrain Ytrain Xtest,欧美,“C”、nFeatures varimp)

减少模型12特性

基于前面的分析,可以实现高精确度的即使你使用只有10个特性。假设我们解决12特性。现在我们知道你不需要使用数据手套的预测,这是一个更少的传感器我们假设的最终用户将不得不购买。鉴于这个结果,我甚至考虑把臂带,就坚持带和哑铃传感器。

显示哪些特征是包括在内。

disp(表(varimp (idxvarimp (1:12)),“RowNames”var (idxvarimp (1:12)),“VariableNames”,{“重要性”}));
重要性__________ accel_belt_y pitch_dumbbell 0.69746 0.77255 0.87897 0.87168 0.81946 0.81696 0.78941 accel_arm_z accel_belt_x magnet_arm_y accel_arm_x magnet_arm_x accel_dumbbell_x 0.92222 1.1077 1.0461 1.0172 magnet_forearm_x total_accel_belt gyros_arm_z gyros_belt_x 1.1235

关闭平行池。

删除(poolobj);

结论和下一步——将你的代码集成到你的应用程序

尽管我最初的疑虑数据,我们能够维持高预测精度与随机森林模型只有12个功能。然而,随机森林可能不是一个理想的模型来实现对移动应用由于其记忆的脚印和缓慢的响应时间。

下一步是要找到一个简单的模型,如物流回归,可以执行体面。你可能需要做更多的数据的预处理工作。

最后,我从来没有尝试过,但是你可以生成C代码的MATLAB将它变成一个手机应用程序,看这个网络研讨会,MATLAB iPhone制作容易为更多的细节。

你跟踪你的活动与可穿戴设备吗?你试着分析数据吗?告诉我们关于你的经历在这里!




发表与MATLAB®R2014a

|