Неуравновешенный человек: Неуравновешенный человек: кто это? |

Содержание

Значение словосочетания НЕУРАВНОВЕШЕННЫЙ ЧЕЛОВЕК. Что такое НЕУРАВНОВЕШЕННЫЙ ЧЕЛОВЕК?

НЕУРАВНОВЕ́ШЕННЫЙ, —ая, —ое; —шен, —шенна, —шенно. Не обладающий душевным равновесием, легко поддающийся настроению.

Все значения слова «неуравновешенный»

ЧЕЛОВЕ́К, -а, мн. лю́ди и (устар. и шутл.) челове́ки, м. (косвенные падежи мн. ч. челове́к, челове́кам, челове́ками, о челове́ках употр. только в сочетании с количественными словами). 1. Живое существо, обладающее мышлением, речью, способностью создавать орудия и пользоваться ими в процессе общественного труда.

Все значения слова «человек»
  • Людей с крайними проявлениями очень мало и, как правило, это психически неуравновешенные люди.

  • Обжёгшись на одной крайности, неуравновешенный человек бросается в другую, и так продолжается, покуда у него не иссякнут силы и он не поймёт, что пора начать думать наперёд.

  • – Нервно неуравновешенные люди, вроде вас, порой нуждаются в небольшом допинге.

  • (все предложения)

Значение словосочетания НЕУРАВНОВЕШЕННЫЙ ЧЕЛОВЕК. Что такое НЕУРАВНОВЕШЕННЫЙ ЧЕЛОВЕК?

НЕУРАВНОВЕ́ШЕННЫЙ, —ая, —ое; —шен, —шенна, —шенно. Не обладающий душевным равновесием, легко поддающийся настроению.

Все значения слова «неуравновешенный»

ЧЕЛОВЕ́К, -а, мн. лю́ди и (устар. и шутл.) челове́ки, м. (косвенные падежи мн. ч. челове́к, челове́кам, челове́ками, о челове́ках

употр. только в сочетании с количественными словами). 1. Живое существо, обладающее мышлением, речью, способностью создавать орудия и пользоваться ими в процессе общественного труда.

Все значения слова «человек»
  • Людей с крайними проявлениями очень мало и, как правило, это психически неуравновешенные люди.

  • Обжёгшись на одной крайности, неуравновешенный человек бросается в другую, и так продолжается, покуда у него не иссякнут силы и он не поймёт, что пора начать думать наперёд.

  • – Нервно неуравновешенные люди, вроде вас, порой нуждаются в небольшом допинге.

  • (все предложения)

Значение слова «неуравновешенный»

Лексическое значение: определение

Общий запас лексики (от греч. Lexikos) — это комплекс всех основных смысловых единиц одного языка. Лексическое значение слова раскрывает общепринятое представление о предмете, свойстве, действии, чувстве, абстрактном явлении, воздействии, событии и тому подобное. Иначе говоря, определяет, что обозначает данное понятие в массовом сознании. Как только неизвестное явление обретает ясность, конкретные признаки, либо возникает осознание объекта, люди присваивают ему название (звуко-буквенную оболочку), а точнее, лексическое значение. После этого оно попадает в словарь определений с трактовкой содержания.

Словари онлайн бесплатно — открывать для себя новое

Словечек и узкоспециализированных терминов в каждом языке так много, что знать все их интерпретации попросту нереально. В современном мире существует масса тематических справочников, энциклопедий, тезаурусов, глоссариев. Пробежимся по их разновидностям:

  • Толковые Найти значение слова вы сможете в толковом словаре русского языка. Каждая пояснительная «статья» толкователя трактует искомое понятие на родном языке, и рассматривает его употребление в контенте. (PS: Еще больше случаев словоупотребления, но без пояснений, вы прочитаете в Национальном корпусе русского языка.
    Это самая объемная база письменных и устных текстов родной речи.) Под авторством Даля В.И., Ожегова С.И., Ушакова Д.Н. выпущены наиболее известные в нашей стране тезаурусы с истолкованием семантики. Единственный их недостаток — издания старые, поэтому лексический состав не пополняется.
  • Энциклопедические В отличии от толковых, академические и энциклопедические онлайн-словари дают более полное, развернутое разъяснение смысла. Большие энциклопедические издания содержат информацию об исторических событиях, личностях, культурных аспектах, артефактах. Статьи энциклопедий повествуют о реалиях прошлого и расширяют кругозор. Они могут быть универсальными, либо тематичными, рассчитанными на конкретную аудиторию пользователей. К примеру, «Лексикон финансовых терминов», «Энциклопедия домоводства», «Философия. Энциклопедический глоссарий», «Энциклопедия моды и одежды», мультиязычная универсальная онлайн-энциклопедия «Википедия».
  • Отраслевые Эти глоссарии предназначены для специалистов конкретного профиля. Их цель объяснить профессиональные термины, толковое значение специфических понятий узкой сферы, отраслей науки, бизнеса, промышленности. Они издаются в формате словарика, терминологического справочника или научно-справочного пособия («Тезаурус по рекламе, маркетингу и PR», «Юридический справочник», «Терминология МЧС»).
  • Этимологические и заимствований Этимологический словарик — это лингвистическая энциклопедия. В нем вы прочитаете версии происхождения лексических значений, от чего образовалось слово (исконное, заимствованное), его морфемный состав, семасиология, время появления, исторические изменения, анализ. Лексикограф установит откуда лексика была заимствована, рассмотрит последующие семантические обогащения в группе родственных словоформ, а так же сферу функционирования. Даст варианты использования в разговоре. В качестве образца, этимологический и лексический разбор понятия «фамилия»: заимствованно из латинского (familia), где означало родовое гнездо, семью, домочадцев.
    С XVIII века используется в качестве второго личного имени (наследуемого). Входит в активный лексикон. Этимологический словарик также объясняет происхождение подтекста крылатых фраз, фразеологизмов. Давайте прокомментируем устойчивое выражение «подлинная правда». Оно трактуется как сущая правда, абсолютная истина. Не поверите, при этимологическом анализе выяснилось, эта идиома берет начало от способа средневековых пыток. Подсудимого били кнутом с завязанными на конце узлом, который назывался «линь». Под линью человек выдавал все начистоту, под-линную правду.
  • Глоссарии устаревшей лексики Чем отличаются архаизмы от историзмов? Какие-то предметы последовательно выпадают из обихода. А следом выходят из употребления лексические определения единиц. Словечки, которые описывают исчезнувшие из жизни явления и предметы, относят к историзмам. Примеры историзмов: камзол, мушкет, царь, хан, баклуши, политрук, приказчик, мошна, кокошник, халдей, волость и прочие.
    Узнать какое значение имеют слова, которые больше не употребляется в устной речи, вам удастся из сборников устаревших фраз. Архаизмамы — это словечки, которые сохранили суть, изменив терминологию: пиит — поэт, чело — лоб, целковый — рубль, заморский — иностранный, фортеция — крепость, земский — общегосударственный, цвибак — бисквитный коржик, печенье. Иначе говоря их заместили синонимы, более актуальные в современной действительности. В эту категорию попали старославянизмы — лексика из старославянского, близкая к русскому: град (старосл.) — город (рус.), чадо — дитя, врата — ворота, персты — пальцы, уста — губы, влачиться — волочить ноги. Архаизмы встречаются в обороте писателей, поэтов, в псевдоисторических и фэнтези фильмах.
  • Переводческие, иностранные Двуязычные словари для перевода текстов и слов с одного языка на другой. Англо-русский, испанский, немецкий, французский и прочие.
  • Фразеологический сборник Фразеологизмы — это лексически устойчивые обороты, с нечленимой структурой и определенным подтекстом. К ним относятся поговорки, пословицы, идиомы, крылатые выражения, афоризмы. Некоторые словосочетания перекочевали из легенд и мифов. Они придают литературному слогу художественную выразительность. Фразеологические обороты обычно употребляют в переносном смысле. Замена какого-либо компонента, перестановка или разрыв словосочетания приводят к речевой ошибке, нераспознанному подтексту фразы, искажению сути при переводе на другие языки. Найдите переносное значение подобных выражений в фразеологическом словарике. Примеры фразеологизмов: «На седьмом небе», «Комар носа не подточит», «Голубая кровь», «Адвокат Дьявола», «Сжечь мосты», «Секрет Полишинеля», «Как в воду глядел», «Пыль в глаза пускать», «Работать спустя рукава», «Дамоклов меч», «Дары данайцев», «Палка о двух концах», «Яблоко раздора», «Нагреть руки», «Сизифов труд», «Лезть на стенку», «Держать ухо востро», «Метать бисер перед свиньями», «С гулькин нос», «Стреляный воробей», «Авгиевы конюшни», «Калиф на час», «Ломать голову», «Души не чаять», «Ушами хлопать», «Ахиллесова пята», «Собаку съел», «Как с гуся вода», «Ухватиться за соломинку», «Строить воздушные замки», «Быть в тренде», «Жить как сыр в масле».
  • Определение неологизмов Языковые изменения стимулирует динамичная жизнь. Человечество стремятся к развитию, упрощению быта, инновациям, а это способствует появлению новых вещей, техники. Неологизмы — лексические выражения незнакомых предметов, новых реалий в жизни людей, появившихся понятий, явлений. К примеру, что означает «бариста» — это профессия кофевара; профессионала по приготовлению кофе, который разбирается в сортах кофейных зерен, умеет красиво оформить дымящиеся чашечки с напитком перед подачей клиенту. Каждое словцо когда-то было неологизмом, пока не стало общеупотребительным, и не вошло в активный словарный состав общелитературного языка. Многие из них исчезают, даже не попав в активное употребление. Неологизмы бывают словообразовательными, то есть абсолютно новообразованными (в том числе от англицизмов), и семантическими. К семантическим неологизмам относятся уже известные лексические понятия, наделенные свежим содержанием, например «пират» — не только морской корсар, но и нарушитель авторских прав, пользователь торрент-ресурсов. Вот лишь некоторые случаи словообразовательных неологизмов: лайфхак, мем, загуглить, флэшмоб, кастинг-директор, пре-продакшн, копирайтинг, френдить, пропиарить, манимейкер, скринить, фрилансинг, хедлайнер, блогер, дауншифтинг, фейковый, брендализм. Еще вариант, «копираст» — владелец контента или ярый сторонник интеллектуальных прав.
  • Прочие 177+ Кроме перечисленных, есть тезаурусы: лингвистические, по различным областям языкознания; диалектные; лингвострановедческие; грамматические; лингвистических терминов; эпонимов; расшифровки сокращений; лексикон туриста; сленга. Школьникам пригодятся лексические словарники с синонимами, антонимами, омонимами, паронимами и учебные: орфографический, по пунктуации, словообразовательный, морфемный. Орфоэпический справочник для постановки ударений и правильного литературного произношения (фонетика). В топонимических словарях-справочниках содержатся географические сведения по регионам и названия. В антропонимических — данные о собственных именах, фамилиях, прозвищах.

