Fast way to do multi url parsing

Since opening URL sequentially, especially hundreds of URL is very slow, it is a perfect case to implement parallel computing. There are two biggest components that determine the speed of this task: “opening URL” and “read the context from the website”. So, I will briefly talk about the fast way to do the multi-URL parsing. First, we should try multithreading/multiprocessing packages. Currently, the three popular ones are multiprocessing;concurrent.futures and threading. Those packages could help us to open multi url at the same time, which could increase the speed. More importantly, after using multithread processing, and if you try to open hundreds of … Continue reading Fast way to do multi url parsing

My daily working log

I will list some packages or knowledge during my internship, just for reference and casual discussion. Python Time Scheduler Scheduler(https://pypi.python.org/pypi/schedule) Perfectly solving the problem of auto email sending Auto Email Sending Google Cloud (https://cloud.google.com/) DAG Structure Airflow(http://nerds.airbnb.com/airflow/) Word Comparision FuzzyWuzzy (https://github.com/seatgeek/fuzzywuzzy) Difflib (https://docs.python.org/2/library/difflib.html) Difflib provides three types of comparison method, regarding the speed. Graphical Viewer snakeviz (https://jiffyclub.github.io/snakeviz/) I likt this, it is based on CPython and very powerful on jupyter/?Ipython. Multithreading and Parallel Computing threading (https://docs.python.org/3/library/threading.html) concurrent.future (https://docs.python.org/3/library/concurrent.futures.html) multiprocessing () multiprocessing.Pool cannot return value during the process multiprocessing.Process can use pipe() or queue() to make process communicate with each other multiprocessing.ThreadPool can … Continue reading My daily working log

What is the difference between L1 and L2 regularization?

From Quora https://www.quora.com/What-is-the-difference-between-L1-and-L2-regularization Justin Solomon has a great answer on the difference between L1 and L2 norms and the implications for regularization. ℓ1 vs ℓ2 for signal estimation: Here is what a signal that is sparse or approximately sparse i.e. that belongs to the ell-1 ball looks like. It becomes extremely unlikely that an ℓ2 penalty can recover a sparse signal since very few solutions of such a cost function are truly sparse. ℓ1 penalties on the other hand are great for recovering truly sparse signals, as they are computationally tractable but still capable of recovering the exact sparse solution. ℓ2 … Continue reading What is the difference between L1 and L2 regularization?

数据分析驱动用户增长

作者:邹昕 链接:https://zhuanlan.zhihu.com/p/21435486 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 非常荣幸知乎邀请我做了一次关于如何通过数据分析驱动用户增长的直播, 计划是先讲大概半个小时左右,然后有半个小时的时间大家自由提问。 后来实际情况是先花十几分钟时间回答了几个问题,然后讲了半个小时多点,再花了大概一个小时回答后续的问题。 由于是第一次做直播,对系统也不是很熟悉,有很多可以提高的地方。很多问题很有意思,所以花了点时间把内容整理成文字,希望对更多的人有帮助。 由于个人水平有限,同时需要兼具到不同的需求,这次直播的内容适合作为入门读物。 自我介绍先简单介绍一下我自己。我是清华生物系本科和硕士毕业,之后去北卡大学念药物药理学的博士,中间发现自己不适合走生物科研的路,所以在博士开始两年多的时候决定转硕士走人。很幸运的是当时的导师也很理解和支持我,拿到硕士之后我重新申请了北卡州立大学的数据分析的项目。毕业之后在 Discover 公司做信用卡风险模型和数据分析,大概工作了两年多。Discover 在国内有一个数据分析部门,发展得挺快的,现在应该是一两百人的样子,部门在上海,国内的翻译叫高沃,意思是高山沃土,有点奇怪的名字,听起来像是做农业啊化肥啊什么的。(后来有前同事跟我说,是先有高沃这个名字,然后就引申了高山沃土这个词)。 最后在今年年初的时候跳槽到 Facebook 做数据科学家,我们组是做用户增长的,我负责的一块主要是跟用户好友关系、好友推荐系统相关的数据分析。今天的分享就是关于通常情况下互联网产品是如何用数据分析来驱动用户增长的。 需要说明的一点,由于 Facebook 有严格的保密要求,所以这次直播内容肯定是不会透露属于内部消息的数据、产品或者策略之类的,我们公司对这个要求是非常的严格。所以直播里提到的例子如果涉及到 Facebook 的话,都会是已经公开的信息(一般是 Facebook F8 大会提到过的或者 Engineer blog 上的内容)。 行业特点 说到互联网产品的用户增长,可能大家都有所耳闻。与传统行业相比,互联网相关的产品有几个不一样的特点。一是由于网络效应,由于互联网相关产品更容易扩展,更有可能出现爆炸性增长的局面。二是互联网行业更容易出现赢者通吃的局面,比如优酷和土豆的合并,携程和去哪的合并,立马形成行业垄断。三是在行业发展前期一旦有一个好的产品领先,后来者就很难翻盘了,所以互联网行业会出现前期大量烧钱抢占市场和用户的局面,比如 Uber 是一个特别典型的例子。 Retention / 用户留存 对用户增长来说,什么是最重要的呢?有人说是用户最重要,有人说是 Acquisition 也就是新用户获取最重要。对很多互联网公司来说,不管是热门 Startup 还是已经比较成型的公司,首先需要解决的问题的是 retention,也就是用户留存。这也是为什么十几年前,大家通常用的指标都是注册用户,而Facebook 创始人 Mark Zuckerberg 从一开始就给公司定了明确的目标,注册用户并不是最重要的,最重要的应该是活跃用户。 用户留存曲线 好的产品和不好的产品用户留存是什么样子的呢?有这里就需要提到一个概念用户留存曲线。如下图所示,横轴是从注册开始到现在的天数,纵轴是活跃用户的比例。这里用的例子是月活用户,也就是说如果过去一个月之内你用过这个产品,那么你就算是一个 active user。很显然,注册开始第一天,大家都是月活,第二天第三天直到30天都是如此,从第31天开始,有一部分人不是月活了,因为他们只在第一天用了,之后就再也没用过,以此类推第32天33天等等。一个好的产品,应该是像蓝色曲线这样,随着时间的推移会有下降,但是到一定程度之后会趋于跟 x 轴平行。如果你看到一条绿线这样的用户留存曲线,那就你就需要好好研究一下你的产品了,因为这意味着随着时间的推移,所有注册用户都会放弃你的产品。那么即使你把全世界的人都抓来注册了,终究月活用户数也会变成0。 用户留存 vs. 新产品 推出新产品的时候,用户留存曲线是非常重要的,以确保有一个足够好的产品,接下来才是把这个产品推向更多用户的时候,很多互联网公司比如 Airbnb 都有类似的策略。当然不同的产品,关注的指标很有可能是不一样的。比如说微信,假如你看月活的话,那可能意义就不是很大了。一个月用一次微信的用户,说有不了什么问题,更应该关注的可能是日活,或者发了多少条信息这种。那么对于 Airbnb 来说,月活则是一个比较适用的指标,其它比如每个月有多少房间预订之类,也是应该关注的指标。 神奇时刻 — magic moment / Ahhhaa moment 假设现在你有一个很好的产品,用户注册之后过一了段时间也还是有很多人留下来继续使用。那么接下来怎么做用户增长? 很多社交网络产品都提到一个概念叫 magic moment,直译过来的话就是神奇时刻。什么算 magic moment 呢?比如对于 Facebook 来说,你注册之后,在上面看到你现实生活中认识的好友,看到他们的照片,状态等等。这个时候对新用户来说,心里想的是啊!原来 Facebook 是干这个用的。比如对于知乎来说,可能是在答了一个题之后,看到小红点显示有人点赞,或者是感谢,或者是关注等等。同样,对于LinkedIn,Twitter,微信,微博也是类似,新用户或者是找到他们想要联系的好友,或者是找到他们想要粉的人,这一时刻让用户有继续使用下去的动力。 例子 — 用户留存率 vs. 好友数 对于很多社交网络产品,比如说 LinkedIn 来说,一个很简单便是很有效的分析方法,就是看用户留存率跟好友数的关系。当你的好友数低于某一个值的时候,用户留存率会非常的低。当好友数量达到一定数量的时候,再增加好友数对留存率的影响就很小了。那么确定下来这个值之后,工程师们要做的就是以这个为目标进行各种产品改进、优化、新产品开发等等。有人可能会问了,这里面有个很显然的问题,就是你只能说明这是相关性,而不是因果性。但是最终解决办法其实很简单,不管 Facebook 也好,LinkedIn 也好,微信也好,如果你没有好友的话,肯定是没有人会继续用的。所以这里面肯定有因果性在里面。同时肯定也有相关性,很大程度上二者肯定是相互影响的,通常来说好友越多,更有使用产品的动力。产品使用的更好,好友也更多。 A/B 测试 上面一段提到在设定某一个目标之后,工程师们接下来就要通过各种产品改进、优化、新产品开发等,互联网公司基本上都是通过 A/B 测试来确定是否发布产品,是公司产品开发非常重要的一环。在湾区这边有一个 meetup 小组就是专门讲 A/B 测试的,像 Uber, LinkedIn, Netflix 等等都在这个小组介绍过各个公司是怎么做 … Continue reading 数据分析驱动用户增长

Why is reproducible research such important in Biology?

Recently, I studied and listened to the course “reproducible research” on Coursera under the data science specialization. At the very beginning, I am little confused about the importance of reproducible research, since generally for us ( financial engineer), it seems unnecessary to reproduce other’s results. The version control, Rpub, cacher package, usage of knir and sweave, all of those issues seems meaningless for financial data analysis. (Honestly, it is. But learning some knowledge is not a bad thing.) However, today, just read the news about Chunyu Han, say, Zhouzi Fang arises his doubt on the astounding paper Han has just … Continue reading Why is reproducible research such important in Biology?

Using Sweave and knitr

Overview R includes a powerful and flexible system (Sweave) for creating dynamic reports and reproducible research using LaTeX. Sweave enables the embedding of R code within LaTeX documents to generate a PDF file that includes narrative and analysis, graphics, code, and the results of computations. knitr is an R package that adds many new capabilities to Sweave and is also fully supported by RStudio. To use Sweave and knitr to create PDF reports, you will need to have LaTeX installed on your system. LaTeX can be installed following the directions on the LaTeX project page.   Working with Sweave and … Continue reading Using Sweave and knitr