1 概述
Logistic Regression是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。比如某用户够买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性。注意:这里的可能性并非数学上的概率,不可以当作概率值来用,但是可能同概率作映射。
Ideas worth spreading and sharing...
Logistic Regression是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。比如某用户够买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性。注意:这里的可能性并非数学上的概率,不可以当作概率值来用,但是可能同概率作映射。
算是完完整整读的第一本人物传记了,一直以来比较不屑于读人物传记,主要还是觉得传记之类无非鸡汤而已,总是在看别人的成功故事。“看了那么多成功学的书,依旧得不到成功的一生”,哈哈。
Tensorflow的程序一般都分为2个阶段,(1)定义计算图中的所有计算;(2)执行计算;
在tf程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph()可以获取当前默认的计算图;
TensorFlow中集成有多个initializer,这些initializer对tensorflow中变量的初始化提供了方便,下面将对这些initializer进行介绍:
meshgrid()用于从数组a和b产生网格,生成的网格矩阵A和B大小相同,
机器学习或者深度学习中常常会遇到数据的类别不平衡(class imbalance),也叫数据偏斜(class skew)。以常见的二分类问题为例,我们希望预测病人是否得了某种罕见疾病。但在历史数据中,阳性的比例可能很低(如百分之0.1)。在这种情况下,学习出好的分类器是很难的,而且在这种情况下得到结论往往也是很具迷惑性的。再比如在CTR预估中,WAP上的CTR通常在千分之几,APP上CTR也就百分之一二,意味着PV远远要大于Click。
这篇文章可以看作是对MultiDex实践的一篇补充,更进一步的背景是对美团MultiDex实现的一些具体细节的一种实现方式。
同美团团队一样,在实现MultiDex时,同样遇到一个问题,那就是:部分在classes2.dex中的二级界面,首次启动时,如果classes2.dex尚未加载完,而这时用户操作了该二级界面,Crash!!是必然的!美团的那篇文章也讨论了这个问题,解决方法就是在操作二级界面Activity时,首先判断classes2.dex是否加载完毕,如果加载完毕,则直接启动该Activity,如果尚未加载完毕,则引入一个WaitActivity,在WaitActivity中阻塞等待classes2.dex加载完成,等dex2加载完毕之后再启动该二级界面Activity。
这么做肯定是没有问题的,但有一点就是,如果二级界面太多,每个调用的地方都去判断dex2是否加载完未免太麻烦,好在Framework告诉了我们答案!我们知道Activity是由ActivityThread通过Instrumentation来启动的,再进一步跟进去,我们发现ActivityThread中有一个mInstrumentation对象,该对象即是Instrumentation,进一步查看Instrumentation源码,发现其与Activity启动相关的方法有以下几个:execStartActivity, newActivity等等,于是,我们就可以在这里面做些手脚!怎么做?修改Instrumentation或者ActivityThread也未免显得太过幼稚了!那么How?
S.O.L.I.D原则是面向对象设计和编程中几个重要的编码原则首字母的缩写;
SRP:The Single Responsibility Principle,单一职责原则
OCP:The Open Closed Principle,开放封闭原则
LSP:The Liskov Substitution Principle,里氏替换原则
ISP:The Interface Segregation Principle,接口分离原则
DIP:The Dependency Inversion Principle,依赖倒置原则
下面将详细讲解每种原则所代表的意义。
Android应用65535方法数的限制一直为广大开发者所诟病,在应用功能越来越丰富、各种开源库越来越多的今天,65k方法数瓶颈俨然已是一大绊脚石。至于怎么解决这个问题,先来看看google官方给出的方案:
将应用的非核心功能做成单独的App,实现该App和插件App相关的接口即可,实现以及体验如何,大家不妨来体验下Dolphin浏览器(这里做个小广告)。