Толкование слов онлайн: кратчайший путь к знаниям

Проще изъясняться, конкретно и более ёмко выражать мысли, оживить свою речь, — все это осуществимо с расширенным словарным запасом. С помощью ресурса How to all вы определите значение слов онлайн, подберете родственные синонимы и пополните свою лексику. Последний пункт легко восполнить чтением художественной литературы. Вы станете более эрудированным интересным собеседником и поддержите разговор на разнообразные темы. Литераторам и писателям для разогрева внутреннего генератора идей полезно будет узнать, что означают слова, предположим, эпохи Средневековья или из философского глоссария.

Глобализация берет свое. Это сказывается на письменной речи. Стало модным смешанное написание кириллицей и латиницей, без транслитерации: SPA-салон, fashion-индустрия, GPS-навигатор, Hi-Fi или High End акустика, Hi-Tech электроника. Чтобы корректно интерпретировать содержание слов-гибридов, переключайтесь между языковыми раскладками клавиатуры. Пусть ваша речь ломает стереотипы. Тексты волнуют чувства, проливаются эликсиром на душу и не имеют срока давности. Удачи в творческих экспериментах!

Проект how-to-all.com развивается и пополняется современными словарями с лексикой реального времени. Следите за обновлениями. Этот сайт помогает говорить и писать по-русски правильно. Расскажите о нас всем, кто учится в универе, школе, готовится к сдаче ЕГЭ, пишет тексты, изучает русский язык.

неуравновешенных людей — английское определение, грамматика, произношение, синонимы и примеры

Непроизвольное усмирение могло быть применено только к психически неуравновешенным людям , представляющим опасность для окружающих. UN-2 UN-2

Таким образом, мы должны понимать, что это неуравновешенный человек . mid.ru mid.ru

Например, в феврале № психически неуравновешенный человек марокканского происхождения, к большому сожалению, убил испанку. MultiUn MultiUn

неуравновешенный человек неустойчив, непостоянен, ненадежен.jw2019 jw2019

Нет, это было бы преимуществом … психически неуравновешенного человека opensubtitles2 opensubtitles2

Всего психически неуравновешенных человека покончили жизнь самоубийством человека. jw2019 jw2019

В феврале 2000 года, например, психически неуравновешенного человека марокканского происхождения, к большому сожалению, убил испанку. UN-2 UN-2

Собственная жизнь Шлейнштейна имела некоторое сходство с жизнью Каспара Хаузера, и его собственная неуравновешенная личность часто проявлялась на съемочной площадке.WikiMatrix WikiMatrix

Часто дикое и неконтролируемое поведение психически неуравновешенных людей происходит из-за одержимости этими невидимыми приспешниками сатаны. jw2019 jw2019

И никакие цивилизованные люди во вселенной, включая примитивные общества Федерации, не потворствуют самоубийству психически неуравновешенного человека . OpenSubtitles2018.v3 OpenSubtitles2018.v3

Однако это не большинство — не более психически неуравновешенных людей составляют большинство в любой социальной группе.jw2019 jw2019

(Матфея 26: 47-55, 69-75; Иоанна 18:10, 11). Кто-то может сказать, что Петр был пугающим, неуравновешенным человеком , недостойным особых привилегий. jw2019 jw2019

Вы можете не относиться к моим тестам всерьез, но студенты … смутное мнение о вас, ваши ответы на мои … психологические оценки отражают … неуравновешенную личность . OpenSubtitles2018.v3 OpenSubtitles2018.v3

Снова и снова психически неуравновешенных человека выздоравливали, получая от квалифицированных учителей Библии надлежащее руководство и наставления, основанные на содержании этой Божественной Книги.jw2019 jw2019

Полиция пыталась поддерживать порядок, но со временем действия группы разбудили неуравновешенного человека , который сначала разбил окна зала, а затем поджег его, в результате чего был нанесен ущерб на сумму 4000 долларов. jw2019 jw2019

Мы должны иметь ясную голову в нашем анализе и осознавать, что нападения 11 сентября не были безумным актом, не были преступлением психически неуравновешенного человека (продолжительность подготовки и сложность говорят в этом отношении).Гига-френ Гига-френ

В 10:34 9 февраля 2009 года Фрэнк Девлин написал: «Я выражаю соболезнования всем семьям, которые страдают из-за этого случайного акта насилия. Жалко, что невиновным приходится платить за последствия, исходящие от психически неуравновешенных людей . Обычное сканирование Обычное сканирование

Среди них есть статья Лусы о критике со стороны бывшего посла Португалии в Индонезии и члена Европейского парламента Аны Гомеш в адрес майора Альфредо Рейнадо, по словам ее «преступника и неуравновешенного человека », к которому были обращены власти Тимора, Австралии и ООН. «Слишком умиротворен» в обращении и, следовательно, виноват.gv2019 gv2019

Боятся ли они произвести негативное впечатление, что они профессионально перегружены или неуравновешенны в своей личной жизни? Гига-френ Гига-френ

таких завистников — это неуравновешенных . jw2019 jw2019

Он также утверждает, что г-н ЛеБлан использовал несбалансированных своих личных знаний . Гига-френ Гига-френ

15:28). Прибыльная медитация удерживает человека от , дающего несбалансированных, бессмысленных ответов.jw2019 jw2019

Но их сочинения и утверждения были достаточно истерическими и ненавистными, чтобы спровоцировать человека с неуравновешенным умом . ProjectSyndicate ProjectSyndicate

