标签: supervised-learning

我应该如何使用具有大量不同类别的数据来教授机器学习算法?(SVM)

我正在尝试使用看到横幅的人的点击和转换数据来教我的SVM算法.主要问题是点击率约为所有数据的0.2%,因此它的不成比例很大.当我在测试阶段使用简单的SVM时,它总是只预测"视图"类而不是"点击"或"转换".平均而言,它给出了99.8%的正确答案(因为不成比例),但如果你检查"点击"或"转换",它会给出0%的正确预测.如何调整SVM算法(或选择另一个算法)以考虑不成比例?

machine-learning svm scikit-learn supervised-learning

8
推荐指数
1
解决办法
3326
查看次数

使用深度学习技术的监督学习(文档分类)

我正在阅读有关深度学习的论文.他们中的大多数是指无监督学习.

他们还说,使用无监督的RBM网络对神经元进行预训练.之后,他们使用反向传播算法(监督)进行微调.

那么我们可以使用深度学习解决监督学习问题吗?

我试图找出是否可以将深度学习应用于文档分类问题.我知道有很好的分类器可供选择.但我的目标是找出我们是否可以为此目的使用深度学习.

machine-learning neural-network supervised-learning deep-learning

8
推荐指数
2
解决办法
7436
查看次数

为什么DropOut不用于无监督学习?

所有或几乎所有使用辍学的论文都将其用于监督学习.似乎它可以很容易地用于规范深度自动编码器,RBM和DBN.那么为什么辍学不用于无监督学习呢?

machine-learning neural-network unsupervised-learning supervised-learning

8
推荐指数
1
解决办法
2543
查看次数

编码风格的监督学习 - 特征选择(Scikit Learn)

我正在研究是否可以根据编码风格自动计算学生代码的得分.这包括避免重复代码,注释掉代码,变量命名错误等等.

我们正在尝试根据过去学期的作文分数(从1-3开始)学习,这很好地导致了有监督的学习.基本思想是我们从学生的提交中提取特征,并创建feature_vector,然后使用scikit-learn通过逻辑回归运行它.我们还尝试了各种各样的事情,包括在特征向量上运行PCA以减少维数.

我们的分类器只是猜测最频繁的类,即2分.我相信这是因为我们的功能无论如何都不能预测.有监督的学习算法是否还有其他可能的原因来猜测优势类?有什么方法可以防止这种情况吗?

我认为这是因为这些功能不具备预测性,有没有办法确定"好"的功能是什么?(好的,我的意思是可辨别的或预测性的).

注意:作为一项辅助实验,我们通过对已经评分的读者成绩分配测试了过去成绩的一致性.只有55%的人给出了相同的项目成分(1-3).这可能意味着这个数据集根本无法归类,因为人类甚至无法进行一致评分.关于其他想法的任何提示?或者事实上是否真的如此?

功能包括:重复代码行数,平均函数长度,1个字符变量数,包含注释掉代码的行数,最大行长度,未使用导入计数,未使用变量,未使用参数.还有一些...我们将所有功能可视化,并发现虽然平均值与分数相关,但变化非常大(不太有希望).

编辑:我们项目的范围:我们只是试图从一个特定项目(给出骨架代码)中学习.我们还不需要概括.

statistics machine-learning feature-extraction feature-selection supervised-learning

8
推荐指数
1
解决办法
499
查看次数

weka中看不见的名义价值

我有一个带有一些名义值的数据集作为特征.我所拥有的训练集有一组标称特征的值,这些值在我的测试集中是不存在的.例如,我在训练集中的特征对应于

@attribute h4 {br,pl,com,ro,th,np}

和测试集中的相同功能有

@attribute h4 {br,pl,abc,th,def,ghi,lmno}

我相信因此,weka不允许我重新评估我在我的测试集上的训练集上建立的模型.有没有解决的办法?我错过了什么吗?

编辑:我正在使用RandomForest分类器.

谢谢

machine-learning weka supervised-learning

8
推荐指数
1
解决办法
402
查看次数

用插入符号和R绘制学习曲线

我想研究模型调整的偏差/方差之间的最佳权衡.我正在使用插入符号R,它允许我根据模型的超参数(mtry,lambda等)绘制性能指标(AUC,准确度......)并自动选择最大值.这通常会返回一个好的模型,但如果我想进一步挖掘并选择不同的偏差/方差权衡,我需要一个学习曲线,而不是一个性能曲线.

为简单起见,假设我的模型是一个随机森林,它只有一个超参数'mtry'

我想绘制训练和测试集的学习曲线.像这样的东西:

学习曲线

(红色曲线是测试集)

在y轴上我设置了一个错误度量(错误分类的例子的数量或类似的东西); 在x轴上'mtry'或者训练集大小.

问题:

  1. 是否有根据训练集折叠不同大小迭代训练模型的功能?如果我必须手动编码,我该怎么做?

  2. 如果我想将超参数放在x轴上,我需要所有由caret :: train训练的模型,而不仅仅是最终模型(在CV之后获得最大性能的模型).这些"丢弃"的模型在火车后仍然可用吗?

plot r machine-learning supervised-learning

8
推荐指数
1
解决办法
8262
查看次数

偏置节点是非常大的神经网络所必需的吗?

我理解偏置节点在神经网络中的作用,以及为什么它对于在小型网络中转移激活功能很重要.我的问题是:偏差在非常大的网络中仍然很重要(更具体地说,是使用ReLu激活函数进行图像识别的卷积神经网络,3个卷积层,2个隐藏层和超过100,000个连接),或者它的影响是否得到失败的激活次数发生了吗?

我问的原因是因为在过去我已经建立了我忘记实现偏置节点的网络,但是在添加一个网络时,性能上的差异可以忽略不计.这可能是偶然的,因为特定的数据集不需要偏见吗?我是否需要在大型网络中以更大的值初始化偏差?任何其他建议将不胜感激.

artificial-intelligence machine-learning image-recognition neural-network supervised-learning

8
推荐指数
1
解决办法
4762
查看次数

Scikit-learn:如何计算真阴性

我正在使用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.有人能告诉我吗?

python machine-learning scikit-learn supervised-learning

8
推荐指数
1
解决办法
1685
查看次数

使用新数据重新训练现有的机器学习模型

我有一个 ML 模型,它在一百万个数据集上进行训练(文本的监督分类),但是我希望在新数据(训练数据)出现后立即再次训练相同的模型。

这个过程是连续的,我不想在每次收到新数据集时失去模型预测的能力。我不想将新数据与我的历史数据(约 100 万个样本)合并以再次训练。

因此,理想的情况是该模型在一段时间内对所有数据进行逐渐训练,并在每次收到新的训练集数据时保留模型的智能。避免重新训练所有历史数据的最佳方法是什么?代码示例会对我有帮助。

python nlp machine-learning training-data supervised-learning

8
推荐指数
1
解决办法
1万
查看次数

如何在多文本分类中添加更多特征?

我有一个带有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

6
推荐指数
1
解决办法
102
查看次数