我正在尝试使用看到横幅的人的点击和转换数据来教我的SVM算法.主要问题是点击率约为所有数据的0.2%,因此它的不成比例很大.当我在测试阶段使用简单的SVM时,它总是只预测"视图"类而不是"点击"或"转换".平均而言,它给出了99.8%的正确答案(因为不成比例),但如果你检查"点击"或"转换",它会给出0%的正确预测.如何调整SVM算法(或选择另一个算法)以考虑不成比例?
我正在阅读有关深度学习的论文.他们中的大多数是指无监督学习.
他们还说,使用无监督的RBM网络对神经元进行预训练.之后,他们使用反向传播算法(监督)进行微调.
那么我们可以使用深度学习解决监督学习问题吗?
我试图找出是否可以将深度学习应用于文档分类问题.我知道有很好的分类器可供选择.但我的目标是找出我们是否可以为此目的使用深度学习.
machine-learning neural-network supervised-learning deep-learning
所有或几乎所有使用辍学的论文都将其用于监督学习.似乎它可以很容易地用于规范深度自动编码器,RBM和DBN.那么为什么辍学不用于无监督学习呢?
machine-learning neural-network unsupervised-learning supervised-learning
我正在研究是否可以根据编码风格自动计算学生代码的得分.这包括避免重复代码,注释掉代码,变量命名错误等等.
我们正在尝试根据过去学期的作文分数(从1-3开始)学习,这很好地导致了有监督的学习.基本思想是我们从学生的提交中提取特征,并创建feature_vector,然后使用scikit-learn通过逻辑回归运行它.我们还尝试了各种各样的事情,包括在特征向量上运行PCA以减少维数.
我们的分类器只是猜测最频繁的类,即2分.我相信这是因为我们的功能无论如何都不能预测.有监督的学习算法是否还有其他可能的原因来猜测优势类?有什么方法可以防止这种情况吗?
我认为这是因为这些功能不具备预测性,有没有办法确定"好"的功能是什么?(好的,我的意思是可辨别的或预测性的).
注意:作为一项辅助实验,我们通过对已经评分的读者成绩分配测试了过去成绩的一致性.只有55%的人给出了相同的项目成分(1-3).这可能意味着这个数据集根本无法归类,因为人类甚至无法进行一致评分.关于其他想法的任何提示?或者事实上是否真的如此?
功能包括:重复代码行数,平均函数长度,1个字符变量数,包含注释掉代码的行数,最大行长度,未使用导入计数,未使用变量,未使用参数.还有一些...我们将所有功能可视化,并发现虽然平均值与分数相关,但变化非常大(不太有希望).
编辑:我们项目的范围:我们只是试图从一个特定项目(给出骨架代码)中学习.我们还不需要概括.
statistics machine-learning feature-extraction feature-selection supervised-learning
我有一个带有一些名义值的数据集作为特征.我所拥有的训练集有一组标称特征的值,这些值在我的测试集中是不存在的.例如,我在训练集中的特征对应于
@attribute h4 {br,pl,com,ro,th,np}
和测试集中的相同功能有
@attribute h4 {br,pl,abc,th,def,ghi,lmno}
我相信因此,weka不允许我重新评估我在我的测试集上的训练集上建立的模型.有没有解决的办法?我错过了什么吗?
编辑:我正在使用RandomForest分类器.
谢谢
我想研究模型调整的偏差/方差之间的最佳权衡.我正在使用插入符号R,它允许我根据模型的超参数(mtry,lambda等)绘制性能指标(AUC,准确度......)并自动选择最大值.这通常会返回一个好的模型,但如果我想进一步挖掘并选择不同的偏差/方差权衡,我需要一个学习曲线,而不是一个性能曲线.
为简单起见,假设我的模型是一个随机森林,它只有一个超参数'mtry'
我想绘制训练和测试集的学习曲线.像这样的东西:

(红色曲线是测试集)
在y轴上我设置了一个错误度量(错误分类的例子的数量或类似的东西); 在x轴上'mtry'或者训练集大小.
问题:
是否有根据训练集折叠不同大小迭代训练模型的功能?如果我必须手动编码,我该怎么做?
如果我想将超参数放在x轴上,我需要所有由caret :: train训练的模型,而不仅仅是最终模型(在CV之后获得最大性能的模型).这些"丢弃"的模型在火车后仍然可用吗?
我理解偏置节点在神经网络中的作用,以及为什么它对于在小型网络中转移激活功能很重要.我的问题是:偏差在非常大的网络中仍然很重要(更具体地说,是使用ReLu激活函数进行图像识别的卷积神经网络,3个卷积层,2个隐藏层和超过100,000个连接),或者它的影响是否得到失败的激活次数发生了吗?
我问的原因是因为在过去我已经建立了我忘记实现偏置节点的网络,但是在添加一个网络时,性能上的差异可以忽略不计.这可能是偶然的,因为特定的数据集不需要偏见吗?我是否需要在大型网络中以更大的值初始化偏差?任何其他建议将不胜感激.
artificial-intelligence machine-learning image-recognition neural-network supervised-learning
我正在使用Scikit学习,我需要从这样的混淆矩阵计算真阳性(TP),假阳性(FP),真阴性(TN)和假阴性(FN):
[[2 0 3 4]
[0 4 5 1]
[1 0 3 2]
[5 0 0 4]]
Run Code Online (Sandbox Code Playgroud)
我知道如何计算TP,FP和FN,但我不知道如何获得TN.有人能告诉我吗?
我有一个 ML 模型,它在一百万个数据集上进行训练(文本的监督分类),但是我希望在新数据(训练数据)出现后立即再次训练相同的模型。
这个过程是连续的,我不想在每次收到新数据集时失去模型预测的能力。我不想将新数据与我的历史数据(约 100 万个样本)合并以再次训练。
因此,理想的情况是该模型在一段时间内对所有数据进行逐渐训练,并在每次收到新的训练集数据时保留模型的智能。避免重新训练所有历史数据的最佳方法是什么?代码示例会对我有帮助。
python nlp machine-learning training-data supervised-learning
我有一个带有product_description, price, supplier, category列的零售数据集。我用作product_description功能:
from sklearn import model_selection, preprocessing, naive_bayes
# split the dataset into training and validation datasets
train_x, valid_x, train_y, valid_y = model_selection.train_test_split(df['product_description'], df['category'])
# label encode the target variable
encoder = preprocessing.LabelEncoder()
train_y = encoder.fit_transform(train_y)
valid_y = encoder.fit_transform(valid_y)
tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w{1,}', max_features=5000)
tfidf_vect.fit(df['product_description'])
xtrain_tfidf = tfidf_vect.transform(train_x)
xvalid_tfidf = tfidf_vect.transform(valid_x)
classifier = naive_bayes.MultinomialNB().fit(xtrain_tfidf, train_y)
# predict the labels on validation dataset
predictions = classifier.predict(xvalid_tfidf)
metrics.accuracy_score(predictions, valid_y) # ~20%, very low
Run Code Online (Sandbox Code Playgroud)
由于准确性非常低,我也想添加供应商和价格作为功能。如何将其合并到代码中?
我尝试过其他分类器,如 LR、SVM …
python-3.x scikit-learn supervised-learning text-classification