личного, стресса участники связали с неуравновешенными, ситуациями и трудностями в профессиональной жизни, перегрузкой на работе и отсутствием профессии. scielo-abstract scielo-abstract

Разница между уравновешенными и несбалансированными силами (со сравнительной таблицей)

Последнее обновление: , автор: Surbhi S

Уравновешенная сила подразумевает силу, которая не меняет состояние движения объекта.Напротив, неуравновешенных сил — это сила, которая приводит к изменению состояния движения объекта.

Вы когда-нибудь замечали, что всякий раз, когда вы хотите переместить объект, его либо толкают, либо тянут? В физике движение (толкание или притяжение) объекта называется силой, возникающей из-за взаимодействия одного объекта с другим. Он способен изменять величину скорости объекта, направление движения и даже форму и размер объекта.Сила происходит парами; они могут быть сбалансированными или несбалансированными.

Если мы посмотрим вокруг себя, то можем найти множество примеров проявления этих двух сил. В этой статье сделана попытка прояснить основные различия между сбалансированными и неуравновешенными силами.

Содержание: сбалансированные силы против несбалансированных сил

  1. Таблица сравнения
  2. Определение
  3. Ключевые отличия
  4. Заключение

Сравнительная таблица

Основа для сравнения Уравновешенные силы Несбалансированные силы
Значение Когда силы, действующие на объект, имеют одинаковый размер, но в противоположном направлении, тогда силы известны как уравновешенные силы. Когда силы, приложенные к объекту, неодинаковы по размеру, эти силы известны как неуравновешенные силы.
Величина Равно Не равно
Направление Противоположное То же или противоположное.
Канцелярские товары Отдыхает. Двигается в направлении большей силы.
Движущийся объект Продолжает двигаться с той же скоростью. Меняет скорость и направление.
Сила нетто Ноль Ненулевой

Определение сбалансированных сил

Сбалансированные силы, как следует из названия, — это силы, которые уравновешивают друг друга при воздействии на объект, заставляя объект сохранять равновесие и не ускоряться. Если силы, приложенные к объекту, равны по величине, но противоположны по направлению, считается, что силы уравновешены.

Когда уравновешенные силы применяются к неподвижному объекту, он остается неподвижным, но когда они прикладываются к движущемуся объекту, он продолжает двигаться с постоянной скоростью и в том же направлении. Чистая сила (то есть общая или результирующая сила, действующая на объект) будет равна нулю, потому что силы действуют в противоположном направлении, что сводит на нет друг друга.

Определение несбалансированных сил

Сила, которая не уравновешивается силой равной величины и диаметрально противоположного направления, приводящая к нарушению равновесия объекта и в конечном итоге ускоряющаяся, известна как несбалансированные силы.Величина прилагаемых сил неодинакова, а также направление приложения силы может быть одинаковым или различным.

При неуравновешенных силах результирующая сила будет отличной от нуля, и объект будет двигаться в направлении большей силы. Таким образом, это вызывает ускорение в объекте, т.е. неподвижные объекты движутся, движущиеся объекты ускоряются, замедляются, останавливаются или меняют направление своего движения.

Ключевые различия между уравновешенными и несбалансированными силами

Пункты, представленные вам ниже, существенны в том, что касается разницы между сбалансированными и несбалансированными силами:

  1. Когда отдельные силы, приложенные к объекту, имеют одинаковую величину и противоположное направление, тогда эти силы известны как уравновешенные силы.С другой стороны, когда силы, действующие на объект, имеют разные размеры, эти силы известны как неуравновешенные силы.
  2. В уравновешенных силах величина двух сил равна, тогда как в случае неуравновешенных сил величина двух сил неодинакова.
  3. В уравновешенных силах две отдельные силы действуют в противоположном направлении. И наоборот, в неуравновешенных силах отдельные силы действуют либо в том же, либо в противоположном направлении.
  4. Уравновешенные силы заставляют неподвижный объект оставаться в покое.В отличие от этого, неуравновешенные силы заставляют неподвижный объект двигаться в направлении большей силы.
  5. Если объект находится в движении и к нему приложены уравновешенные силы, то объект будет продолжать двигаться с той же скоростью. Напротив, если к движущемуся объекту приложить неуравновешенные силы, он замедлится, ускорится, остановится или его направление изменится.
  6. Если силы, действующие на объект, уравновешены, то результирующая сила будет равна нулю, поскольку две отдельные силы компенсируют друг друга и не приведут к изменению его состояния покоя / движения.
  7. В отличие от этого, если приложенная к объекту сила неуравновешена, то результирующая сила будет отличной от нуля, что приведет к изменению его состояния.

Заключение

Подводя итог, нам всегда требуется неуравновешенная сила, а не сбалансированная, чтобы изменить величину или направление движения объекта, которое будет продолжать существовать до тех пор, пока сила не будет приложена к объекту. Хотя, когда эта сила снимается, объект до тех пор будет оставаться в движении с полученной им скоростью.

Если вы хотите определить, какая сила является уравновешенной или несбалансированной, прежде всего, вам необходимо определить, какие силы действуют на объект и в каком направлении. Если силы уравновешивают друг друга, тогда силы уравновешены, а когда нет, то это случай несбалансированных сил.

Работа с несбалансированными данными в машинном обучении

В моем последнем посте, где я поделился кодом, который я использовал для создания примера анализа, который будет сопровождать мой веб-семинар по построению значимых моделей для прогнозирования заболеваний, я упомянул, что рекомендуется учитывать избыточную или недостаточную выборку, когда у вас есть несбалансированные наборы данных.Поскольку мое внимание на этом вебинаре было сосредоточено на оценке производительности модели, я не хотел добавлять дополнительный уровень сложности и поэтому не обсуждал далее, как конкретно работать с несбалансированными данными.

Но поскольку я получил несколько вопросов по этому поводу, я подумал, что было бы целесообразно более подробно объяснить методы избыточной и недостаточной выборки и показать, как вы можете очень легко реализовать их с помощью каретки .

Несбалансированные данные

В этом контексте несбалансированные данные относятся к проблемам классификации, когда у нас есть неравные экземпляры для разных классов.Несбалансированные данные на самом деле очень распространены в целом, но особенно часто при работе с данными о заболеваниях, когда у нас обычно больше здоровых контрольных выборок, чем случаев заболеваний. Еще более серьезный дисбаланс наблюдается при обнаружении мошенничества, когда, например, большинство видов использования кредитных карт приемлемы, и лишь очень немногие из них будут мошенническими. В примере, который я использовал для своего вебинара, набора данных о раке груди, у нас было примерно в два раза больше образцов доброкачественных, чем злокачественных.

  ## доброкачественный злокачественный
## 458 241
  

Почему несбалансированные данные являются проблемой машинного обучения?

Большинство алгоритмов классификации машинного обучения чувствительны к разбалансировке классов предикторов.Давайте рассмотрим еще более экстремальный пример, чем наш набор данных о раке груди: предположим, что у нас было 10 образцов злокачественных и 90 доброкачественных. Модель машинного обучения, которая была обучена и протестирована на таком наборе данных, теперь может прогнозировать «доброкачественность» для всех выборок и по-прежнему обеспечивать очень высокую точность. Несбалансированный набор данных смещает модель прогнозирования в сторону более распространенного класса!

Как сбалансировать данные для моделирования

Основные теоретические концепции избыточной и недостаточной выборки очень просты:

  • При недостаточной выборке мы случайным образом выбираем подмножество выборок из класса с большим количеством экземпляров, чтобы соответствовать количеству выборок, поступающих из каждого класса.В нашем примере мы случайным образом выберем 241 из 458 доброкачественных случаев. Главный недостаток недостаточной выборки состоит в том, что мы теряем потенциально релевантную информацию из оставленных выборок.

  • При передискретизации мы случайным образом дублируем выборки из класса с меньшим количеством экземпляров или генерируем дополнительные экземпляры на основе имеющихся данных, чтобы соответствовать количеству выборок в каждом классе. Хотя мы избегаем потери информации с помощью этого подхода, мы также рискуем переобучить нашу модель, поскольку мы с большей вероятностью получим одни и те же образцы в обучении и в тестовых данных, т.е.е. данные тестирования больше не независимы от данных обучения. Это привело бы к переоценке производительности и обобщаемости нашей модели.

