Thursday, October 31, 2019

情感牌

Erramalli Ramesh 44岁

其实我也没搞明白。想一想,估计1. 媒体部长渲染 2. 他伤了85%的住hdb的居民(1.5w 买个condo就这样的待遇+他是外来移民)...第二项我感觉算是政治错误。


我感觉伤和大众渲染是有联系的,虽然我也听不出有什么问题
炫富,嚣张,侮辱这种字眼
还有老保安
想想各种大型示威都是这么被鼓动起来的,情感牌这招挺厉害

情感痛点,一触即发。

新 - 外来移民,住租屋,穷
香 - 失去民主,中傀儡

Tuesday, October 29, 2019

verification tip

1. summary function
isnull().sum()
not allowing any nan that leaks information

2. boundary checking

3. unit test test and test

Productivity Tip

1. Have a Cache.py and Info_Cache.py to record repeated used code and info;
2. Read briefly for other ppl implementation, come back and read again after your implementation (see important things and get insightful things quicker);
3. Set shortcut for repeated access folder and file (e.g., item 1 file)
4. have a logs of what you have done (for those be mindful or to undo later)
5. use bookmark in pycharm is possible if you are changing multiple files
6. change portion by portion - test each portion before moving on to the next one
7. familiar with the software engineering pattern, use them if possible
   - with distributedstrategy: (what is this pattern?)
8. no wechat, etc. when you are doing big refactoring, easily loss track


[easier step each time - it lead you to the next step]
change run_cv_supervised
-> discover [I just need to have a method to split out X_train,Y_train,X_test,y_test]
Delete run_cv_supervised back and change run_cv_normal
->discover [I can separate the cross validation recording out to make it simpler]

endogenous vs exogenous and seq2seq done

https://machinelearningmastery.com/taxonomy-of-time-series-forecasting-problems/

endogenous - output depends on it, and it depends on others (including itself) (e.g., other product sales)
vs
exogenous - only output depends on it (e.g. school holiday)


昨天终于把seq2seq搭起来,
还把另一个stacked lstm 搭起来,
浓厚的成就感。

进过了三天的全时间投入,现在一看到lstm的code就大概知道在干嘛的。
和前几年,不停地去看同一个code-based,一下忘了,真不能同日而雨。

全身心投入,可以解决很多问题,学会很多东西。

Sunday, October 27, 2019

Seq2Seq实践感言

纸上看的话是不会注意到这些的。

1. encoder_inputs = Input(shape=(None, feature_cnt)
设置None是为了inference的时候可以用1, training的时候可以用30

2. training 和testing 的差别除了item 1 还有 encoder 和decoder是分开来的,decoder是一个一个lstm cell run

3. static model - specify model的时候是没有input parameters的,specify 完后就能把input/output 的shape完整知道, 当然有些是None,这是唯一的flexibility (runtime decide)

4. [(None, 256),(None, 256),(None, 256)] 这种shape确实是一个list里三个numpy array



网球实践

今天打网球 有点心领神会 当发现它有点类似乒乓球时。
另,jupyter notebook,以前看啊看的,现在一直沉浸其中,有了很大的进步。
另,以前看了很多consultant的东西,现在时间了一下,忽然知道了重点。

知识是在时间中升华,而不是在纸上。
纸上,你可以各种知识,但是你不知道关键,而且容易忘记。
实践,你知道关键,不去学说有的,学的都是精华会用上的。

实践是个好东西。

Saturday, October 26, 2019

seq2seq

今天coding方面了解了seq2seq, 越来是这么回事。
感觉keras了解起来容易多了。
arima-garch越来也是sequential进行的两项活动,arima选了最佳p,q 给garch用。

今天到公司去,认识了以为同事,发现越来是is 前系主任的老婆,神奇。

明天就是见证着两个method的结果了。

后面想要对XAI 和CV两个方面都了解下。

Wednesday, October 23, 2019

framework

今天把剩下的data问题解决了,检查了下avg 3mths calculation, 然后给column name标注下
model 的花,把by category弄了起来,然后support 多个model实验,还有by product 的结果。

这样下来,明天
- arima-garch (for high volume)
- lstm autoencoder (for low volume)
看看效果如何

慢慢慢

最近deadline比较紧
发现如果脑子里满是deadline紧绷
效果不如平常工作中那种松紧。

大可以忘了deadline,享受于工作中。
实际想想,deadline也是自己给自己的枷锁。
学习Vikesh。
这样有利于自己,有利于产出,有利于个人良好心理。


Tuesday, October 22, 2019

framework for experimentation

scoring record (individual and overall)
visualization
feature extraction
driver
util
model

搞一天,主要把driver 和model 分开来了
检查一下还是有data leak, 和一些date 的片段木有handle
于是修正了

今天就搞了这些。
明天来搞剩下的

refactor 感言
一块一块弄

jupyter notebook感言
也是一块一块弄

不是全部一起弄
弄之前要backup来比对

framework上以后也可以用它来做别的用途,还是可以的。

Monday, October 21, 2019

LSTM multivariate input and multistep output

记录一下今天所学/复习,LSTM是个相当有用的东西。

1. multivariate input
multivariate simply set n_features, and size array accordingly

2. multistep output
2.1. for normal multistep
model = Sequential()
model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_steps_in, n_features)))
model.add(LSTM(100, activation='relu'))
model.add(Dense(n_steps_out)) #use a Dense layer with n output
[output with an array of size n_steps_out]

