Я использую PySpark для разработки простого приложения для анализа текста.Цель состоит в том, чтобы классифицировать определенный документ как Спам или Не Спам.У меня есть приблизительно 1000 документов для обучения модели ( n ).
После очистки данных (исправление орфографических ошибок, определение стволов и т. Д.) Я использую IDF для извлечения вектора объектов.По умолчанию размерность этого метода векторизации составляет 2 ^ 18 = 262144, что означает, что у меня будет в общей сложности 262144 очень разреженных объекта ( p ).
Учитывая, что p >> n :
Насколько я помню, и согласно некоторым найденным статьям и веб-статьям невозможно применить линейную регрессию к данным этого типа без какого-либо сокращения возможностей, иначеалгоритм потерпит неудачу (потому что при p> n дисперсия будет бесконечной).
Чтобы проверить это, я запустил линейную регрессию для моих данных:
...
idf_stage = IDF(inputCol=hashingTF.getOutputCol(), outputCol="features", minDocFreq=1)
lr = LinearRegression(maxIter=10, tol=1E-6)
pipeline = Pipeline(stages=[..., idf_stage, lr])
model = pipeline.fit(train)
results = model.transform(test)
results.select("label", "prediction").show()
И я получил следующие результаты:
+-----+--------------------+
|label| prediction|
+-----+--------------------+
| 1.0| 0.8123660495998272|
| 1.0| 0.9485273761704205|
| 0.0| 0.25039087467730653|
| 1.0| 1.2359878831283708|
| 0.0|-0.14295806192187976|
| ... |
+-----+--------------------+
Я ожидал, что это не удастся, поэтому я удивился, когда заметил, что исключений не было.
Есть пара вещей, которые я не могу понять:
Вопрос 1: Когда говорят, что алгоритм линейной регрессии потерпит неудачу, когда p> n, что являетсясмысл неудачи?Разве он не должен работать вообще и генерировать исключение или он должен запускаться, но возвращать результаты, которые не должны учитываться?
Вопрос 2: Если алгоритм должен генерировать исключение, почему он работает?Делает ли Spark какое-либо сокращение возможностей за кулисами?
Вопрос 3: Поскольку логистическая регрессия может быть превращена в задачу линейной регрессии с использованием переменных преобразований, возникает ли такая же проблема, когда p> n?