В действительности, однако, мы не должны просто выполнять избыточную или недостаточную выборку наших обучающих данных, а затем запускать модель. Нам необходимо учитывать перекрестную проверку и выполнять избыточную или недостаточную выборку для каждой складки независимо, чтобы получить честную оценку производительности модели!

Моделирование исходных несбалансированных данных

Вот та же модель, которую я использовал в примере своего вебинара: я случайным образом разделяю данные на обучающие и тестовые наборы (стратифицированные по классам) и выполняю моделирование случайного леса с повторной перекрестной проверкой 10 x 10.Затем на тестовом наборе измеряется окончательная производительность модели.

  набор. Семян (42)
index <- createDataPartition (bc_data $ classes, p = 0.7, list = FALSE)
train_data <- bc_data [индекс,]
test_data <- bc_data [-index,]
  
  набор. Семян (42)
model_rf <- caret :: train (классы ~.,
                         data = train_data,
                         method = "rf",
                         preProcess = c ("масштаб", "центр"),
                         trControl = trainControl (method = "duplicatecv",
                                                  число = 10,
                                                  повторы = 10,
                                                  verboseIter = FALSE))
  

Обучение на несбалансированных данных.

В этом сообщении блога я рассмотрю ряд соображений и методов работы с несбалансированными данными при обучении модели машинного обучения. Сообщение в блоге будет в значительной степени полагаться на пакет участников sklearn, называемый imbalanced-learn, для реализации обсуждаемых методов.

Обучение модели машинного обучения на несбалансированном наборе данных может создать уникальные проблемы для проблемы обучения. Несбалансированные данные обычно относятся к проблеме классификации, когда количество наблюдений на класс распределяется неравномерно; часто у вас будет большой объем данных / наблюдений для одного класса (называемый классом большинства ) и гораздо меньше наблюдений для одного или нескольких других классов (называемых классами меньшинства ).Например, предположим, что вы создаете классификатор, чтобы классифицировать транзакцию по кредитной карте как мошенническую или аутентичную - у вас, вероятно, будет 10 000 аутентичных транзакций на каждую 1 мошенническую транзакцию, что является серьезным дисбалансом!

Чтобы понять проблемы, которые создает дисбаланс классов, давайте рассмотрим два распространенных способа обучения модели: логические правила на основе дерева, разработанные в соответствии с некоторым критерием разделения, и параметризованные модели, обновляемые с помощью градиентного спуска.

При построении модели на основе дерева (например, дерева решений) наша цель состоит в том, чтобы найти логические правила, которые способны взять полный набор данных и разделить наблюдения на их различные классы.Другими словами, мы хотели бы, чтобы каждое разбиение в дереве увеличивало чистоту наблюдений, чтобы данные фильтровались в однородные группы. Если у нас присутствует класс большинства, верхняя часть дерева решений, вероятно, научится разделению, которое разделяет класс большинства на чистые группы за счет правил обучения, которые разделяют класс меньшинства.

Для более конкретного примера, вот дерево решений, обученное на наборе данных о качестве вина, используемом в качестве примера позже в этом посте.Значение поля представляет количество наблюдений для каждого класса в данном узле.

Точно так же, если мы обновляем параметризованную модель с помощью градиентного спуска, чтобы минимизировать нашу функцию потерь, мы потратим большую часть наших обновлений на изменение значений параметров в том направлении, которое позволяет правильно классифицировать основной класс. Другими словами, многие модели машинного обучения подвержены частотному смещению , в котором они уделяют больше внимания обучению на основе наблюдений данных, которые происходят чаще.

Стоит отметить, что не все наборы данных одинаково подвержены дисбалансу классов. Как правило, для простых задач классификации, в которых есть четкое разделение данных, дисбаланс классов не препятствует способности модели к эффективному обучению. Однако наборы данных, которые по своей природе труднее изучать, усугубляют проблему обучения, когда вносится дисбаланс классов.

Метрики

При работе с несбалансированными данными стандартные показатели классификации неадекватно отражают

Обучение на основе несбалансированных классов - Наука о данных Кремниевой долины

25 августа 2016

Если вы только что закончили курс машинного обучения, скорее всего, большинство используемых вами наборов данных были довольно простыми.Среди прочего, когда вы строили классификаторы, классы примеров были сбалансированными , то есть было примерно одинаковое количество примеров каждого класса. Инструкторы обычно используют очищенные наборы данных, чтобы сосредоточиться на обучении определенным алгоритмам или методам, не отвлекаясь на другие вопросы. Обычно вам показывают примеры, подобные приведенному ниже, в двух измерениях, с точками, представляющими примеры, и разными цветами (или формами) точек, представляющих класс:

Цель алгоритма классификации состоит в том, чтобы попытаться изучить разделитель (классификатор), который может различать два.Есть много способов сделать это на основе различных математических, статистических или геометрических предположений:

Но когда вы начинаете смотреть на настоящие, неочищенные данные, первое, что вы замечаете, это то, что они намного шумнее и несбалансированны . Диаграммы рассеяния реальных данных часто выглядят примерно так:

Основная проблема в том, что эти классы несбалансированы: количество красных точек значительно превосходит количество синих.

Исследования несбалансированных классов часто считают несбалансированными как класс меньшинства от 10% до 20%.На самом деле наборы данных могут стать гораздо более несбалансированными. —Вот несколько примеров:

  1. Около 2% счетов кредитных карт подвергаются мошенничеству в год 1 . (Большинство доменов обнаружения мошенничества сильно несбалансированы.)
  2. Медицинский скрининг на какое-либо заболевание обычно проводится среди большого количества людей без этого заболевания, чтобы выявить небольшое меньшинство с ним (например, распространенность ВИЧ в США составляет ~ 0,4%).
  3. Отказы дисковых накопителей составляют примерно ~ 1% в год.
  4. Коэффициент конверсии онлайн-рекламы оценивается в диапазоне от 10 -3 до 10 -6 .
  5. Уровень брака на заводе обычно составляет около 0,1%.

Многие из этих доменов несбалансированы, потому что они представляют собой то, что я называю иголкой в ​​стоге сена , где классификаторы машинного обучения используются для сортировки огромных популяций отрицательных (неинтересных) случаев, чтобы найти небольшое количество положительных (интересных, тревожных). достойные) случаи.

Когда вы столкнетесь с такими проблемами, у вас обязательно возникнут трудности с их решением с помощью стандартных алгоритмов. Обычные алгоритмы часто склоняются к классу большинства, потому что их функции потерь пытаются оптимизировать такие величины, как частота ошибок, не принимая во внимание распределение данных 2 . В худшем случае примеры меньшинства рассматриваются как выбросы из класса большинства и игнорируются. Алгоритм обучения просто генерирует тривиальный классификатор, который классифицирует каждый пример как класс большинства.

Это может показаться патологическим поведением, но на самом деле это не так. Действительно, если ваша цель - максимизировать простую точность (или, что то же самое, минимизировать частоту ошибок), это вполне приемлемое решение. Но если мы предположим, что примеры редких классов гораздо важнее для классификации, тогда мы должны быть более осторожными и более изощренными в отношении атаки на проблему.

Если вы столкнулись с подобными проблемами и хотите получить практический совет по их решению, читайте дальше.

Примечание. Цель этого сообщения в блоге - дать понимание и конкретные советы о том, как решать такие проблемы.Однако это не руководство по программированию, которое проведет вас построчно по коду. У меня есть записные книжки Jupyter (также ссылка на которые приведена в конце сообщения), полезные для экспериментов с этими идеями, но в этом сообщении в блоге будут объяснены некоторые фундаментальные идеи и принципы.

Обработка несбалансированных данных

Обучение на основе несбалансированных данных активно изучается в области машинного обучения около двух десятилетий. Это стало темой многих статей, семинаров, специальных сессий и диссертаций (недавний обзор насчитывает около 220 ссылок).Было испробовано огромное количество методов с разными результатами и немногими четкими ответами. Специалисты по обработке данных, впервые столкнувшиеся с этой проблемой, часто спрашивают Что мне делать, если мои данные несбалансированы? На этот вопрос нет однозначного ответа по той же причине, что и на общий вопрос. Какой алгоритм обучения лучше? У нет однозначного ответа: это зависит от данных.

