自打搬来美国以后,我的体重就一路飙升,足足胖了50多磅。而在来美国前,我其实还算是个瘦子。你看,这是我刚来美国时的驾照照片:

美国的生活方式极其容易让人发胖,pizza和快餐到处都是,而且还很便宜。我长期spoil自己,结果给身体造成了很多负担。于是,我决定减肥。

为什么我要使用机器学习研究减肥?

看到这里,也许你会说,少吃多动就可以了,何必用到机器学习来研究减肥,甚至可能还会觉得我在刻意博人眼球。Well,事实上,我已经试过了很多减肥方法。我曾经非常真诚地遵循着“少吃或不吃”的原则。然而每次的节食,都会让我在一段时间后吃得更猛,长得更快。

想必你会说,那你一定要多动。但是亲爱的,我并不是一个意志力强大的人,高强度运动对我来说不是一种可以长期坚持下去的Lifestyle。所以我意识到,我需要的,是一种长期可以让我坚持的生活方式,它不会让我产生焦虑,或是在没有做到某个标准的时候,产生负罪感。

它需要满足以下几个特点:

1.可以长期坚持;

2.不会产生想打破习惯的冲动;

3.在坚持的时候,不会产生不愉悦的体验。

于是,我想到了利用机器学习“Machine Learning”来发掘最适合我的减肥方式,当然,也是找到一个好的生活方式。结果事实证明,我通过机器学习找到的生活方式非常有效!

这里是我16个月以来的减肥成效:

2015-2016体重变化记录

想知道我是如何做到的?那就继续往下看。

我的研究步骤

第一步:收集数据

要找到最适合自己的减肥方法,就需要充分了解自己的身体:看看自己吃什么、做什么会长肉,然后就尽量避免。所以,在初期,我并没刻意减肥,主要就是记录下关于自己的数据。数据记录方法很简单,做一个CSV表格,Date一列,MorningWeight一列,Yesterday’s Lifestyle/Food/Actions一列。


第二步:处理数据

在记录100多天后,我开始运用Machine Learning来分析我的数据。我主要用到的语言/工具如下:

我先写了一个脚本将我的数据记录文件转换为vowpal-wabbit训练集回归格式。在转换后的训练集中,我把目标特征(target feature)标签为过去24小时内重量(delta)的变化,把输入特征(input features)设为我在导致这个delta的24小时内完成的活动或吃过的东西。然后,通过Mahine Learning分析,我有了以下发现:

在上图列出的食物/活动中,正的相对值是会让我增重的生活方式,而负的则是能让我减肥的生活方式。我整理出一张指标图:

在这里我要声明以下,请不要对上图我的data太过较真儿,我自己知道在数据的收集过程中存在一些不完美,比如:

  • 原始数据点的数量可能太小(只记录了100多天)而不足以建立足够的显著水平(significance)

  • 我每天的体重变化量非常小,通常约为0.1磅

  • 我的称不太准,你可能已经注意到,我的data 有个0.2pound的resolution,理想情况下,最好将其控制在0.1 pound

  • 那些让你增重和减重的项目,经常会出现在同一条线上,因为它们之间可能会相互抵消

  • 即使把当前的数据集复制多次用来做training (这样很容易导致model overfitting, i.e. 在training dataset上效果很好,但是在testing时候效果很差), 你的loss function也最多只能减小到0.2.

  • 原始数据中还有一些拼写错误

让我们先忽略那些数据中的小瑕疵。我把关注点集中在了这个表中的极值部分(开始和结束),并以此做出进一步的探究。


第三步:得出结论

通过这些数据,可以得出的4个最能影响我体重的因素:

  1. 睡眠时间是最能显著影响体重变化。

  2. 睡眠不足会让体重上升。

  3. 碳水摄入会增加体重。而最让人长胖的,是那些高糖分的食物。

  4. 油脂类、高蛋白食物与体重呈负相关,也就是说,摄入这类食物,体重会下降。

“当我们在睡觉的时候,我们在消耗,且无法摄入热量。”我花了一阵子才意识到,这其实就是睡眠影响体重的最简单直白的原因:当你醒着的时候,即使不是用餐时间,也难免会吃一点零嘴,但这却不会发生在睡眠期间。所以睡着以后,才是我们禁食最长的时候。

我是如何让体重下降的

你也许注意到了表格的顶端,这里有一个很明显的体重快速下降的部分。背后的原因可能比我现在要告诉你的更加复杂和多元,但我想告诉你,我是如何做到的。