2.2. for encoder/decoder multistep
model = Sequential()
model.add(LSTM(100, activation='relu', input_shape=(n_steps_in, n_features)))
model.add(RepeatVector(n_steps_out)) # repeat n_features output as input to the following
model.add(LSTM(100, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(1)))
model.compile(optimizer='adam', loss='mse')
[has timedistributed output each with size 1]

3. side note
3.1. for cnn/lstm - time distributed cnn before pass in to lstm
(sample, subsequence, steps, features)
model = Sequential()
model.add(TimeDistributed(Conv1D(64, 1, activation='relu'), input_shape=
(None, n_steps, n_features)))
model.add(TimeDistributed(MaxPooling1D()))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(50, activation='relu'))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
3.2. for convlstm
(sample, steps, row, columns, features)
model = Sequential()
model.add(ConvLSTM2D(64, (1,2), activation='relu', input_shape=(n_steps, 1,n_seq, n_features)))
model.add(Flatten())
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
we have 1 row here as it is easy to interpret time series as 1 dimension

Sunday, October 20, 2019

忙碌的星期天

发现我们的工作性质是,不忙的时候挺多时间,忙起来的时候没日没夜,然后到各种地方去。有点像做研究的时候。

最近就想把大方向弄完
1. arima, lstm, ensemble
2. 更多feature
3. 什么样的model适合什么样的场景。
4. 开始做slides,和弄results。

周一
把 models 弄好

周二
把 features 弄好

周三
弄slides

周四
继续弄

GDP per capita

当人民素质越高,能创造出的GDP也有可能提高。
如果此时告诉大家,你们做什么工作都一样;按自己兴趣去做。
然后建筑业,services, 成本都会提高。
于是这也带动了GDP。

所以人的素质提高是一个关键-这是现在的感觉,虽然对经济模式没有完全的懂。

班门弄斧 - 并不一定是坏事

班门弄斧是华人的成语,不是阿三的。
他们在班门前,会评价班门用斧头的方式,然后很情绪化的说明怎么用斧头自己真诚的觉得比较好,然后在前面杂耍一下。
旁人看着觉得这杂耍的很有自信,不明觉历,于是乎相信了杂耍,而不是班门。
杂耍的人甚至可以直接用班门的东西 来描绘自己的结果,因为看的人並沒有看到砍树的过程。
这个套路,很厉害。

其实,如果某人要和班门竞争,这个套路是最优的。

那班门应该怎么做?
- 把杂耍,情绪的本质说清楚,因为班门并不善于杂耍,也不善于使用情绪,只懂得用事实说话。
- 用结果说话 - 因为班门善于制造的是结果 - 然后比较结果。


现在看的人就是line of business。
其实班门学会杂耍很重要。
追上的杂耍可以忽悠一群人。
不需要懂得太深,甚至不知道的东西都可以杂耍 (或者浅层的深入+vivid+带有看似启发性的描绘)。

无限期delay的突破

有些东西无限期delay 没什么印象。
有些东西 却不是。
比如学习英文, 比如algorithm, 比如XAI+CV,没有影响只是表象。