Тем не менее, вот приблизительный набросок полезных подходов. Они перечислены приблизительно в порядке затрат:

  • Ничего не делать.Иногда везет и ничего не нужно делать. Вы можете тренироваться в так называемом естественном распределении (или стратифицированном ), и иногда он работает без необходимости модификации.
  • Уравновесить обучающий набор каким-либо образом:
    • Превышение выборки класса меньшинства.
    • Уменьшить выборку класса большинства.
    • Синтезировать новые классы меньшинств.
  • Выбросьте примеры меньшинства и переключитесь на платформу обнаружения аномалий.
  • На уровне алгоритма или после него:
    • Отрегулируйте вес класса (стоимость ошибочной классификации).
    • Настройте порог принятия решения.
    • Изменить существующий алгоритм, чтобы он был более чувствительным к редким классам.
  • Создайте совершенно новый алгоритм для работы с несбалансированными данными.

Отступление: что можно и чего нельзя делать при оценке

Во-первых, небольшой объезд. Прежде чем говорить о том, как хорошо обучить классификатор с несбалансированными данными, мы должны обсудить, как правильно его оценивать. Это невозможно переоценить. Вы можете добиться прогресса, только если измеряете правильные вещи.

  1. Не используйте точность (или частоту ошибок) для оценки своего классификатора! С этим связаны две существенные проблемы. Точность применяет наивный порог 0,50 для выбора между классами, и это обычно неверно, когда классы несбалансированы. Во-вторых, точность классификации основана на простом подсчете ошибок, и вы должны знать больше. Вы должны знать, какие классы и где путают (верхний предел оценок, нижний предел, повсюду?). Если вы не понимаете этих моментов, возможно, будет полезно прочитать «Основы оценки классификатора», часть 2.Вы должны визуализировать производительность классификатора с помощью кривой ROC, кривой точности-отзыва, кривой подъема или кривой прибыли (прироста).

    Кривая ROC

  2. Не получайте жесткие классификации (ярлыки) из классификатора (через балл 3 или прогнозируют ). Вместо этого получите оценки вероятности с помощью proba или pred_proba .
  3. Когда вы получаете оценки вероятности, не используйте слепо порог принятия решения 0,50 для разделения классов.Посмотрите на кривые производительности и решите для себя, какой порог использовать (подробнее об этом см. В следующем разделе). В ранних статьях было сделано много ошибок, потому что исследователи наивно использовали 0,5 в качестве порогового значения.
  4. Независимо от того, что вы делаете для обучения, всегда проверяйте естественное (стратифицированное) распределение, с которым будет работать ваш классификатор. См. sklearn.cross_validation.StratifiedKFold .
  5. Можно обойтись и без оценок вероятностей, но если они вам нужны, используйте калибровку (см. sklearn.калибровка .CalibratedClassifierCV )

Двумерные графики в первом маркере выше всегда более информативны, чем одиночное число, но если вам нужен однозначный показатель , один из них предпочтительнее для точности:

  1. Площадь под кривой ROC (AUC) - хороший общий статистический показатель. Он равен вероятности того, что случайный положительный пример будет оценен выше случайного отрицательного примера.
  2. Оценка F1 - это среднее гармоническое значение точности и запоминания.Он обычно используется при обработке текста, когда ищется агрегированный показатель.
  3. Каппа Коэна - это оценочная статистика, которая учитывает, какое согласие можно ожидать случайно.

Передискретизация и недостаточная выборка

Самые простые подходы требуют небольшого изменения этапов обработки и просто включают корректировку наборов примеров до тех пор, пока они не будут сбалансированы. Передискретизация случайным образом воспроизводит экземпляры меньшинств для увеличения их популяции. Недостаточная выборка случайным образом понижает выборку для большинства классов.Некоторые специалисты по данным (наивно) думают, что передискретизация лучше, потому что она приводит к большему количеству данных, тогда как недостаточная выборка отбрасывает данные. Но имейте в виду, что репликация данных имеет свои последствия - поскольку она приводит к дублированию данных, кажется, что переменные имеют меньшую дисперсию, чем они. Положительным следствием является то, что он дублирует количество ошибок: если классификатор делает ложноотрицательную ошибку в исходном наборе данных меньшинства, и этот набор данных реплицируется пять раз, классификатор сделает шесть ошибок в новом наборе.И наоборот, недостаточная выборка может заставить независимые переменные выглядеть так, как будто они имеют более высокую дисперсию, чем они есть.

Из-за всего этого литература по машинному обучению показывает смешанные результаты с передискретизацией, недостаточной выборкой и использованием естественных распределений.

Большинство пакетов машинного обучения могут выполнять простую настройку выборки. Пакет R unbalanced реализует ряд методов выборки, специфичных для несбалансированных наборов данных, и scikit-learn.cross_validation имеет базовые алгоритмы выборки.

Байесовский аргумент Уоллеса и др.

Возможно, лучший теоретический аргумент - и практический совет - в пользу классового дисбаланса был выдвинут в статье Class Disbalance, Redux , Уоллеса, Смолла, Бродли и Трикалиноса 4 . Они выступают за недостаточную выборку для большинства. Их аргументы являются математическими и исчерпывающими, но здесь я приведу только пример, который они используют, чтобы доказать свою точку зрения.

Они утверждают, что два класса должны различаться в хвосте некоторого распределения некоторой объясняющей переменной.Предположим, у вас есть два класса с одной зависимой переменной x . Каждый класс порождается гауссианом со стандартным отклонением 1. Среднее значение класса 1 равно 1, а среднее значение класса 2 равно 2. Мы условно назовем класс 2 классом большинства. Выглядят они так:

Учитывая значение x , какой порог вы бы использовали, чтобы определить, из какого класса оно произошло? Должно быть ясно, что лучшая разделительная линия между ними находится в их средней точке, x = 1.5, показанный вертикальной линией: если новый пример x попадает под 1,5, это, вероятно, класс 1, иначе это класс 2. Изучая примеры, мы надеемся, что ограничение дискриминации на 1,5 - это то, что мы получим, и если классы равномерно сбалансированы, это примерно то, что мы должны получить. Точки на оси x показывают образцы, созданные из каждого распределения.

Но мы сказали, что класс 1 - это класс меньшинства, поэтому предположим, что у нас есть 10 образцов из него и 50 образцов из класса 2.Вероятно, мы узнаем смещенную разделительную линию, например:

Мы можем добиться большего, уменьшив выборку класса большинства до соответствия классу меньшинства. Проблема в том, что разделительные линии, которые мы узнаем, будут иметь высокую изменчивость (потому что образцы меньше), как показано здесь (показаны десять образцов, в результате получается десять вертикальных линий):

Понимание параметров LightGBM (и их настройки)

Я уже давно использую lightGBM.Это был мой алгоритм решения большинства проблем с табличными данными. Список замечательных функций длинный, и я предлагаю вам взглянуть, если вы еще этого не сделали.

Но мне всегда было интересно понять, какие параметры имеют наибольшее влияние на производительность и как мне настроить параметры lightGBM, чтобы получить от этого максимальную отдачу.

Я решил, что мне нужно провести небольшое исследование, больше узнать о параметрах LightGBM… и поделиться своим опытом.

Конкретно I:

По мере того, как я делал это, я получил гораздо больше знаний о параметрах lightGBM.Надеюсь, что после прочтения этой статьи вы сможете ответить на следующие вопросы:

  • Какие методы повышения градиента реализованы в LightGBM и в чем их отличия?
  • Какие параметры в целом важны?
  • Какие параметры регуляризации необходимо настроить?
  • Как настроить параметры lightGBM в Python?

Методы усиления градиента

С LightGBM вы можете запускать различные типы методов повышения градиента.У вас есть: GBDT, DART и GOSS, которые можно указать с помощью параметра boosting .

В следующих разделах я объясню и сравню эти методы друг с другом.

lgbm gbdt (деревья решений с градиентным усилением)

Этот метод представляет собой традиционное дерево решений градиентного усиления, которое было впервые предложено в этой статье и является алгоритмом, лежащим в основе некоторых замечательных библиотек, таких как XGBoost и pGBRT.

В наши дни gbdt широко используется из-за его точности, эффективности и стабильности.Вы, наверное, знаете, что gbdt представляет собой ансамблевую модель деревьев решений, но что именно это означает?


