每周碎片知识3

1️⃣[Python]
在服务器上跑代码时,如 python project/folder1/a.py,如果a.py引用了一个自定义的模块但又不在folder1内,此时interpreter就会报错,提示找不到该模块。这是因为解释器默认只会在同一个folder下查找。解决方案是在运行前显式添加查找范围。如:

1
export PYTHONPATH=/home/zhlin/bilm-tf:$PYTHONPATH

那么python解释器就会到该目录下去找。


2️⃣[度量标准]

  • 准确率(accuracy): $ACC=\frac{TP+TN}{TP+TN+FP+FN}$
    衡量的是分类器预测准确的比例
  • 召回率(recall): $Recall=\frac{TP}{TP+FN}$
    正例中被分对的比例,衡量了分类器对正例的识别能力。
  • 精确率(Precision): $P=\frac{TP}{TP+FP}$
    度量了被分为正例的示例中实际为正例的比例。
  • F-Measure: $F=\frac{(\alpha^2 +1)P*R}{\alpha^2 (P+R)}$
    其中P是Precision,R是Recall。综合考量了两种度量。
    当$\alpha=1$时,称为F1值 $F1=\frac{2PR}{P+R}$

3️⃣[调参技巧]
在google发布的一份关于text-classification的guide中,提到了几个调参的trick。

  1. 在feature selection步骤中,卡方检验chi2和方差分析的F值 f_classif的表现相当,在大约选择20k的feature时,准确率达到顶峰,当feature越多,效果并没有提升甚至会下降。
  2. 在文本分类中,似乎使用normalization并没有多少用处,建议跳过。

    Normalization converts all feature/sample values to small and similar values. This simplifies gradient descent convergence in learning algorithms. From what we have seen, normalization during data preprocessing does not seem to add much value in text classification problems; we recommend skipping this step.

实际上我也测试过,发现确实normalization对于准确率的提高没什么帮助,甚至还有一点下降。