Я хочу тренировать гендерный классификатор, но спутать с какой-либо проблемы ..Логистическая регрессия классификатор количества обучения
Есть около 100000 меченого набора данных (25 000 мужчины. 75000 женщин). Я разделим этот набор данных в локальный-поезд (60%) и местный-тест (40%)
List<LabeledPoint> males = getMales(); // <-- 25,000
List<LabeledPoint> females = getFemales(); // <-- 75,000
List<LabeledPoint> local = males.addAll(females); // <-- union
List[] splits = randomSplit(local, new double[] {0.6, 0.4});
List trainingData = splits[0];
List testData = splits[1];
LogisticRegressionModel model = new LogisticRegressionWithLBFGS()
.setNumClasses(10)
.run(trainingData);
List<LabeledPoint> predictedList = model.predict(testData);
for(LabeledPoint predict : predictedList){
if(predict.label() =="f" && predict.predictLabel()!="f"){
fErrorCount ++;
}
if(predict.label() =="m" && predict.predictLabel()!="m"){
mErrorCount ++;
}
}
Результат прогнозирования для локальных испытаний данные
#1 (all number is based on item count)
Total prediction :36152 , error : 6619, error ratio 0.18%
F :27747.0 , error : 2916.0, error ratio 0.10%
M :8405.0 , error : 3703.0, error ratio 0.44%
Как вы можете видеть, предсказывая для женщины очень хорошая, но для мужчины слишком бедна. Я ожидал такое же соотношение ошибок как для женщин, так и для мужчин. Этот классификатор кажется хорошим для женского таргетинга, но бесполезен для мужского таргетинга.
Таким образом, я сделал предварительную выборку для баланса женщин и мужчин равными. теперь я получил 50000 меченных набора данных (25 000 мужчину, 25 000 женских)
List<LabeledPoint> males = getMales(); // <-- 25,000
List<LabeledPoint> females = getfemales().sublist(0,25000); // <-- hard resized.
// from here is same.
результата предсказания
#2
Total prediciton :16814 , error : 4369 - 0.259842987986202%
F :8407.0 , error : 2225.0 - 0.2646604020459141%
M :8407.0 , error : 2144.0 - 0.25502557392648983%
Online немаркированных данные, что модель должны предсказать это в производстве, могут иметь тенденцию к женскому отношению больше чем мужчина (например, №1, 75:25), но в будущем это соотношение может быть изменено примерно как (f: m = 30: 70), (f: m = 80: 20).
В этом случае
- как я построить наиболее усыновлен модель?
- нет способа построить модель, которая гарантирует стабильное соотношение ошибок как для женщин, так и для мужчин.
- нет способа построить модель, которая гарантирует стабильное соотношение ошибок, даже соотношение мужчин и женщин изменилось?
- это попытка №2 сделать неэлемент?
спасибо.
Добро пожаловать в StackOverflow. Прочтите и следуйте инструкциям по отправке в справочной документации. Здесь используется MCVE (http://stackoverflow.com/help/mcve). Мы не можем эффективно помочь вам, пока вы не опубликуете свой код и не сможете точно описать проблему. – Prune
(1) Какова ваша метрика для использования модели? Кто принимает модель и для каких целей? (2a) Каково ваше определение стабильности? (2b) Почему важна стабильность? (3) Это очень зависит от выбранного вами типа модели. – Prune
Прошу прощения за плохое содержание. отредактировал некоторые. –