СВЯЗАННЫЕ С
Общие сведения об отсечении градиента (и как это может исправить проблему разрывающихся градиентов)


Позвольте мне кратко изложить суть.

Он основан на трех важных принципах:

  • Слабые ученики (деревья решений)
  • Оптимизация градиента
  • Техника усиления

Итак, в методе gbdt у нас есть много деревьев решений (слабые ученики).Эти деревья строятся последовательно:

  • первое дерево изучает, как соответствовать целевой переменной
  • второе дерево изучает, как соответствовать остатку (разнице) между предсказаниями первого дерева и основной истиной
  • Третье дерево учится, как соответствовать остаткам второе дерево и так далее.

Все эти деревья обучаются путем распространения градиентов ошибок по всей системе.

Главный недостаток gbdt состоит в том, что поиск лучших точек разделения в каждом узле дерева требует много времени и памяти, и другие методы повышения уровня пытаются решить эту проблему.

Повышение градиента дротика

В этой выдающейся статье вы можете узнать все о повышении градиента DART, которое представляет собой метод, использующий выпадение, стандартный в нейронных сетях, для улучшения регуляризации модели и решения некоторых других менее очевидных проблем.

А именно, gbdt страдает излишней специализацией, что означает, что деревья, добавленные на более поздних итерациях, имеют тенденцию влиять на прогнозирование только нескольких экземпляров и вносить незначительный вклад в оставшиеся экземпляры.Добавление исключения затрудняет специализацию деревьев на более поздних итерациях на этих нескольких выборках и, следовательно, повышает производительность.

lgbm goss (односторонняя выборка на основе градиента)

Фактически, наиболее важной причиной для наименования этого метода lightgbm является использование метода Госса, основанного на этой статье. Goss - это более новая и легкая реализация gbdt (отсюда «легкий» gbm).

Стандартный gbdt надежен, но недостаточно быстр для больших наборов данных.Следовательно, goss предлагает метод выборки, основанный на градиенте, чтобы избежать поиска по всему пространству поиска. Мы знаем, что для каждого экземпляра данных, когда градиент мал, это означает, что данные не о чем беспокоятся, а когда градиент большой, их следует повторно обучать. Итак, у нас есть двухсторонних здесь, экземпляры данных с большим и малым градиентами. Таким образом, goss сохраняет все данные с большим градиентом и выполняет случайную выборку (, поэтому она называется односторонней выборкой ) для данных с небольшим градиентом.Это делает пространство поиска меньше, и споры могут сходиться быстрее. Наконец, чтобы получить больше информации о goss, вы можете проверить это сообщение в блоге.

Сведем эти различия в таблицу:

Методы Примечание Необходимо изменить эти параметры Преимущество Недостаток
ЛГБМ ГБДТ Это тип повышения по умолчанию. Поскольку gbdt является параметром по умолчанию для lgbm, вам не нужно изменять значение остальных параметров для него.(все-таки тюнинг необходим!) Стабильно и надежно Чрезмерная специализация Требует времени, требует много памяти
Дротик ЛГБМ Попытайтесь решить проблему сверхспециализации в GBDT drop_seed: случайное начальное число для выбора моделей отбрасыванияUniform_dro: установите значение true, если вы хотите использовать равномерное dropxgboost_dart_mode: установите значение true, если вы хотите использовать режим xgboost dartskip_drop: вероятность пропуска процедуры исключения во время итерации повышения max_dropdrop_rate: dropout процент: доля предыдущих деревьев, которые выпадают при выпадении Лучше точность Слишком много настроек
ЛГБМ Госс Goss предоставляет новый метод выборки для GBDT, разделяя эти экземпляры большими градиентами. top_rate: коэффициент сохранения данных большого градиентаother_rate: коэффициент сохранения данных малого градиента Быстрая сходимость Переоснащение, когда набор данных - sma

Примечание:

Если вы установите усиление как RF, тогда алгоритм lightgbm будет вести себя как случайный лес, а не деревья с усилением! Согласно документации, чтобы использовать RF, вы должны использовать bagging_fraction и feature_fraction меньше 1.

Регуляризация

В этом разделе я расскажу о некоторых важных параметрах регуляризации lightgbm. Очевидно, что это те параметры, которые вам нужно настроить, чтобы бороться с переобучением.

Вы должны знать, что для небольших наборов данных (<10000 записей) lightGBM может быть не лучшим выбором. Настройка параметров lightgbm может вам не помочь.

Кроме того, lightgbm использует алгоритм роста дерева по листьям, а XGBoost использует рост дерева по глубине.Листовой метод позволяет деревьям сходиться быстрее, но увеличивается вероятность перегиба.

Возможно, этот доклад на одной из конференций PyData даст вам больше информации о Xgboost и Lightgbm. Стоит посмотреть!

Примечание:

Если кто-то спросит, в чем основное отличие LightGBM от XGBoost? Можно легко сказать, их отличие в том, как они реализованы.

Согласно документации lightGBM, когда вы сталкиваетесь с переоборудованием, вы можете захотеть выполнить следующую настройку параметров:

  • Use small max_bin
  • Use small num_leaves
  • Use min_data_in_leaf and min_sum_hessian_in_leaf
  • Use bagging by set bagging_fraction and bagging_freq
  • Use feature sub-sampling by set_tore data_fraq
  • регуляризация
  • Попробуйте max_depth, чтобы избежать роста глубокого дерева

В следующих разделах я объясню каждый из этих параметров более подробно.

лямбда_l1

Lambda_l1 (и lambda_l2) контролирует l1 / l2 и вместе с min_gain_to_split используются для борьбы с переоснащением . Я настоятельно рекомендую вам использовать настройку параметров (рассмотренную в следующем разделе), чтобы найти наилучшие значения для этих параметров.

число_листов

Безусловно, num_leaves - один из наиболее важных параметров, который контролирует сложность модели.(max_depth) , однако, учитывая, что в lightgbm листовое дерево глубже, чем дерево по уровням, вы должны быть осторожны с переоснащением! В результате необходимо настроить num_leaves вместе с max_depth .

подвыборка

С помощью subsample (или bagging_fraction) вы можете указать процент строк, используемых на итерацию построения дерева. Это означает, что некоторые строки будут случайным образом выбраны для соответствия каждому учащемуся (дереву).Это улучшило обобщение, но также улучшило скорость обучения.

Я предлагаю использовать меньшие значения подвыборки для базовых моделей, а затем увеличивать это значение, когда вы закончите с другими экспериментами (другой выбор функций, другая древовидная архитектура).

feature_fraction

Доля функций или sub_feature имеет дело с выборкой столбцов, LightGBM будет случайным образом выбирать подмножество функций на каждой итерации (дереве). Например, если вы установите его на 0.6, LightGBM выберет 60% функций перед обучением каждого дерева.

Для этой функции есть два использования:

  • Можно использовать для ускорения тренировки
  • Можно использовать при переобучении

макс_глубина

Этот параметр управляет максимальной глубиной каждого обученного дерева и влияет на:

  • Наилучшее значение для параметра num_leaves
  • Производительность модели
  • Время обучения

Обратите внимание Если вы используете большое значение max_depth , ваша модель, вероятно, будет на больше, чем для набора поездов.

макс_бин

Биннинг - это метод представления данных в дискретном виде (гистограмма). Lightgbm использует алгоритм на основе гистограммы, чтобы найти оптимальную точку разделения при создании слабого ученика. Следовательно, каждую непрерывную числовую функцию (например, количество просмотров видео) следует разделить на отдельные ячейки.

Кроме того, в этом репозитории GitHub вы можете найти несколько исчерпывающих экспериментов, которые полностью объясняют влияние изменения max_bin на CPU и GPU.

Если вы определяете max_bin 255, это означает, что у нас может быть максимум 255 уникальных значений для каждой функции. Тогда маленький max_bin вызывает более высокую скорость, а большое значение повышает точность.

Параметры тренировки

Время обучения! Если вы хотите обучить свою модель с помощью lightgbm, некоторые типичные проблемы, которые могут возникнуть при обучении моделей lightgbm:

  • Обучение - это трудоемкий процесс
  • Работа с вычислительной сложностью (ограничения ОЗУ ЦП / ГП)
  • Работа с категориальными характеристиками
  • Несбалансированный набор данных
  • Необходимость в пользовательских метриках
  • Корректировки, которые необходимо внести для Проблемы классификации или регрессии