第一个方法非常简单,增长禁食的时间即可,你可以:

  • 跳过早饭部分;

  • 提早最后一顿饭的时间,并且早点上床睡觉。

通过这种方法,我的禁食时间增加到了每天14-16小时左右。而一般来说,这个时间可能仅在10-12小时。

第二个方法,将每一餐的碳水的部分减少,增多高脂高蛋白的部分。这个方法可以让我更快感受到饱腹感。

第三个方法,减少糖分摄入。我研究了血糖生成指数和血糖负荷的含义,然后按照表中的叙述将我吃的东西都换成了会产生较低血糖负荷的食物。

通过这100天的Machine Learning研究,我十分确信,通过这种生活方式,我可以重新回到来美帝之前的体重。然后,我按照得出的结论为指导,避免了那些会让我长胖的食物、活动,成功地减了20磅。

如果我可以保持现在的这种减肥速度,用不了一两年,我就可以完全逆转过去20多年的身体负荷。

我的减肥方法论总结

1. 减少碳水化合物的摄入(特别是在减肥最开始的时候)

像披萨、意大利面、面包、甜甜圈这类富含淀粉的食物,千万别碰!然后像碳酸饮料、甜味果汁这些含糖量高的加工食物也要少吃。

但需要注意的是,减碳不等于完全无碳,只是减量、减次。

2. 减少糖分摄入

避免升糖负荷高的食物。升糖负荷指的是在人体摄入某样食物后,它会如何升高你的血糖水平。你可以上网查查升糖指数表,尽量避免吃那些指数高的食物。比如说,吃橙子,而不要喝加工的橙汁。再比如说,喝咖啡的时候,如果你非要加糖,可以用甜味剂代替。

3. 大胆摄入脂肪

我已经把我家里拿来配咖啡的全职牛奶,换成了half + half (一半全脂奶 + 一半鲜奶油),而我还在考虑要不要换成无糖高浓度奶油。你们肯定觉得,我是不是疯了。但是你知道吗?高浓度奶油虽然脂肪更多,但是所含的碳水化合物/乳糖却很少。

我减肥期间,从不“防备”脂肪,只要它是天然、非加工的脂肪,我就放心吃。我的身体不但没有长胖,反而让体内的细胞们明白:“我的血液中有过多的脂肪,所以我们要赶紧增加分解脂肪酶的数量”。这样长期下来,更有利于我减肥。

4. 增加一点运动量

当然,这一项多多益善。我减肥的时候没做太多运动,我只是骑自行车上班。你可以试着遛狗(但你要快步走),或者去跳健美操、跳Zumba。诀窍是: 找一些你不觉得难坚持的运动,然后,每天做一点。

5. 多睡,少吃

增加你的睡眠时间,在睡觉前尽可能早地停止进食,再醒来后,尽可能晚地进食。身体总是要靠分解食物来产生能量,而在少吃之后,血液中的葡萄糖含量会变低、肝脏中的糖原也被完全消耗,这时,身体只能通过分解体内储存的脂肪来获得能量,而这恰恰是我们减肥人士最想要的结果。

6. 吃鸡蛋

鸡蛋,是脂肪和蛋白质的完美组合!而且根本没有碳水化合物!

7. 细嚼慢咽

在进食过程中,即使胃部已被食物装满,饱胀感却要延迟20分钟才能到达我们的大脑,如果吃得太快,我们会一不小心,就因没感到饱,而摄入过量的食物。而养成细嚼慢咽的习惯,却可以避免这一点。

写在最后

我们的身体是这个世界上最神奇、最精密的机器。改变它,就需要使用科学、有效的方法。Machine Learning不止是我常常在工作中用到的技能,在生活中,也是帮我减肥的工臣。

如果你也对用Machine Learning研究减肥感兴趣,欢迎收集自己的data,用我在Github上分享的脚本,得出最适合你自己的一套减肥法。

本文编译自https://github.com/arielf/weight-loss

版权属于原作者,不代表来offer观点。

