Stronger features vs. stronger algorithms in ML

I’ve been working with machine learning a bit during the last couple of years. I’ve had great teachers who showed me how to use the algorithms and where to start learning. Thanks to them I understood the importance of different elements of the ML tool chain – data, storage, algorithms, hardware.

I’ve worked on the problem of how to extract features of source code so that I can use them to predict if a specific line of code has a defect or not, in particular if the defect can be caught during code reviews. I’ve spent about a year on this problem and tested all kinds of combinations, from static code analysis to using word embedding, dictionaries and other NLP mechanisms to understand the code. Nothing really worked great. I got predictions that were a bit better than then chance.

What was the problem? Well, the problem was the quality of the input data. Since I extracted data, and features from this data, automatically from large code bases (often over 3 MLOC), I often encountered the following problems:

Labeling – I could not pinpoint exactly where the problem was, which meant that I needed to approximate the label, which led to the next problem,

Consistency – when one line was considered good by one person, it could be considered problematic by another one; this meant that I needed to decide how to treat lines that are “suspicious”, and

Scales – when extracting features, some of them were on scale of 1 to 100, whereas some other ones were on the scale from 1 to 3; this meant that I needed a good scaler to get the features right.

So, here I am, working on the next implementation of the feature discovery algorithm. The algorithm that can extract features in such a way that each objects has distinct characteristics, yet the number of features is as small as possible to characterize each object. The algorithm helped me to boost the accuracy of the classification from ca. 50% to over 96%.

I’ve discovered that using simple ML algorithms on a good data set trumps everything else. I used AdaBoost with scaling of features on the good data set, and that was at least twice as good as using LSTM models with word embeddings (which were not bad anyways) for the same purpose.

My advice, therefore, is the following:

Start with a simple classification/ML algorithm and do not go into neural networks or other advanced methods,

Learn your data and look at it from several angles; use business intelligence and statistics to understand the dependencies between features (PCA, t-SNE) and chew on the data as long as you can, and

Focus on extracting features from your data, rather than expecting magic from ML; no algorithm can trump good input data and no filtering can trump a good “featurizer”

 pixabay
Image source: pixabay

Author: Miroslaw Staron

I’m professor in Software Engineering at IT faculty. I usually blog about interesting articles (for me) and my own reflections on the development of Software Engineering, AI, computer science and automotive software.

0 thoughts on “Stronger features vs. stronger algorithms in ML”

  1. купить недорого в интернет-магазине

    Ручные насосы для скважин.
    На многих загородных участках нет центрального водоснабжения, поэтому единственным способом обеспечить питьевые и хозяйственно-бытовые нужды остается сооружение колодца или скважины. Однако даже после того как альтернативный источник появился, возникает проблема – как поднять воду с глубины? В случае с колодцем все просто – можно достать воду с помощью троса и ведра, а вот когда речь идет о скважине – без насосного оборудования не обойтись.
    Современный рынок предлагает широкий выбор моделей, работающих от электросети, и довольно трудно представить, себе устройства, способные исправно функционировать без электронной начинки и электроэнергии. Однако такие устройства все же имеются – это ручные водяные насосы, предназначенные для скважин.
    Какими бывают ручные скважинные насосы для воды.
    Разновидности и конструкция ручных насосов для скважин:
    поршневые . Цель работы устройства – поднять воду из источника с глубины, достигающей 10 м. Оборудование имеет предельно простую конструкцию – цилиндр, поршень и клапан. Работа осуществляется по вакуумному принципу. При поднятии поршня возникает вакуум, при опускании – пространство выше поршня заполняется водой. После перемещения поршня верх открывается всасывающий клапан и закрывается поршневой клапан. штанговые . Предназначены для использования в источниках с уровнем воды ниже 7 м. Устройство состоит из штанг, поршня, насосного цилиндра, колоны труб и штока с балансиром. Насосный цилиндр следует опустить на глубину источника и прикрепить к обсадной трубе колону из водопроводных труб. На конец всасывающей трубы устанавливается обратный клапан. устройства серии «К» . Это самовсасывающее насосное оборудование, способное создавать на выходе давление до 2 атм. Высота всасывания – не более 9 м.
    Детали и корпус такого ручного насоса для скважины изготавливаются из бронзы. Состоит оборудование из рычага, четырехклапанного «крыла», корпуса, крышки, вала с уплотнителем, всасывающей части. При движении рычага начинает вращаться крыло, то вытесняя, то всасывая воду.
    Сегодня можно приобрести и такой ручной водяной насос для добычи воды из скважины, который способен поднимать жидкость с глубины до 16 м. Шток поршня такого устройства «ходит» непосредственно в самой выпускной трубе, которая расположена на его верхней крышке. Шток имеет увеличенную длину и изготовлен из надежного легкого металла (например, из дюраля).
    Как сделать ручной насос для скважины своими руками + Видео.
    Для корпуса нам потребуется металлический цилиндр, в его роли может выступать кусок трубы, корпус гидроцилиндра или гильза от дизельного двигателя. Поршень можно сделать из дерева, металла или пластика – кому, как удобнее. Поршень обязательно уплотняем резиновым кольцом.
    Производительность устройства зависит от всасывающего и обратного клапана. Клапаны – это отверстия в корпусе поршня и нижней крышки цилиндра. Во время перемещения поршня вверх, вода будет вытесняться в выпускную трубу. Лучше всего использовать металлическую трубу. Резиновый шланг применять не рекомендуется так, как реагируя на изменения давления, он будет сжиматься. Клапан можно изготовить из толстой резины. Резина крепится на отверстие клапана с помощью клепки либо винтика с гайкой. При воздействии на резину воды она поднимается и пропускает воду, при отсутствии давления – отверстие закрыто.
    Принцип работы и устройство водяного насоса.
    К неоспоримым достоинствам ручных насосов для скважин относят:
    – удобство установки и эксплуатации; – простоту обслуживания; – низкую стоимость; – возможность работы в любом месте, даже там, где нет электричества.
    Слабым местом устройства является то, что при работе с ним приходится прикладывать определенные физические усилия.
    При установке оборудования соблюдает все правила. Для того чтобы насос прослужил вам как можно дольше, своевременно смазывайте рабочие детали и вовремя проводите профилактические мероприятия.

    Источник –
    насос vodotok отзывы
    насосы для пруда
    Также, рекомендую –
    vodotok насосы и
    насос для пруда на даче

Leave a Reply

Your email address will not be published. Required fields are marked *