В этом разделе мы постараемся подробно объяснить эти моменты.

число_итераций

Num_iterations указывает количество итераций повышения (деревья для построения). Чем больше деревьев вы построите, тем точнее будет ваша модель по цене:

  • Более длительное время обучения
  • Более высокая вероятность переобучения

Начните с меньшего количества деревьев, чтобы построить базовую линию, и увеличивайте ее позже, когда вы хотите выжать последний% из вашей модели.

Рекомендуется использовать меньшую скорость обучения с большими num_iterations .Кроме того, вы должны использовать early_stopping_rounds, если вы выбираете более высокие num_iterations, чтобы остановить свое обучение, когда оно не изучает ничего полезного.

Early_stopping_rounds

Этот параметр остановит обучение , если метрика проверки не улучшится после последнего раунда ранней остановки. Это должно быть определено в паре с номером итераций . Если вы установите его слишком большим, вы увеличите изменение на , переоснастив (но ваша модель может быть лучше).

Практическое правило - иметь его на уровне 10% от ваших num_iterations.

lightgbm category_feature

Одним из преимуществ использования lightgbm является то, что он очень хорошо справляется с категориальными функциями. Да, этот алгоритм очень мощный, но вы должны быть осторожны с его параметрами. lightgbm использует специальный метод с целочисленным кодированием (предложенный Fisher ) для обработки категориальных функций

Эксперименты показывают, что этот метод обеспечивает лучшую производительность, чем часто используемый метод one-hot encoding .

Значение по умолчанию для него - «auto», что означает: пусть lightgbm решает, что означает, что lightgbm будет определять, какие функции являются категориальными.

Это не всегда работает хорошо (некоторые эксперименты показывают, почему здесь и здесь), и я настоятельно рекомендую вам установить категориальную функцию вручную, просто с помощью этого кода

cat_col = имя_набора данных.select_dtypes («объект»). Columns.tolist ()

Но что происходит за кулисами и как lightgbm справляется с категориальными функциями?

Согласно документации lightgbm, мы знаем, что древовидные ученики не могут хорошо работать с одним методом горячего кодирования, потому что они растут глубоко в дереве.(k-1) - 1 возможное разделение и с помощью метода Фишера, который может улучшиться до k * log (k) путем нахождения наилучшего разделения на отсортированной гистограмме значений в категориальной характеристике.

lightgbm is_unbalance vs scale_pos_weight

Одна из проблем, с которыми вы можете столкнуться при решении задач двоичной классификации , заключается в том, как работать с несбалансированными наборами данных . Очевидно, вам нужно сбалансировать положительные / отрицательные образцы, но как именно вы можете это сделать в lightgbm?

В lightgbm есть два параметра, которые позволяют решить эту проблему is_unbalance и scale_pos_weight , но в чем разница между ними и как их использовать?

  • Когда вы устанавливаете Is_unbalace: True, алгоритм будет пытаться автоматически сбалансировать вес доминируемой метки (с долей pos / neg в наборе поездов)
  • Если вы хотите изменить scale_pos_weight (по умолчанию 1, что означает Предположим, что и положительная, и отрицательная метка равны) в случае набора данных о дисбалансе вы можете использовать следующую формулу (на основе этой проблемы в репозитории lightgbm), чтобы правильно ее установить

sample_pos_weight = количество отрицательных образцов / количество положительных образцов

lgbm feval

Иногда вы хотите определить пользовательскую функцию оценки для измерения производительности вашей модели, вам нужно создать функцию feval .

Функция Feval должна принимать два параметра:

и возврат

  • eval_name
  • eval_result
  • is_higher_better

Давайте шаг за шагом создадим функцию пользовательских показателей.

Определите отдельную функцию Python

 def feval_func (пред., Train_data):
   
    return ('feval_func_name', eval_result, False) 

Используйте эту функцию как параметр:

 print ('Начать обучение... ')
lgb_train = lgb.train (...,
                      метрика = Нет,
                      feval = feval_func) 

Примечание:

Чтобы использовать функцию feval вместо метрики, необходимо установить параметр метрики «None».

параметры классификации и параметры регрессии

Большинство вещей, о которых я упоминал ранее, справедливы как для классификации, так и для регрессии, но есть вещи, которые необходимо скорректировать.

Конкретно вам следует:

Название параметра Примечание к классификации Примечание для регрессии
объектив Установить двоичный или мультиклассовый Установить регрессию
метрическая Binary_logloss или AUC и т. Д. RMSE или mean_absolute_error и т. Д.
is_unbalance Верно или неверно
scale_pos_weight используется только в двоичных и мультиклассовых приложениях
num_class используется только в мультиклассовой классификации
reg_sqrt Используется для размещения sqrt (метка) вместо исходных значений для метки большого диапазона


Самые важные параметры lightgbm

Мы рассмотрели и немного узнали о параметрах lightgbm в предыдущих разделах, но ни одна статья о расширенных деревьях не будет полной без упоминания невероятных тестов от Laurae 🙂

Вы можете узнать о лучших параметрах по умолчанию для многих проблем как для lightGBM, так и для XGBoost.

Вы можете проверить это здесь, но некоторые наиболее важные выводы:

Название параметра Значение по умолчанию Диапазоны Тип параметра Псевдонимы Ограничение или примечание Используется для
объектив регрессия Регрессия, двоичная перечисление Objective_type, приложение При изменении влияет на другие параметры Укажите тип модели ML
метрическая null +20 различных показателей мульти-перечисление метрики, metric_types Нулевой означает, что будет использоваться метрика, соответствующая указанной цели. Укажите метрическую систему.Поддержка нескольких показателей,
повышающий гбдт гбдт, рф, дротик, госс перечисление boosting_type Если вы установите RF, это будет подход упаковки Способ повышения
лямбда_l1 0,0 [0, ∞] двойной reg_alpha лямбда_l1> = 0,0 регуляризация
bagging_fraction 1.0 [0, 1] двойной Подвыборка 0,0 <фракция мешков <= 1,0 случайным образом выбрать часть данных без повторной выборки
bagging_freq 0,0 [0, ∞] внутренний subsample_freq, чтобы разрешить упаковку в мешки, для bagging_fraction также должно быть установлено значение меньше 1.0. 0 означает отключение упаковки; k означает выполнять упаковку на каждой k итерации
num_leaves 31 [1, ∞] внутренний num_leaf 1 максимальное количество листьев на одном дереве
feature_fraction 1.0 [0, 1] двойной sub_feature 0,0 , если вы установите его на 0,8, LightGBM выберет 80% функций
макс_глубина–1 [-1, ∞] внутренний макс_глубина Чем больше, тем лучше, но скорость переобучения увеличивается. ограничение максимальной глубины Forr модели дерева
max_bin 255 [2, ∞] внутренний Группировка гистограммы max_bin> 1 eal с накладкой
num_iterations 100 [1, ∞] внутренний Num_boost_round, n_iter число_итераций> = 0 количество итераций повышения
скорость обучения 0.1 [0 1] двойной эта скорость_обучения> 0,0 Типичный: 0,05. в дротике, это также влияет на нормализацию веса упавших деревьев
Early_stopping_round 0 [0, ∞] двойной early_stopping_rounds прекратит обучение, если проверка не улучшится за последний период Early_stopping_round Производительность модели, количество итераций, время обучения
category_feature Пустая строка Укажите число для индекса столбца multi-int или строка cat_feature Обработка категориальных характеристик
bagging_freq 0.0 [0, ∞] внутренний subsample_freq 0 означает отключение упаковки; k означает выполнять упаковку на каждой k итерации, чтобы разрешить упаковку в мешки, для bagging_fraction также должно быть установлено значение меньше 1.0.
многословие 0 [-∞, ∞] внутренний подробный <0: фатальный, = 0: ошибка (предупреждение), = 1: информация,> 1: отладка Полезно для дебага
min_data_in_leaf 20 min_data внутренний min_data min_data_in_leaf> = 0 Можно использовать для переоборудования

Примечание:

Никогда не следует принимать какие-либо значения параметров как должное и корректировать их в зависимости от вашей проблемы.Тем не менее, эти параметры являются отличной отправной точкой для ваших алгоритмов настройки гиперпараметров

.

