导图社区 《算法通识》得到精品课-读书笔记
花3小时,解锁人机互动时代的一门必修课。自然规律已经不是世界运行的全部了,人类世界越来越多地经由算法运作。了解它,才能驾驭它。
编辑于2022-11-15 14:06:57 上海游戏主机御三家怎么选 | PS5、Switch、Xbox购买攻略 能让你玩起来的游戏机🎮是最推荐的游戏机。Switch 和 XSS 只要2000块就可以玩起来,价格便宜。Switch是掌机,哪里都能玩。有钱当然推荐 PS5,画质好体验好。 游戏机的生命周期一般在7年左右,所以本身还是非常保值的。 希望大家都能找到自己心仪的游戏机,祝大家玩的开心!
我们在实际的工作和学习接触中,会发现一个比较统一的问题,那就是:随着数据在企业生产经营中的广泛应用,我们究竟该如何借助数据分析的能力,去提升公司业务的运营效率,为企业降本增效呢?也就是我们常说的实现真正的数字化,最终达到企业经营模式的转型。那么这个问题,其实根源在于:我们个人如何培养自己的数据思维?
如果说十大必去的城市的话,我就觉得那些把省级行政区(直辖市除外)放进来评论的,不知是不是跑题了!所以按照包括直辖市在内的叫法,我认为排在前两名的肯定是北京和西安。具体的谁靠前就不好说了,反正都差不多。
社区模板帮助中心,点此进入>>
游戏主机御三家怎么选 | PS5、Switch、Xbox购买攻略 能让你玩起来的游戏机🎮是最推荐的游戏机。Switch 和 XSS 只要2000块就可以玩起来,价格便宜。Switch是掌机,哪里都能玩。有钱当然推荐 PS5,画质好体验好。 游戏机的生命周期一般在7年左右,所以本身还是非常保值的。 希望大家都能找到自己心仪的游戏机,祝大家玩的开心!
我们在实际的工作和学习接触中,会发现一个比较统一的问题,那就是:随着数据在企业生产经营中的广泛应用,我们究竟该如何借助数据分析的能力,去提升公司业务的运营效率,为企业降本增效呢?也就是我们常说的实现真正的数字化,最终达到企业经营模式的转型。那么这个问题,其实根源在于:我们个人如何培养自己的数据思维?
如果说十大必去的城市的话,我就觉得那些把省级行政区(直辖市除外)放进来评论的,不知是不是跑题了!所以按照包括直辖市在内的叫法,我认为排在前两名的肯定是北京和西安。具体的谁靠前就不好说了,反正都差不多。
算法通识
认识算法
本质
算法对明确性有极其严苛的要求
eg. 媒婆经验:住得近——多近算近?离家近?离工作地点近?多地间优先级……
算法通过确定性保证解决问题
模型化是算法优势的本质
eg. 网购一个保温壶,就一直推荐保温壶;搜索一个《风声》,就推荐各种谍战片
模型化:对不同的问题,用同样的方式看待,用同一套算法解决
算法没有好坏之分,背后都是人的思想
复杂度
评价算法效率的难题:用绝对时间评判效率不适用
硬件依赖
无穷大
时间复杂度
“基本操作的总数量”随着算法“输入规模”而增长的“函数关系”
eg. 盖一座10米高的金字塔,设计图纸决定了要垒10万块石头还是50万块石头: 垒石头=基本操作;10米=输入规模;图纸=垒石头总量;垒石头总量跟金字塔高度之间的函数关系就是时间复杂度
降低时间复杂度的方法
空间换时间
空间复杂度:算法占据的空间资源随着输入规模变大而增长的函数关系
牺牲一些存储空间(硬盘/内存),换来更快的搜索速度,是非常划算的
分治思想
eg. 从傅里叶变换到快速傅里叶变换,压缩音频耗时从1天到1秒
启发
效用选择模型:近似现实且保持可解性
效用:满足感
eg. 美国选民投不投票受性别、族裔、受教育程度、职业等多因素影响;影响效用的因素太多,甚至有些因素之间还有复杂的相关关系
模型太复杂就求不出解;这时必须简化模型;假设所有因素之间的关系只是线性叠加,没有复杂的交互;这叫线性效应模型
德州扑克:问题规模的减小
规模大到计算机也无法处理,就得想办法扔掉一些信息
eg. 德州扑克:把相似的状态合并
探索与利用:迭代得到结果
eg. 视频网站刚开始给你推荐各种内容,过一段时间开始推荐你最常看的内容
反思:算法只会执行,不能负责;算法出了问题,要回到人身上找答案
算法不能对问题负责
eg. 两家书店都以对方价格的倍数为自己定价,导致价格异常高
算法不能对数据负责
eg. 拿冰红茶做尿检,糖超标,怀疑糖尿病
算法不能对解释负责
eg. IBM打造沃森医疗诊断系统,算法无法提供解释
设计算法
算法蓝图
明确问题
明确目的
eg. 匹配到所有打车乘客 or 尽可能快地匹配到更多乘客
明确限制条件
eg. 市区乘客等待时间不能超过1分钟
明确评价标准
eg. 时间 or 成本 收益
建立模型
就是把现实问题转化成算法问题的过程,也是大量细节被抽象掉的过程
设计算法之前,一定要建立数学模型
模型迭代非常重要
算法选择
由达成目标水平的高低,时间复杂度决定
迭代
算法,硬件
建立模型
确定假设
确定对预测结果的精度要求,舍弃不重要的细节,模糊问题明确化、量化
验证模型
用常识验证;用历史数据验证
权衡可行性
要贴近现实,也要容易求解
算法选择
关系:模型与算法并非一一对应
eg. 背包问题
选择:质量与效率的权衡
eg. 投放在线广告的决定需要瞬间完成,用贪心算法;
eg. 规划保护野生动物,要尽可能找到最优解,用分支定界算法
进阶:算法工程师的更多考量
更加偏好数据敏感度低、限制条件少、对数据依赖小的算法
算法策略
迭代
迭代算法:通过循环重复某个固定操作,每一步以前一步的结果为出发点,逐步逼近答案的算法
迭代算法有效的条件:一,算法必须收敛,二,不动点必须唯一
迭代策略允许在找解的过程中有误差,而这个误差减小的速度很快,所以迭代算法的速度也很快
eg. 把芝加哥搜遍找车,很慢,这叫暴力算法
eg. 用迭代算法找车,第1步离车距离10公里,转第1次弯进入第2步迭代时距离变成1公里,再迭代一次变成100米,这个距离在迭代算法中叫“残差”
分治
分治算法:拆大为小的回溯算法;通过回溯,不断分解同样的问题,直到问题小到可以直接解决,然后再把小问题的解合并成原来问题解的算法策略
eg. 网球比赛总裁判层层分包裁判工作
回溯:嵌套循环调用自己的过程
分治算法有效的条件
能不能用:要确保问题可以分解成与原问题类似的子问题,且这些子问题之间相互独立
求解快不快
分治中的两个重要操作——分解和合并,不是免费的
eg. 碰撞检测:计算空间中100个运动的圆球哪些撞在了一起,要计算两两之间的距离,共计算4950次;把空间分成两部分独立检测,就降低到2450次。分割空间时找到适合的分割位置,需要额外的计算成本。合并时发现某些球被从中间割断,要判断有没有发生碰撞,还得额外计算,这是合并结果的成本。
如果分解问题&合并结果计算不复杂,分治策略能减小算法的复杂度
分治算法可以多CPU并行计算,而迭代算法要求每一步以前一步的结果为出发点,按步骤按顺序计算,因此不能多CPU并行计算
动态规划
解决思路:以终为始,以小建大
eg. 取糖果游戏:最后谁面对4颗糖,谁输
eg. 火箭垂直软着陆:最后位置必须离指定位置非常近,火箭与地面的角度必须非常接近90度,着陆的速度必须非常接近0
面对多步骤的决策问题时,某一步决策的最优,包含且依赖于对更小规模问题的最优策略,这就是最优子结构
eg. 取糖果游戏:最优策略应该是一开始拿两颗糖;但如果未来在面对更少糖果的时候,不遵守最优策略,那现在拿两颗糖也不会赢
动态规划的效率会受围度爆炸的影响。这时算法工程师不一定会精确求解所有的子问题,很可能只求解其中的一部分,而且是非精确求解,对另外的子问题的解,只进行一个估计
分支定界
组合优化
找到一个可行的解不难,但找到最优解,特别难
eg. 找到树上最大的苹果:剪掉苹果明显小的分枝,留下少量树枝再做比较
分支定界
eg. 找一个中学里最高的学生
分支:初中/高中
定界:初中部春游山洞1.8米高,无人需弯腰——“1.8米”就是初中部这个分支的上界
剪枝:若高中部有一个1.8米以上,即可淘汰整个初中部
当某个子搜索空间能获得的目标上届,比不上某个已知的可行方案,就直接把这个子空间淘汰
如何让分支定界法高效
取决于能多有效地剪枝;如果只分支,不剪枝,就和全部算一遍没有区别
“提前停止”策略:若已求出的临时最优解离真正最优解已很近,提前停止可大大节省时间
启发式
遇到特别复杂的组合优化问题是,如果找不到最优解,可以转而使用启发式算法,找到不错的可行解
启发式算法:要么符合人类直觉认识,要么符合自然规律
蒙特卡罗
适用:可能性太多,计算不了
蒙特卡罗:对问题中的随机事件进行取样,为有限个样本进行独立计算,最后把样本结果进行统计
非常依赖于参数的正确性,对揭示问题本质没有太大帮助
算法前沿
机器学习
机器学习算法是一系列让计算机自主学习的算法,最适合用在人类无法用明确规则进行解决的问题上
机器学习学到很多人类没教过、自己也不懂的事物细节
机器学习学到的是事物之间的复杂关系
学习策略:机器学习算法是怎么学习的
K邻近算法,基于记忆,最后表达出一堆历史数据
eg. 英美法系中的判例法
决策树模型,通过数据归纳,总结出条件判断,最后表达出一些复杂的条件判断
神经网络模型,模拟神经信号的传递,以及神经对外界不同信息反应强弱不同的过程,最后表达出一系列参数的数值
01 本质:到底什么才是算法?
1. 算法对明确性有极其严苛的要求
人做事可以接受一定程度的模糊,算法却对明确性有极其严苛的要求
同一个算法,相同的输入必然可以得到相同的输出(能够复现)
算法就是一套通过确定性保证解决问题的工具。
2. 模型化是算法优势的本质
模型化就是对不同的问题,用同样的方式来看待,用同一套算法来解决。
模型化最大的价值,就是赋予算法超乎寻常的问题迁移能力。
比如推荐相关商品和相关电影,都可以用“测距离”的算法
3. 算法没有好坏之分,背后都是设计者的思想
算法模型只是人思想的体现
算法不会一会好一会坏,只是在不同场景里,我们需要的价值偏好和设计思想不同
k临近算法在预测肿瘤良恶性方面好,但是放在筛选简历上就有性别歧视
02 复杂度:怎么判断算法的效率高不高?
1. 评价算法效率的两大难题
硬件依赖
求解同一个问题,50年前可能要算1个月,现在3秒就算出来了,能说现在的算法效率更高吗?50年前和现在,算法可能是一样的,速度提升是因为硬件提升了
"无穷大"难题
当算法的输入规模,趋近于无穷大的时候,算法解决问题所花的时间也趋近于无穷大——没有一个确定的结束时间,用绝对时间比较不可靠
2. 时间复杂度是度量算法效率最主要的工具
时间复杂度是算法中某些基本操作的总数量,随着算法输入的规模而增长的函数关系
算法比喻成盖金字塔,垒石头就是算法的“基本操作”,金字塔的高度相当于“输入规模”,而他们的图纸就是垒石块总量,跟盖金字塔高度之间的函数关系,这就是时间复杂度。
算法工程师的工作就是找到更好的“图纸”,找到效率更高、时间复杂度更低的算法。
3. 降低时间复杂度方法一:空间换时间
空间复杂度:是算法占据的空间资源,随着输入规模变大而增长的函数关系。
打个比方:图书馆建立索引卡方便找图书就是如此,虽然单独建立一个放索引卡的地方,会占用更多的空间,但是提高了时间效率
4. 降低时间复杂度方法二:分治思想
“分治”就是把一个复杂的1问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并
分治算法有回溯过程,平时说的“分治”没有分治算法有回溯过程,平时说的“分治”没有
03 什么样的算法是巧妙的算法?
1. 效用选择模型:近似现实且保持可解性
人们在做选择的时候,一般会选那个能给自己带来最大满足感的选项,即选择对自己效用最大的
现实中影响效用的因素很多,并且相互之间又有很复杂的关系,完全贴近现实算法就得不出解
“线性效用模型”——假设所有因素之间的关系,只是线性叠加,相互之间没有复杂的交互。这样,模型就变得可解了。
线性叠加:是几种不同原因的综合所产生的效果,等于这些不同原因单独产生效果的累加
2. 德州扑克:问题规模的减小
Libratus算法通过合并德州扑克中相同的状况,将需要处理的总可能性减少了数倍
减小规模算法,背后的思想都是通过舍弃了少量信息,把一个大到不能计算的问题减小到了计算机可以处理的规模
3. 探索与利用:迭代得到结果
"探索与利用"
探索:就是不断推荐各式各样的视频内容,看看我更容易观看什么
利用:就是在知道我对某类视频感兴趣的时候,更多地推荐这类视频给我看
算法经常采用迭代的方法逐步逼近问题答案。如何保证收敛和收敛效率体现了算法设计时的巧妙。
04 计算机能不能避免人的错误?
1. 算法不能对问题负责
算法只是执行人给它的指令,而这个操作究竟是解决什么问题,算法理解不了
算法只是工具,就像手里的锤子,可以钉钉子,它只负责钉钉子,并不能理解钉钉子是要解决什么问题
2. 算法不能对数据负责
算法只管“算”,不在乎“输入”和“输出”
数据垃圾,再好的算法也是白搭。“Garbage in, garbage out”
3. 算法不能对解释负责
算法只能提供解决方案,不能提供解释
算法提供的诊断和治疗意见与医生总是一致,那算法没有意义
算法提供的诊断和治疗意见与医生不一致,但又不能像医生一样给出解释,所以重大问题上不敢贸然相信算法
放弃一定准确性,选择更容易被解释和接受的算法
如果有两个算法摆在你面前:第一个准确度高但复杂、难理解;第二个,准确度低一些,但很容易理解和接受。你会选择哪一种呢?
05 算法蓝图:怎么设计一个算法
1. 明确问题
首先——明确目的
对目的的描述可以有很多种,比如“匹配到所有的打车乘客”和“尽可能快地匹配到更多乘客”,或者“让车辆利用率达到最大”,这都是不一样的,究竟要选哪种目的需要在一开始就确立下来。
其次——明确限制条件
比如,“每个乘客等待时间不能超过10分钟”,“市区乘客不能超过1分钟”,等等,要把量化的指标确立下来
能不能准确、快速判断限制条件的合理性,是非常考验一位算法工程师水平的。
最后——明确评价标准
标准的维度可以有不同的设定,比如时间、成本、收益等,但不可以没有。没有标准就无法判断问题是不是最终被解决了。
2. 建立模型
需要一个数学模型来与计算机建立“桥梁”
建立模型就是把现实问题转化成算法问题的过程,用另一套语言来重新描述问题
3. 算法选择
同样的问题,不同算法效率很不一样
大多时候并不存在最优解,也没有唯一解
4. 迭代
算法并不能直接解决问题,模型也只是对现实问题的近似和抽象,这就需要算法工程师不断迭代
在完成算法设计并且实现之后,不断回到原始问题,去评价算法。
迭代,也是硬件的要求
有时候迭代会改变整个算法设计的思路,会比算法设计本身还要重要
06 建立模型:如何把现实映射进计算机?
1 . 确定假设(变量)
先要搞清楚,需要得到一个什么精度的预测结果。
确定假设,其实是一步步确立重要变量、核心关系的过程
2 . 验证模型
验证模型没有固定的方法,也不是一成不变的我们得从多角度来论证,有时候还需要点儿奇思妙想
3 . 权衡:要贴近现实,也要容易求解
一个模型是不是最优选择,不仅要看模型是不是靠谱,还要看是否能实现。
对准确性要求高,通常就意味着变量多、逻辑复杂、数据不可得等困难
没有统一的标准说怎样才是最好。但它有一个底线,那就是模型必须能求得有效解。
07 算法选择:选择算法最重要的考量是什么?
1. 关系:模型与算法并非一一对应
背包问题:背包容量有限,选择什么装进去是个问题
比如说,你要搬家,雇了一辆车,但能搬的东西有限,你要决定把哪些值钱的家当带走,哪些扔掉;你要投放广告,预算有限,你要决定哪些渠道该投放,哪些放弃。这些看起来不相关的问题,都可以建模的时候被“翻译”成背包问题。
同一个模型对应的算法很多
暴力算法:把所有宝物放进背包所有的组合情况,全都计算一遍。选出价值最高的,又满足背包容量的组合
分支定界法:选定第一件宝物,考虑“带还是不带走它”。无论这个决定怎么做,我们都做了一次分情况讨论。原来要从n个宝物里做选择的问题,就被转化成要从n-1个宝物里做选择。问题规模就变小了
基因算法:模仿了大自然中遗传变异的过程,把不同的宝物组合看成不同的DNA序列,让它们根据一定的规律相互交叉、繁衍,最终选出适者生存的那一个
建模不等于就完成了算法选择,最终能不能把问题有效解决,找到合适的算法仍然至关重要。
2. 选择:质量与效率 的权衡
没有免费的午餐”定理在很多算法问题当中,没有哪个算法是绝对最好的。要找到最适合的算法,一定要权衡算法在不同场景中的利弊。
时间复杂度和解决问题的质量水平之中的权衡,是算法选择的重中之重。
在具体问题中,权衡算法并没有明确的标准
贪心算法在投放广告的场景中很适用,但在国家环保部门规划保护野生动物的时候就不适用
直接计算给每个用户投广告的投资回报比,然后从高到低排序,按次序推广告,一直推到广告费花光。这种算法得不到最优解,但它的时间复杂度却非常低。
3. 进阶:算法工程师的更多考量
数据问题
1️⃣ 数据不准确
2️⃣ 数据不够
数据重新定义了我们对模型的思考方式,这也是今天算法工程师非常关注的一个维度
08 迭代:怎样一步步接近答案?
1. 一步步重复操作,接近答案
迭代算法的每一步怎么进行都是明确的,而且对能不能得到最终解决问题的答案,也有着确切的判断。
2. 确保迭代策略有效的条件
算法可以收敛
能趋近于一个结果
不动点
每次迭代计算不会进行改变的点
进行迭代算法前,需要对不动点的数量进行一个分析。如果我们能确认不动点只有一个,那么迭代算法就总能收敛到想要的结果。如果多于一个,我们就不能保证得到想要的答案
3. 为什么迭代算法更快
迭代中“残差”不断减小
在数理统计中是指实际观察值与估计值(拟合值)之间的差
09 分治:怎样拆解问题,逐个击破?
4. 降低时间复杂度方法二:分治思想4. 降低时间复杂度方法二:分治思想
1. 拆大为小的回溯算法
分治算法有回溯过程,平时说的“分治”没有
回溯:程序把问题分解成两个小一点的子问题的时候,因为子问题和原问题的结构相同,程序会调用它自己。自己循环调用自己,这就形成一个嵌套循环的结构
分治算法是通过回溯,不断分解同样的问题,直到问题小到可以直接解决,然后再把小问题的解,合并成原来问题解的算法策略。
2. 保证分治算法有效的条件
1️⃣ 能不能拆解
要确保问题可以分解成和原问题类似的子问题,并且这些子问题之间还相互独立
2️⃣ 快不快
分解和合并,不是免费的。如果它们自身就要耗费很多次计算,那很可能分治策略提升不了效率,也不算是奏效了。
3. 分治算法能更快的的特殊之处
分治算法可以利用“硬件”,进行“并行运算”
即多个CPU同时运行计算;迭代算法不行
10 动态规划:怎样从小问题出发,逐级解决大问题?
1. 问题的解决思路:以终为始,以小建大
先得到小问题的解,再构建出大问题的解
从后往前解决问题。每一步都施加正确的推进力
2. 动态规划算法的结构:最优子结构
动态规划算法:就是在多步骤的决策优化问题满足最优子结构的时候,用以终为始、以小建大的思想解决问题的算法策略。
最优子结构:在面对一个多步骤的决策问题时,某一步决策的最优,包含且依赖于对更小规模问题的最优策略
不满足最优子结构就没法用动态规划
3. 动态规划策略有效的条件
动态规划的效率会受“维度爆炸”的影响
11 分支定界:怎样决定谁是“被淘汰者”?
分支界定法:选定第一件宝物,考虑“带还是不带走它”。无论这个决定怎么做,我们都做了一次分情况讨论。原来要从n个宝物里做选择的问题,就被转化成要从n-1个宝物里做选择。问题规模就变小了分支界定法:选定第一件宝物,考虑“带还是不带走它”。无论这个决定怎么做,我们都做了一次分情况讨论。原来要从n个宝物里做选择的问题,就被转化成要从n-1个宝物里做选择。问题规模就变小了
1. 组合优化:谁是最优的答案
组合:每个决策都有几种可能性,比如某个地方“放”还是“不放”充电站,这就是两种可能性。当决策变量的个数多了,它们之间就产生了许多决策组合
优化:最大化或者最小化一个目标
组合优化问题的特点是,找到一个可行的解不难,但找到最优解,特别难
2. 分支定界:分支、定界、剪枝
分支:把问题结的不同可能性,分开去考虑
分治需要对问题的“输入”进行分解,而分支需要对问题“解的搜索空间”进行分解
定界:就是估计某个子搜索空间中最优解的上界的过程(先确定一个“临时最优解”作为标准)
剪枝:是当某个子搜索空间能获得的目标上界,比不上某个已知的可行方案,就直接把这个子空间淘汰的过程。
3. 如何让分支界定更有效
有效的剪枝:为了进一步提升分支定界法的效率,我们可以使用“提前停止”的策略。
12 启发式:放弃最优解之后,怎么办?
1. 启发式算法:基于人类直觉的算法
启发式算法是人们通过对问题的理解,以某一套规则制定出来的一类算法
通常放弃了最优解,但却能得到还不错的可行解
启发式算法是针对特定问题设计出来的,需要具体问题具体分析
2. 元启发式算法:基于对自然认识的算法
通过人们对自然或者人类解决问题时通用逻辑的观察和模拟,总结出来的一系列通用启发式算法。
3. 什么时候采用启发式算法
找不到最优解,“退而求其次”时才用
两个缺点
1️⃣ 对最优解没有保证
2️⃣ 好用 不好用,是一个试错的过程
13 蒙特卡罗:丢失确定性之后,怎么办?
1. 蒙特卡罗方法:对现实世界进行随机模拟
对问题中的随机事件进行取样,为有限个样本进行独立计算,最后把样本结果进行统计的策略
每个样本都代表着一次对现实的模拟。用有限次的模拟,来替代了所有平行宇宙的可能性。
2. 蒙特卡罗适用的问题
蒙特卡罗法是可能性太多,我们计算不了的时候用的。如果需要考虑的可能性很少,那直接计算就可以了
3. 使用蒙特卡罗的注意事项
1️⃣蒙特卡罗方法是对问题的估算,不是精确的计算
2️⃣蒙特卡罗方法的成功,非常依赖模型和参数的正确
3️⃣蒙特卡罗方法,会减小我们发现问题本质的机会
14 机器学习:机器到底在学什么?
1. 人不会教,就让计算机自己学
机器学习算法是一系列让计算机自主学习的算法。它们最适合用在人类没法用明确规则进行解决的问题上。
2. 机器学习做到了什么
机器学习学到了很多人类没教过、自己也不懂的事物细节
3. 机器学习到底学的是什么
事物与事物之间的复杂关系,尤其是关系中的某种模式特征
15 学习策略:机器学习如何获得知识?
1. 同样的能力可以基于不同的知识
知识是一种我们对信息以及事物之间关系的理解
能力是把知识运用到实际中的本领
有知识不代表有能力,但没有知识就没能力
2. 得到知识的方法:不同的学习模型
k邻近算法:通过与历史数据比对来判断
决策树模型:通过数据归纳,总结出条件判断;把每个特征和要学习的对象进行相关性的比较,相关性高的放在条件判断里,低的扔掉。
神经网络模型:模拟神经信号的传递,以及神经对外界不同信息反应强弱不同的过程;算法中并没有真正的神经,也没有神经反应的强弱。取而代之的是大量的参数。参数越接近于零,说明它所代表的特征越不重要
3. 怎么把获得的知识传给人类
难点
1️⃣ 机器学习对知识的表达方式和人类不一样
2️⃣ 人的记忆力和算力有限
目前办法
1️⃣ 从源头就用简单些的算法或模型
2️⃣ 对算法中重要变量的影响进行解释
理解不了最终的结果,我们可以理解对结果影响最大的变量
16 算法思维:怎么和算法工程师打交道?
1️⃣ 很多人关注的是眼下问题的特定结果,而算法工程师更在意通用方案,解决更多更广泛的问题。
2️⃣ 学会拿数据和算法工程师沟通。数据越多,质量越高,算法工程师对你要解决问题的兴趣也越高。
3️⃣ 和算法工程师最好的互动方式,就是一起在抽象模型和现实场景当中来回转换