Спасибо за комментарий. Обязательно попробую. Я, собственно, собирался про МКЭ сразу писать с переходом на 2- и 3-мерные задачи. Там с визуализации и градиентные методы и т.д. Только неожиданно застрял в Numpy. Оказывается, к opensource радо аккуратно относиться. Причем всегда :))
Спасибо за комментарий. Обязательно посмотрю. Если занимались временными рядами, слышали про теорему Такенса? Все про нее говорят, но конкретики я нигде не нашел.
Я уже придумал алгоритм, похожий на правду. У меня намечается серия статей на тему дифференцирования дискретных функций. Первую завтра подам на модерацию, а Ваша тема (в моем понимании, конечно) попадает в продолжение как пример альтернативного алгоритма. Вроде получается один неопределенный параметр, которым можно регулировать гладкость или монотонность. потребуется неделя-другая на проверку, с учетом летнего расписания. Будет интересно продолжить обсуждение.
Курсы валют и акций зависят от макроэкономических новостей на достаточно длительных отрезках времени - месяцы и годы. На средних сроках вполне нормально работает технический анализ, потому что в процессе участвуют трейдеры - простые люди. Только колебания совсем не периодические, поэтому никаких синусов там не найти. Кстати, если хотите предсказать динамику фондового рынка на десятилетия, то это совсем просто - будет устойчиво расти.
Спасибо Вам за реакцию. Мои соображения по пунктам:
1) В таком матричном представлении почти все элементы - нули, и в простейшем случае в каждой строке всего одна единица (или true). Такие матрицы нет смысла хранить и обрабатывать "целиком". По сути это тот же самый вектор длины К (длина слова), в каждой компоненте которого хранится индекс, соответствующий месту буквы в алфавите. Чтобы посчитать расстояние Хемминга даже нечего умножать, все делается как обычно, покомпонентным сравнением. Зато можно продвинуться значительно дальше.
2) Можно поработать с опечатками и чередующимися гласными в однокоренных словах (типа раст-рост). Если есть "опасность" перепутать буквы И и Й, то в соответствующей строке матрицы ставятся два ненулевых элемента (веса 1/2 или sqrt(2)/2) на соответствующих местах, например на 10 для И и 11 для Й. Если можно перепутать три значения (I (заглавное i), l (строчное L) или 1), то ненулевые значения (веса) появляются в трех местах (по 1/3 или sqrt(3)/3). Тут уже в каждой компоненте вектора длины К будет храниться список или словарь с индексами и весами. Матрица, по большому счету, все равно остается вектором.
3) После некоторых раздумий мне кажется, что проблем в сравнении слов различной длины нет. Скорее наоборот, очень интересно получается. Если в словах есть совпадающие участки (например, общий корень), то в матрице, получающейся в результате умножения, будут "цепочки" ненулевых элементов (возможно, единиц, это зависит от выбранных весов) вдоль главной диагонали. Например, при сравнении слов "растение" и "вырастайка" будет цепочка из 4-х единиц, соответствующих общему корню "раст" и еще 2 "отдельно стоящих" единицы из-за повторения буквы "а".
Наверное, придумаю что-нибудь на Питоне, в тему начинает затягивать.
Из своего опыта поездки в Чили добавлю несколько советов от себя и людей, которые там живут.
Не рекомендуется одевать цепочки и прочие украшения при походе в места, где много людей, например, на рынок. Даже в таких благополучных городах, как Вальпараисо. Сережки могут оторвать прямо с ушами.
Если решили погулять по Сантьяго, то хорошо бы иметь пару долларов в кармане. К вам может подойти человек с пистолетом и попросить немного денег. Пара долларов его абсолютно устроит.
Из экскурсий кроме, естественно, острова Пасхи, нам очень понравилось проживание нескольких дней на острове в Магеллановом проливе. Там есть станция экологов, которые наблюдают за китами, и вас будут каждый день катать на пароходике. В том числе можно выпить вискаря со льдом из падающего в море ледника.
Если в Чили поехать в летом (а там в это время зима), то можно покататься на горных лыжах. Мы не пробовали, потому что были в январе, но подъемники видели. Конечно, далеко не Австрия, но экзотика скорее всего все окупит.
Я тут раздумывал на своей темой, и придумался следующий алгоритм, возможно полезный Вам. Во всяком случае, интересно было бы Ваше мнение.
Пойдем с конца к началу. В качестве неизвестных величин фигурируют значения второй производной функции в узлах. Между узлами вторая производная интерполируется линейно, соответственно, на всем отрезке является кусочно-линейной непрерывной функцией. Первая производная функции при этом будет кусочно- "параболической". Значение первой производной в начале отрезка неизвестно, и задается постоянной интегрирования, которая будет еще одной неизвестной величиной. Двигаясь по отрезку слева направо, формируем первую производную функции, причем новых неизвестных констант интегрирования не возникает, поскольку есть требование непрерывности первой производной в узлах. Наконец, "восстанавливаем" саму функцию полиномами 3-й степени, интегрируя аппроксимированную первую производную и "попадая" в узлы. Это условие формирует систему уравнений для нахождения неизвестных величин. Возможно, наличие одной неизвестной константы интегрирования определит какую-нибудь задачу оптимизации.
Не знаю, сколько автору лет. Скорее всего, сильно меньше чем мне, но путь я прохожу (или уже прошел?) примерно такой же. Неплохим математиком был еще в СССР.
В статье по этой ссылке ситуация не очень наглядная, поскольку формулы даны для единичных гиперсфер, т.е. с радиусом 1. При этом "описанный" гиперкуб имеет сторону (стороны) 2, т.е. его объем растет с ростом размерности. Уважаемый mr-pickles дает более наглядную и весьма перадоксальную картину, поскольку "описанный" гиперкуб не меняет объема. Мне очень понравилось.
Спасибо за ответ. Я немного погуглил, но пока алгоритмов основанных на представлении слов в виде матриц KxN, где K - количество букв в слове, а N - количество символов в базовом наборе символов (алфавите) не увидел. Конечно, кто-то это использует, потому что идея ну совсем естественная. При самом простом подходе матрица содержит K единиц, остальные нули, поэтому проблемы с обработкой не должно возникнуть. Если сравнивать слова одной длины, то метрика строится очень просто, так как при умножении "слова" на самое себя получается единичная матрица, и чем больше несовпадений букв в паре сравниваемых, тем больше нулей на диагонали результата. Белее-менее понятно, как поступить с опечатками или "похожими" буквами типа И и Й или I, l, 1. Непростой кажется процедура сравнения слов разной длины, но если с этим внятно разобраться, то получается очень простой переход к однокоренным словам, что, в свою очередь, тоже является популярной задачей.
Вопрос, наверное скорее философский. По сути вы полиномами аппроксимируете некоторую функцию, которая известна по-точечно. При этом значения ее производных неизвесты совсем. Насколько важно при интерполяции "точно попадать" в значения самой функции? Ведь значительно проще с вычислительной точки зрения постоить "наилучшую" в каком-то смысле аппроксимацию, которая в заданные значения функции попадать будет "почти", но например будет настолько гладкой (С2, как минимум), насколько хочется.
Вопрос неспециалиста в данной теме, но интересующегося. В определении оригинального расстояния Левенштейта i и j - это длины слов V и W?
И еще вопрос ближе к математике. Если задан набор символов для всех возможных исследуемых слов, то каждое слово можно задать матрицей, в которой почти все элементы нули, а единицы стоят на местах, соответствующих номеру символа в базовом наборе и месту символа в слове. Скорее всего, это стандартный подход. Но в этом случае "близость" слов можно оценить матричными методами, в т.ч. с использованием сингулярного разложения. Существует ли такой метод?
Автор статьи, которую мы обсуждаем (надеюсь, мы этим занимаемся?) приводит пример как многомерный "тензор" можно представить в виде двумерной матрицы, просто часть индексов обозвав"строчные", а часть - "столбцовые". Можно пойти дальше и все индексы обозвать как "столбцовые" и получить вектор-столбец, элементы которого (возможно) расположенны в памяти компьютера даже в том же поряке. Проблема в том, что с этим вектором, как и с большой 2-мерной матрицей ничего путного нельзя сделать, поэтому приходится искать другие пути. Вот народ и хочет разобраться что к чему.
Вопрос был чисто познавательный. Вы будете смеяться, но на мех-мате МГУ 40 лет назад в курсе линейной алгебры не было сингулярного разложения (как и многих других полезных разложений). На это справедливо обратил внимание г-н Оселедец, последователем которого является автор обсуждаемой статьи. Когда я году этак в 1987-м начал заниматься численными расчетами, я с удивлением обнаружил, что существует много эффективных методов обработки матриц, позволяющих делать такие расчеты в принципе (на компьютере PC AT). А студентам про это не рассказывали. Так что тема для меня ностальгическая.
Спасибо за комментарий. Обязательно попробую. Я, собственно, собирался про МКЭ сразу писать с переходом на 2- и 3-мерные задачи. Там с визуализации и градиентные методы и т.д. Только неожиданно застрял в Numpy. Оказывается, к opensource радо аккуратно относиться. Причем всегда :))
Спасибо за комментарий. Обязательно посмотрю. Если занимались временными рядами, слышали про теорему Такенса? Все про нее говорят, но конкретики я нигде не нашел.
Конечно!
Я уже придумал алгоритм, похожий на правду. У меня намечается серия статей на тему дифференцирования дискретных функций. Первую завтра подам на модерацию, а Ваша тема (в моем понимании, конечно) попадает в продолжение как пример альтернативного алгоритма. Вроде получается один неопределенный параметр, которым можно регулировать гладкость или монотонность. потребуется неделя-другая на проверку, с учетом летнего расписания. Будет интересно продолжить обсуждение.
Честно говоря, я не понимаю смысл термина "монотонность" в данном контексте. Типа "достаточная" гладкость?
Курсы валют и акций зависят от макроэкономических новостей на достаточно длительных отрезках времени - месяцы и годы. На средних сроках вполне нормально работает технический анализ, потому что в процессе участвуют трейдеры - простые люди. Только колебания совсем не периодические, поэтому никаких синусов там не найти. Кстати, если хотите предсказать динамику фондового рынка на десятилетия, то это совсем просто - будет устойчиво расти.
Спасибо, так и сделаю. Только соберу мысли во что-нибудь конкретное.
Спасибо Вам за реакцию. Мои соображения по пунктам:
1) В таком матричном представлении почти все элементы - нули, и в простейшем случае в каждой строке всего одна единица (или true). Такие матрицы нет смысла хранить и обрабатывать "целиком". По сути это тот же самый вектор длины К (длина слова), в каждой компоненте которого хранится индекс, соответствующий месту буквы в алфавите. Чтобы посчитать расстояние Хемминга даже нечего умножать, все делается как обычно, покомпонентным сравнением. Зато можно продвинуться значительно дальше.
2) Можно поработать с опечатками и чередующимися гласными в однокоренных словах (типа раст-рост). Если есть "опасность" перепутать буквы И и Й, то в соответствующей строке матрицы ставятся два ненулевых элемента (веса 1/2 или sqrt(2)/2) на соответствующих местах, например на 10 для И и 11 для Й. Если можно перепутать три значения (I (заглавное i), l (строчное L) или 1), то ненулевые значения (веса) появляются в трех местах (по 1/3 или sqrt(3)/3). Тут уже в каждой компоненте вектора длины К будет храниться список или словарь с индексами и весами. Матрица, по большому счету, все равно остается вектором.
3) После некоторых раздумий мне кажется, что проблем в сравнении слов различной длины нет. Скорее наоборот, очень интересно получается. Если в словах есть совпадающие участки (например, общий корень), то в матрице, получающейся в результате умножения, будут "цепочки" ненулевых элементов (возможно, единиц, это зависит от выбранных весов) вдоль главной диагонали. Например, при сравнении слов "растение" и "вырастайка" будет цепочка из 4-х единиц, соответствующих общему корню "раст" и еще 2 "отдельно стоящих" единицы из-за повторения буквы "а".
Наверное, придумаю что-нибудь на Питоне, в тему начинает затягивать.
Из своего опыта поездки в Чили добавлю несколько советов от себя и людей, которые там живут.
Не рекомендуется одевать цепочки и прочие украшения при походе в места, где много людей, например, на рынок. Даже в таких благополучных городах, как Вальпараисо. Сережки могут оторвать прямо с ушами.
Если решили погулять по Сантьяго, то хорошо бы иметь пару долларов в кармане. К вам может подойти человек с пистолетом и попросить немного денег. Пара долларов его абсолютно устроит.
Из экскурсий кроме, естественно, острова Пасхи, нам очень понравилось проживание нескольких дней на острове в Магеллановом проливе. Там есть станция экологов, которые наблюдают за китами, и вас будут каждый день катать на пароходике. В том числе можно выпить вискаря со льдом из падающего в море ледника.
Если в Чили поехать в летом (а там в это время зима), то можно покататься на горных лыжах. Мы не пробовали, потому что были в январе, но подъемники видели. Конечно, далеко не Австрия, но экзотика скорее всего все окупит.
Я тут раздумывал на своей темой, и придумался следующий алгоритм, возможно полезный Вам. Во всяком случае, интересно было бы Ваше мнение.
Пойдем с конца к началу. В качестве неизвестных величин фигурируют значения второй производной функции в узлах. Между узлами вторая производная интерполируется линейно, соответственно, на всем отрезке является кусочно-линейной непрерывной функцией. Первая производная функции при этом будет кусочно- "параболической". Значение первой производной в начале отрезка неизвестно, и задается постоянной интегрирования, которая будет еще одной неизвестной величиной. Двигаясь по отрезку слева направо, формируем первую производную функции, причем новых неизвестных констант интегрирования не возникает, поскольку есть требование непрерывности первой производной в узлах. Наконец, "восстанавливаем" саму функцию полиномами 3-й степени, интегрируя аппроксимированную первую производную и "попадая" в узлы. Это условие формирует систему уравнений для нахождения неизвестных величин. Возможно, наличие одной неизвестной константы интегрирования определит какую-нибудь задачу оптимизации.
Не знаю, сколько автору лет. Скорее всего, сильно меньше чем мне, но путь я прохожу (или уже прошел?) примерно такой же. Неплохим математиком был еще в СССР.
В статье по этой ссылке ситуация не очень наглядная, поскольку формулы даны для единичных гиперсфер, т.е. с радиусом 1. При этом "описанный" гиперкуб имеет сторону (стороны) 2, т.е. его объем растет с ростом размерности. Уважаемый mr-pickles дает более наглядную и весьма перадоксальную картину, поскольку "описанный" гиперкуб не меняет объема. Мне очень понравилось.
Спасибо за ответ. Я немного погуглил, но пока алгоритмов основанных на представлении слов в виде матриц KxN, где K - количество букв в слове, а N - количество символов в базовом наборе символов (алфавите) не увидел. Конечно, кто-то это использует, потому что идея ну совсем естественная. При самом простом подходе матрица содержит K единиц, остальные нули, поэтому проблемы с обработкой не должно возникнуть. Если сравнивать слова одной длины, то метрика строится очень просто, так как при умножении "слова" на самое себя получается единичная матрица, и чем больше несовпадений букв в паре сравниваемых, тем больше нулей на диагонали результата. Белее-менее понятно, как поступить с опечатками или "похожими" буквами типа И и Й или I, l, 1. Непростой кажется процедура сравнения слов разной длины, но если с этим внятно разобраться, то получается очень простой переход к однокоренным словам, что, в свою очередь, тоже является популярной задачей.
Как раз вопрос к Вам как прикладнику. Откуда берутся данные, которые нужно интерполировать?
Вопрос, наверное скорее философский. По сути вы полиномами аппроксимируете некоторую функцию, которая известна по-точечно. При этом значения ее производных неизвесты совсем. Насколько важно при интерполяции "точно попадать" в значения самой функции? Ведь значительно проще с вычислительной точки зрения постоить "наилучшую" в каком-то смысле аппроксимацию, которая в заданные значения функции попадать будет "почти", но например будет настолько гладкой (С2, как минимум), насколько хочется.
Вопрос неспециалиста в данной теме, но интересующегося. В определении оригинального расстояния Левенштейта i и j - это длины слов V и W?
И еще вопрос ближе к математике. Если задан набор символов для всех возможных исследуемых слов, то каждое слово можно задать матрицей, в которой почти все элементы нули, а единицы стоят на местах, соответствующих номеру символа в базовом наборе и месту символа в слове. Скорее всего, это стандартный подход. Но в этом случае "близость" слов можно оценить матричными методами, в т.ч. с использованием сингулярного разложения. Существует ли такой метод?
Во всяком случае, в статье ранг тензора - это d.
Автор статьи, которую мы обсуждаем (надеюсь, мы этим занимаемся?) приводит пример как многомерный "тензор" можно представить в виде двумерной матрицы, просто часть индексов обозвав"строчные", а часть - "столбцовые". Можно пойти дальше и все индексы обозвать как "столбцовые" и получить вектор-столбец, элементы которого (возможно) расположенны в памяти компьютера даже в том же поряке. Проблема в том, что с этим вектором, как и с большой 2-мерной матрицей ничего путного нельзя сделать, поэтому приходится искать другие пути. Вот народ и хочет разобраться что к чему.
Вот и я о том же. Программисты Гугла для понтов назвали пакет TenzorFlow. И сбивают нормальных людей с толку.
Вопрос был чисто познавательный. Вы будете смеяться, но на мех-мате МГУ 40 лет назад в курсе линейной алгебры не было сингулярного разложения (как и многих других полезных разложений). На это справедливо обратил внимание г-н Оселедец, последователем которого является автор обсуждаемой статьи. Когда я году этак в 1987-м начал заниматься численными расчетами, я с удивлением обнаружил, что существует много эффективных методов обработки матриц, позволяющих делать такие расчеты в принципе (на компьютере PC AT). А студентам про это не рассказывали. Так что тема для меня ностальгическая.