СМОТРИ ТАКЖЕ
➡️ Лучшие инструменты для визуализации показателей и гиперпараметров экспериментов по машинному обучению
➡️ Настройка гиперпараметров в Python: полное руководство 2020



Пример настройки параметров Lightgbm в Python (настройка lightgbm)

Наконец, после объяснения всех важных параметров, пора провести несколько экспериментов!

Я буду использовать один из популярных конкурсов Kaggle: прогнозирование клиентских транзакций Santander.

Я воспользуюсь этой статьей, в которой объясняется, как запустить настройку гиперпараметров в Python для любого скрипта.

Стоит прочитать!

Прежде чем мы начнем, один важный вопрос! Какие параметры настраивать?

  • Обратите внимание на проблему, которую вы хотите решить, например, набор данных Santander сильно несбалансирован , и следует учитывать это при настройке! Laurae2, один из разработчиков lightgbm, хорошо объяснила здесь.
  • Некоторые параметры взаимозависимы и должны настраиваться вместе или настраиваться один за другим. Например, min_data_in_leaf зависит от количества обучающих выборок и num_leaves.

Примечание:

Рекомендуется создать два словаря для гиперпараметров: один содержит параметры и значения, которые вы не хотите настраивать, а другой содержит диапазоны параметров и значений, которые вы хотите настроить.

 SEARCH_PARAMS = {'скорость_обучения': 0.4,
                 'max_depth': 15,
                 'num_leaves': 20,
                 'feature_fraction': 0,8,
                 'подвыборка': 0,2}

FIXED_PARAMS = {'цель': 'двоичный',
              'метрика': 'аук',
              'is_unbalance': Верно,
              'boosting': 'gbdt',
              'num_boost_round': 300,
              'Early_stopping_rounds': 30} 

Таким образом вы сохраняете базовые значения отдельно от области поиска!

Итак, вот что мы будем делать.

  1. Сначала мы генерируем код в Notebook . Он общедоступен, и вы можете скачать его .
  1. Во-вторых, мы отслеживаем результат каждого эксперимента на Neptune.ai .

ПОЛЕЗНО
Узнайте больше об интеграции Neptune-LightGBM.


Анализ результатов

Если вы проверили предыдущий раздел, то заметили, что я провел более 14 различных экспериментов с набором данных.Здесь я объясню, как шаг за шагом настроить значение гиперпараметров.

Создайте базовый код обучения:

 из sklearn.metrics import roc_auc_score, roc_curve
из sklearn.model_selection import train_test_split
импортировать neptunecontrib.monitoring.skopt как sk_utils
импортировать lightgbm как lgb
импортировать панд как pd
импорт нептун
импортный скопт
import sys
импорт ОС

SEARCH_PARAMS = {'скорость_обучения': 0,4,
                'max_depth': 15,
                'num_leaves': 32,
                'feature_fraction': 0.8,
                'подвыборка': 0,2}

FIXED_PARAMS = {'цель': 'двоичный',
             'метрика': 'аук',
             'is_unbalance': Верно,
             'bagging_freq': 5,
             'boosting': 'дротик',
             'num_boost_round': 300,
             'Early_stopping_rounds': 30}

def train_evaluate (search_params):
   
   
   data = pd.read_csv ("sample_train.csv")
   X = data.drop (['ID_code', 'target'], axis = 1)
   y = данные ['цель']
   X_train, X_valid, y_train, y_valid = train_test_split (X, y, test_size = 0.2, random_state = 1234)
   train_data = lgb.Dataset (X_train, label = y_train)
   valid_data = lgb.Dataset (X_valid, label = y_valid, reference = train_data)

   params = {'метрика': FIXED_PARAMS ['метрика'],
             "цель": FIXED_PARAMS ["цель"],
             ** search_params}

   model = lgb.train (params, train_data,
                     valid_sets = [действительные_данные],
                     num_boost_round = FIXED_PARAMS ['num_boost_round'],
                     Early_stopping_rounds = FIXED_PARAMS ['Early_stopping_rounds'],
                     valid_names = ['действительный'])
   оценка = модель.best_score ['действительный'] ['auc']
   результативность 

Используйте библиотеку оптимизации гиперпараметров по вашему выбору (например, scikit-optimize)

 neptune.init ('mjbahmani / LightGBM-hyperparameters')
neptune.create_experiment ('lgb-tuning_final', upload_source_files = ['*. *'],
                              tags = ['lgb-tuning', 'dart'], params = SEARCH_PARAMS)

ПРОБЕЛ = [
   skopt.space.Real (0,01, 0,5, name = 'learning_rate', Prior = 'log-uniform'),
   skopt.space.Integer (1, 30, name = 'max_depth'),
   скопт.space.Integer (10, 200, name = 'num_leaves'),
   skopt.space.Real (0.1, 1.0, name = 'feature_fraction', Prior = 'uniform'),
   skopt.space.Real (0.1, 1.0, name = 'подвыборка', Prior = 'uniform')
]
@ skopt.utils.use_ named_args (ПРОБЕЛ)
def цель (** параметры):
   return -1.0 * train_evaluate (параметры)

monitor = sk_utils.NeptuneMonitor ()
results = skopt.forest_minimize (цель, ПРОБЕЛ,
                                n_calls = 100, n_random_starts = 10,
                                callback = [монитор])
sk_utils.log_results (результаты)

Нептун.стоп () 

Попробуйте различные типы конфигурации и отслеживайте свои результаты в Neptune

Наконец, в следующей таблице вы можете увидеть, какие изменения произошли в параметрах.

гиперпараметр Перед тюнингом После тюнинга
скорость обучения 0,4 0,094
макс_глубина 15 10
num_leaves 32 12
feature_fraction 0.8 0,1
подвыборка 0,2 0,75
повышающий гбдт дротик
Оценка (auc) 0,8256 0,8605


Заключительные мысли

Короче говоря, вы узнали:

  • какие основные параметры lightgbm,
  • как создавать собственные метрики с помощью функции feval
  • какие хорошие значения по умолчанию основных параметров
  • видел и пример того, как настроить параметры lightgbm для повышения производительности модели

И некоторые прочее 🙂 Для получения более подробной информации обратитесь к ресурсам.

ресурсов

  1. Подробное руководство Laurae с хорошими настройками по умолчанию и т. Д.
  2. https://github.com/microsoft/LightGBM/tree/master/python-package
  3. https://lightgbm.readthedocs.io/en/latest/index.html
  4. https://papers.nips.cc/paper/6907-lightgbm-a-highly-efficient-gradient-boosting-decision-tree.pdf
  5. https://statweb.stanford.edu/~jhf/ftp/trebst .pdf

Специалист по данным и исследователь машинного обучения


ЧИТАТЬ СЛЕДУЮЩИЙ

Отслеживание экспериментов с ML: что это такое, почему это важно и как это реализовать

Якуб Чакон | Опубликовано: 26 ноября, 2020

Позвольте мне поделиться историей, которую я слышал слишком много раз.

”… Мы вместе с моей командой разрабатывали модель машинного обучения, мы провели много экспериментов и получили многообещающие результаты…

… к сожалению, мы не могли точно сказать, что работает лучше всего, потому что мы забыли сохранить некоторые параметры модели и версии наборов данных…

… через несколько недель мы даже не были уверены, что мы на самом деле пробовали, и нам нужно было перезапустить почти все »

- неудачный исследователь машинного обучения.

И правда в том, что когда вы разрабатываете модели машинного обучения, вы проводите множество экспериментов.

Эти эксперименты могут:

  • используют разные модели и гиперпараметры модели
  • используют разные данные обучения или оценки,
  • запускают другой код (включая это небольшое изменение, которое вы хотели быстро протестировать)
  • запускают тот же код в другой среде (не зная, какой PyTorch или Была установлена ​​версия Tensorflow)

И в результате они могут выдавать совершенно разные метрики оценки.

Отслеживать всю эту информацию очень быстро становится очень сложно.Особенно, если вы хотите организовать и сравнить эти эксперименты и уверены, что знаете, какая установка дала лучший результат.

Вот где на помощь приходит отслеживание экспериментов машинного обучения.

Читать далее ->

Получайте уведомления о новых статьях

Отправляя форму, вы даете сконцентрироваться на хранении предоставленной информации и на связи с вами.