[关闭]
@Macux 2018-01-18T02:27:18.000000Z 字数 15130 阅读 2002

Hei....

Interview



0、监督学习的总结

Minimize your error while Regularizing your parameters.
不仅要最小化误差(模型的预测要足够精准),而且要规则化参数(模型没那么复杂);


1、推荐算法

1.1 过程简述

  • 将用户的每一个行为,视为一条记录,事先做好 label。因变量是“是否点击”,用 Logistic Regression 做二分类学习。(根据用户过去的行为,预测他对其它视频是否点击?
  • 一开始,先加 L2 正则做调参,就会有参数权重出来,对权重大的变量,继续做细化。(当然也可以用 RandomForest)
  • 继续做细化的方式,可以为:比如把时间细化成,每周的第几天、每月的第几周、是否是节假日、早中晚等等。
  • 回到模型训练,如果过拟合了就从其他权重高的变量下手继续做细化。也可以用 L1 做正则,删除不重要的变量(这是最后一招,一开始不建议使用。)

1.2 数据预处理


1.3 特征工程


1.4 关于范数的理解


1.5 模型评估


2、自然语言处理

2.1 过程简述

  • 获取数据(爬虫)
  • 数据预处理(去重、去噪、分词、去除停止词)
  • 生成词向量(word2vec)
  • 聚类(k-means)
  • 使用 DBI 指标(计算类内距离之和与类外距离之比,值越小,聚类效果越好)优化 k 值的选取
  • 输出用户关注点

2.2 数据预处理

  1. # 添加自定义的人工词典,file_name 为文件类对象或自定义词典的路径
  2. jieba.load_userdict(file_name)
  3. # 使用 HMM 的 Viterbi 算法进行分词
  4. '/'.join(jieba.cut('如果放到post中将出错。', HMM = True))


2.3 生成词向量


3、巧妙设计数据库,保证查询和插入的高效。

3.1 提高 INSERT 的效率


3.2 提高 SELECT 的效率


4、软性面试的一些问题

4.1 目前的求职动机

  • 我的志向是做“数据挖掘”。具体而言,是通过我的工作,产出很棒的算法模型。这个很棒的模型,可以从一堆错综复杂的数据中挖掘出一些有用的 finding 或 learning,从而为业务部门做出正确的 descision 提供帮助。我认为,这个过程是很 charming 的。
  • 而我目前所在的企业,给予我的工作任务,80% 都 focus 在爬虫上。
  • 不可否认,爬虫是整个 Data Mining 过程中非常重要的一环。但客观的讲,它仅仅是 DM 过程中的 beginning。它和我真正想要做的 Data Mining 是有出入的,匹配度大约只有 30% 左右。
  • PS:如果时机得当,可以抛出自己对工作岗位的认识:
    (1)无论做什么工作,无论这个工作岗位的 title 是什么,我们都只是围绕着这个 title 在做事,而不会 100% 地只做自己理想中的那部分工作。
    (2)企业招我们进来,是想我们帮助企业解决最迫切的问题。

4.2 职业规划

  • 我制定的职业规划,时间跨度是三年,以滚动计划的方式来迭代更新;
  • 职业规划是基于两个维度来设计:目前想做什么 & 将来适合做什么

5、推荐算法工程师面试准备(更新日期:2018.01.10)

5.1 流量优化项目


5.2 视频推荐项目

  • 最后的推荐视频展示结果,除了参考模型的输出外,还应加入一些规则:

    1. 来自业务的ROI:视频A和视频B分别位于模型的排序列表中的第1和第20位,视频B被点击一次赚10美元,视频A被点击一次赚0.1美元。
    2. 结合用户体验:参考产品同学的建议,视频最后怎么输出,输出怎么摆放,是否应该加入一些推荐理由等等,这些涉及到用户体验的问题,需要考虑产品同学的建议。

  • 5.3 面试的Feedback

    一定要抹掉下面这些薄弱环节,让自己更优秀。无法忍受软弱的自己!!!!!

    1. #!/usr/bin/env python
    2. #coding:utf8
    3. from pyspark import SparkConf, SparkContext, StorageLevel
    4. from pyspark.mllib.classification import LogisticRegressionWithLBFGS
    5. from pyspark.mllib.evaluation import BinaryClassificationMetrics
    6. from pyspark.mllib.util import MLUtils
    7. """
    8. Logistic Regression run in Spark
    9. """
    10. conf = SparkConf().setAppName("Just A Game")
    11. sc = SparkContext(conf=conf)
    12. # 读入数据
    13. data = MLUtils.loadLibSVMFile(sc,'s3://mob-emr-test/fanpeng/atf/isolationForest/deviceOfferOutput_31Days/sample_libsvm_data.txt')
    14. training, test = data.randomSplit([0.6, 0.4], seed=11)
    15. # Run training algorithm to build the model
    16. model = LogisticRegressionWithLBFGS.train(training)
    17. # Compute raw scores on the test set
    18. predictionAndLabels = test.map(lambda x: (float(model.predict(x.features)), x.label))
    19. # Instantiate metrics object
    20. metrics = BinaryClassificationMetrics(predictionAndLabels)
    21. # Area under precision-recall curve
    22. print ("Area under PR = %s" % metrics.areaUnderPR)
    23. # Area under ROC curve <=> AUC
    24. print ("Area under ROC = %s" % metrics.areaUnderROC)

    添加新批注
    在作者公开此批注前,只有你和作者可见。
    回复批注