需要给他们调个位置,安排来前面。

整理东西什么的,不整理,到时没什么影响。


Moving forward

Melbourne - Diversity

1. 看到了来自非洲(somalia, kenya, sudan), 欧洲(macedonia, UK, greece),亚洲,的人们;
2. 澳洲人比较不academy focus, 比较experience focus, also interested in DIY (一方面那里人工贵);

Friday, October 18, 2019

真实的他 - 阿三的优势

他的behavior 出乎我意料之外,记一下,有些地方值得学习:
1. 骨子里就是marketing,面不改色,和司机/stackholder 交谈,依旧侃侃而谈
2. 还没做出来 - 但是对于做的东西充满了emotion, the data is amazing, the data is fantastic...然后开始怀疑我给的public data...这在中国人是不会发生的。阿三是emotion before factual, 中国人相反
3. 做出来的东西,就要一个人一个人去说。说的时候声色动人。this is really an amazing discovery...blah blah blah...
4. 感觉他没有准备,其实他是有准备的。阿三特别注重presentation,然后显得没有准备直接上去的样子。
5. 虽然知道自己不行,但是并没有表现出来,只是偶尔在我的面前显露一下。
6. Important - 在business user 或者不懂技术的c level 面前,他能吹的比我好。这就是为什么很多高层是阿三的其中一个原因。所以要锻炼的是,怎么对business user 描述我们做的东西。Deborah 做的就很好。可以拿她的一些段子记下来。

对于business user, 不是用技术字眼忽悠就好,也要让他们听的懂,感觉有所领悟。要想一下和马云鸡汤一样的段子。

Wednesday, October 16, 2019

如果我是他

如果我是他时,我希望有人理解:

1. Soothing - It's ok for not performing this time, and I totally understand that it takes time to grow the skill
2. Fact - But you need to be aware that the project has limited time, no one will hope that their member cannot deliver.
3. Call for Action - My advice is that, you should focus on what you can do best during project delivery period, and focus on learning during rest period.

站在同事立场

以前+现在的我
 - 假装没事,让时间冲淡一切
但是过去的经验是,这会留下一个pivoting, 除非你未来performs better (i.e., 达到我想要的), 不然这很难能冲淡一起,而且可能会越抹越黑。

但是我希望他
1. 歉意 - Sorry that I could not deliver anything for this time;
2. 说明 - I have already tried my best to get my things done at the time;
3. 达到我想要的 - From now onwards, I hope to get your advice on how to get things done better and how to contribute to our overall results better.

当我是他时,估计会看不清,还不如在我看的清楚时,先记录一下,给自己一个借鉴。

Tuesday, October 15, 2019

Boss

有个同事 和我做一样的东西 然后没结果
又不愿意做另一样东西 - feature extraction

于是老板让他
1. 做另一个东西,然后称之为 model
2. 让我run sprint review

这个恰好解决了我两大压力点。

这里主要强调的是出力点。

这和LY有异曲同工之妙。不起眼,尤其是item 2,但是正中下怀,而且是我没想到的。
还有一个地方,就是不哆嗦,言简有力。
还有就是时机,在1-1之后。


Sunday, October 13, 2019

阴阳思考

做每一件事情,不能因为只想得到利
不做每一件事情,不能因为只想到弊

少一边都是不完整的
这个世界就是阴和阳
两边都要去了解,拿捏,最后利用。

being indirect to be direct

一个心理医生说,如果你直击心理问题关键,不会得到答案
如果你只是passive听,反而是最快的到心理问题的关键。

这是个妙药。

Saturday, October 12, 2019

crowdsourcing solution

1. minimal input output example
2. your code
3. ask for solution in stackoverflow

我在想有没有可能把研究问题变成program 问题 放上stackoverflow 呢。

另外,最好的公司,其实就是stackoverflow, 因为上面有着各种不同专长的专家。

大公司

1. 零部件 - 大公司的sales 需要将大公司各种部门集合起来完成一个client的task
2. 借resource - 大公司的老板在自己员工不够的时候,可以去借贷,结果自己享受,又不用承担人数。
3. sales - sales 会把时间花在能close的account上,尤其是Q4, 因为来年account不一定是自己的,如果花时间在其他account, 可能帮别人做事。

重要性

