一、主题研究
1、潜在狄利克雷分配
sklearn 不支持潜在狄利克雷分配,可以使用python中的genism包
2、稀疏性
当你有一个很大的矩阵或者向量的时候,基本上大多数的值都是0,因此,在任何时候,只有一小部分数据时相关的。
3、选择主题个数
主题模型通常是一个面向目标的终端服务,在这种情况下,你具体选择了哪些参数并不总是很重要,不同的主题数或者参数值会得到效果几乎相同的系统。
主题模型允许每个文档出现在多个分组中,比简单聚类更灵活。这些技术还可以用于图像,在绝大多数现代计算机视觉研究中,主题模型都是非常重要的。
这部分属于机器学习算法研究最前沿。
二、检测劣质答案
方法A
1、KNN算法
from sklearn import neighbors
knn=neighbors.KNeighborsClassifier(n_neighbors=2)
2、 特征工程(查看答案中的超链接数,用它代表答案的质量,越多越好--工具库(beautifulsoup)
3、训练分类器
4、评估分类器的性能
from sklearn.cross_validation import KFold
scores=[]
cv = KFold(n=len(X), n_folds=10, indices=True)
for train,test in cv:
X_train,y_train=X[train],Y[train]
X_test,y_test=X[test],Y[test]
clf=neighbors.KNeighborsClassifier()
clf.fit(X,Y)
scores.append(clf.score(X_test,y_test))
print("Mean(scores)=%.5f\tStddev(scores)=%.5f"%(np.means(scores,np.std(scores))))
5、设计更多的特征
AvgSentLen,AvgWordLen,NumAllCaps,NumExclams
6、提升效果
1)增加更多的数据;2)考虑模型的复杂度;3)修改特征空间;4)改变模型
很重要的一点:偏差-方差折中
高偏差:增加更多的特征,使模型更加复杂
高方差:获取更多的数据,或者降低模型复杂度
方法B:
1、采用逻辑回归
from sklearn.linear_model import LogisticRegression
clf=LogisticRegression()
clf.fit(x,y)
采用不同的正则化参数C得到不同的正确率,较小的c会带来较大的惩罚,它会使模型更为复杂。
2、为分类器瘦身
系数:clf.coef,一个特征的系数越高,这个特征在决定帖子好坏过程中的作用越大。