我是如何通过机器学习减肥20磅的?相关推荐

  1. 我是这样入门“机器学习”的

    我是这样入门"机器学习"的 叶锦鲤发表于悦思悦读订阅 原文链接:https://cloud.tencent.com/developer/article/1357704 在这篇文章中 ...

  2. Word里面公式在行距为固定值20磅时显示不全部

    错误形式如上图所示,在论文里面设置段落的行间距为20磅的时候,里面的公式不会显示完全,设置为单倍行距的时候可以解决,显示的问题,但是论文格式要求的是20磅,解决办法: 段落-中文版式-文本格式-选择居 ...

  3. LaTeX如何设行间距为20磅

    在word里面设置固定行距为 20磅, 在 latex里如何对应设置呢?是不是\setlength{\baselineskip}{20pt} 首先我们要了解 LaTeX常用的几个单位换算: 见: La ...

  4. 我是如何用机器学习技术帮助 HR 省时间的

    引言 假设简历库中有 10000 份名为 "软件工程师" 的简历. 一位 HR 在搜索 "Android 工程师" 时仅关注名称为 "Android ...

  5. 机器学习第20篇 - 基于Boruta选择的特征变量构建随机森林

    前面机器学习第18篇 - Boruta特征变量筛选(2)已经完成了特征变量筛选,下面看下基于筛选的特征变量构建的模型准确性怎样? 定义一个函数生成一些列用来测试的mtry (一系列不大于总变量数的数值 ...

  6. CIO40知识星球:IT中年男减肥20斤

    最近由于工作压力,加班时间等,所以必须要去发泄,但作为IT中年男来说?什么是最好的发泄呢?那肯定是:跑步,运动,健康了. 正好借着这个机会把养了多年的肥肉给减掉了,降一下三高,这不夏天来了吗?也要显得 ...

  7. 小白入门:我是如何学好机器学习的?

    作者 | Jae Duk Seo 译者 | Tianyu 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) 在我看来,机器学习是一个计算机科学和数学知识相融合的研究领域.虽然这是 ...

  8. 陈天奇:我是如何从机器学习小白一步一步成长为你们心目中的大神的

    来源 | 知乎 编辑 | 海边的拾遗者 链接 | https://zhuanlan.zhihu.com/p/74249758 十年前,MSRA的夏天,我刚开始尝试机器学习研究,面对科研巨大的不确定性, ...

  9. 我是怎么用机器学习技术找到女票的

    机器学习在我们生活中的用处有多大,就不用我们多说了,大到医疗诊断,小到手机应用,机器学习都应用的风风火火.但是用机器学习帮自己在学校找对象,你听说过吗? 最近滑铁卢大学一位叫 Bai Li 的留学生( ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(单色填充、分组颜色填充)实战
  2. 计算机专业去荷兰还是瑞典,给申请计算机专业的同学几点建议
  3. vue-cli 引用elementUI打包后文件过大
  4. 人工智能TensorFlow工作笔记007---认识张量
  5. JAVA学习-类与对象(韩顺平java-高级篇)
  6. 一个故事讲完CPU的工作原理 侵删
  7. 最大流最小割经典例题_图割-最大流最小切割的最直白解读
  8. c语言 二维数组指针
  9. 电脑如何分盘win10_如何给win10电脑系统盘分区?
  10. 小米盒子显示未连接电脑连接服务器,小米盒子不能连接电脑的原因与解决办法...
  11. SQL server修改字段名,属性
  12. PAT乙级真题 1092 最好吃的月饼 C++实现
  13. 学习TypeScript
  14. jquery可爱的小黑猫
  15. 解决打包过程中出现 ModuleNotFoundError: No module named ‘pydicom.encoders.gdcm‘ 报错的方法
  16. Swift 网络请求 Moya+RxSwift
  17. 存款利息的计算。有1000元,想存5年
  18. Oracle Linux 7.5 安装 Oracle 18C 单实例
  19. CiteSpace 的安装与使用 —— 入门
  20. 软件测试资料哪个好用,做软件测试却不知道这些测试工具?利用好可以涨薪50%...

热门文章

  1. 大数据统计:发布近期网络辟谣TOP10,看看你信过几条?
  2. 为什么root用户编辑文件会提示cant open file for writing
  3. 查准率和查全率(precision and recall)
  4. 应届生年薪200万!我酸了……
  5. Java集合之概述篇
  6. maven install时报错:程序包不存在以及找不到类
  7. 【第64篇】ConvNeXt V2论文翻译:ConvNeXt V2与MAE激情碰撞
  8. 光照下的图片的提取(以光照下的彩色气球为例)
  9. VSCode配置C语言环境(完整版)
  10. virtualbox给虚拟机配置host-only网络