今天grab故障了 我竟然不能从槟城一地到另一地,被禁闭了。
于是体现了grab所解决的问题的重要性。而且确保自己是问题解决的唯一答案 - 把竞争对手挤兑出去。
这点有意思。

Friday, October 11, 2019

xgboost

这四天 终于把一个框架搭起来
后面就是试试lstm 和arima 和 arima garch 和 dcmm

Thursday, October 10, 2019

试错前进

我的这行code,
df_rec_c= copy.deepcopy(df_rec)

看上去神奇
但是是我经过了两次失败
df_rec.copy() (shallow copy)
df_rec.deepcopy() (deep copy没生成)


feedback directed的进步,远好过你懂得了copy.deepcopy才来写code。

minimal viable improvement

想到shap,就想到shap+
shap+是什么样的product 呢
当然是一个好用,可视化做的好,而且要不complement,要不比shap好的。

当然不会是ambitious research prototype, 然后半桶水

大公司要求十倍进步
个人,要求一点一点进步,累计十倍

Wednesday, October 9, 2019

三种情绪

观察自己,一天内有三种情绪

一种是working mode
一种是boss asking mode
一种是browse nothing mode

前一种是benefitial
后两种nonsense, mitigation 就是尽快将自己走进working mode, by working 10 mins consecutively.

Tuesday, October 8, 2019

jupyter notebook + xgboost

今天jupyter notebook 大大学习。
xgboost 弄了一下,然后听了Kaggle GM的说法,
one must NOT use either one of the following when using XGBoost: one hot encoding, missing value fill, and input rescaling,

听着的时候,这些是没有听进去的,做了一遍后,再听,瞬间觉得重点完全变得不一样了。

就像从我现在的角度,看旅店的规划,发现旅店都集中在有大公司的地方,不是偶然,而是方便出差,而且这种出差往王阔气,多天,因为是公司负责。

明天,
1. CV with important graph for 3 stores
2. Massive feature engineering
3. LSTM try out
target encoding - https://maxhalford.github.io/blog/target-encoding-done-the-right-way/
add new feature/remove useless feature
skewness test of target variable
textual feature of catalog

Feature:
discount strength
isMajor
isHow
pages



Feature Engineering:
https://www.slideshare.net/0xdata/feature-engineering-83511751
https://www.slideshare.net/HJvanVeen/feature-engineering-72376750

Monday, October 7, 2019

jupyter notebook + 航空酒店

今天航空酒店研究了一早上+中午
了解了各种奖励配套
要好好optimize 一下

---

另外 jupyter notebook还真是个闹人的东西,但是还有common pattern
1. df[['a','b'.'c','d','e']].groupby(['a','b','c']).agg({'d':sum, 'e':list}) #dataframe
or df[['a','b'.'c','d','e']].groupby(['a','b','c'])['d'].agg([sum])  #series
2. df.apply(lambda x: fun(x['a']),axis=1)
3. df['a].apply(lambda x:fun(x))
4. df['a']=df['b'].shift(1)
5. df.sort_values(by=['a','b'])
6. pd.merge([df['a'],df['b']]) [concat]
7. pd.concat([df,df1]) (row, axis=1 for col)
8. dfa.merge(dfb, how='inner', on=['a','b'])
9. df.loc[df['a']>0]=df['a'] (assign value conditionally)
10. df['a']=pd.to_datetime(df['a'])
11. df.rolling('60d',on='time')['number'].mean()
12. df.set_index('date').asfreq('D') or df.set_index('date').resample('D').sum()
13. df['a'].fillna(method='ffill',inplace=True) (or 'bfill')
14. df['a'].groupby('b).apply(lambda x:
x.set_index("time).asfreq("D")).drop(['a'],axis=1).reset_index()
15. df['a'].groupby('b).apply(lambda x: x.set_index("time).resample("D").sum()).drop(['a'],axis=1).reset_index()
16. onehot encoding: pd.get_dummies(df, columns=['a'])
17. label encoding: pd.factorize(df['a'])[0]

麦当劳睡衣

抢购=可爱+免费+限量?

Tuesday, October 1, 2019

marketing keyword - 重复

1. 对上面的人, 对外面的人 marketing
不可能一次就够
要重复
知道get 到为止

不要以为发了一次就很厉害了,就像螺丝钉掉入水里。