Что такое семплинг и как его обойти с помощью r?
Содержание:
Sampling Error vs. Non-sampling Error
There are different types of errors that can occur when gathering statistical data. Sampling errors are the seemingly random differences between the characteristics of a sample population and those of the general population. Sampling errors arise because sample sizes are inevitably limited. (It is impossible to sample an entire population in a survey or a census.)
A sampling error can result even when no mistakes of any kind are made; sampling errors occur because no sample will ever perfectly match the data in the universe from which the sample is taken.
Company XYZ will also want to avoid non-sampling errors. Non-sampling errors are errors that result during data collection and cause the data to differ from the true values. Non-sampling errors are caused by human error, such as a mistake made in the survey process.
If one group of consumers only watches five hours of video programming a week and is included in the survey, that decision is a non-sampling error. Asking questions that are biased is another type of error.
Основные этапы построения выборки
Какой-либо универсальной, подходящей для всех задач анализа, последовательности действий при реализации процесса сэмплинга, вообще говоря, указать нельзя. Но наиболее типичной является следующая последовательность шагов.
Определение генеральной совокупности. На данном этапе аналитик должен определить из каких объектов будет состоять совокупность (людей, домохозяйств, предприятий, товаров и т.д.), какими признаками они характеризуются, а также произвести географическую и временную привязку. В некоторых случаях может возникнуть ситуация, когда совокупность может содержать наблюдения, которые будут являться следствием наблюдением другой совокупности (суперсовокупности). При этом совокупность и суперсовокупность могут частично перекрываться.
Определение основы выборки (sampling frame). В простейшем случае, в выборку может быть включен любой элемент совокупности — это называется прямым отбором. Однако на практике может оказаться полезным сформировать так называемую основу выборки — часть генеральной совокупности, элементы которой удовлетворяют требованиям решаемой задачи. Например, это могут быть люди старше 18 лет, клиенты с доходом выше среднего по региону и т.д. Возможно требование, чтобы каждый элемент совокупности попадал в основу выборки только один раз. Применяется показатель инцидентности (охвата) выборки, равный процентной доле генеральной совокупности, которая будет использоваться для отбора.
Выбор метода и алгоритма сэмплинга (план выборки). Этот выбор не всегда очевиден и однозначен. На практике приходится использовать опыт решения аналогичных задач, либо выбирать лучший метод экспериментально. Кроме этого выбранный метод зависит от типа данных и количества объектов.
Определение объёма выборки. Зависит от многих факторов. Например, в статистических методах исследования объём выборки должен обеспечивать возможность оценки законов распределения данных и их параметров. В машинном обучении объём обучающей выборки должен обеспечивать её полноту и репрезентативность, а также может зависеть от особенностей модели. Например, число примеров обучающей выборки для обучения нейронной сети должно превышать число межнейронных связей, которые настраиваются в процессе обучения. В противном случает сеть не приобретёт обобщающей способности.
Реализация процесса сэмплинга. Также имеет свои особенности. Например отбор наблюдений может производится из локальных или удалённых источников. Во втором случае процесс извлечения выборок больших объёмов может сопровождаться повышением нагрузки на сеть компании. Поэтому его лучше реализовывать в соответствии с наиболее безопасным временным регламентом
Кроме этого в процессе сэмплинга может произойти разрыв соединения, поэтому важно, чтобы после его восстановления процесс можно было продолжить, а не начинать сначала.
Сбор данных по отобранным объектам (если это необходимо). В некоторых случаях в процессе сэмплинга отбираются только идентификаторы объектов
Например, клиенты для опроса могут сначала отбираться по номерам клиентских карт, а потом в ходе опроса определяются их пол, возраст, доход и т.д.
Методика
Вычислительная стоимость и адаптивная суперсэмплинг
Суперсэмплинг требует больших вычислительных ресурсов, поскольку требует гораздо большей памяти видеокарты и пропускной способности памяти , поскольку объем используемого буфера в несколько раз больше. Обойти эту проблему можно с помощью метода, известного как адаптивная суперсэмплинг , при котором суперсэмплинг подвергаются только пиксели на краях объектов.
Первоначально в каждом пикселе берутся только несколько образцов. Если эти значения очень похожи, только эти образцы используются для определения цвета. В противном случае используются другие. Результатом этого метода является то, что большее количество выборок рассчитывается только там, где это необходимо, что улучшает производительность.
Шаблоны суперсэмплинга
При отборе образцов в пределах пикселя положение образцов должно быть определено каким-то образом. Хотя количество способов, которыми это можно сделать, бесконечно, есть несколько обычно используемых способов.
Сетка
Самый простой алгоритм . Пиксель разбивается на несколько подпикселей, и образец берется из центра каждого. Это быстро и легко реализовать. Хотя, из-за регулярного характера выборки, наложение спектров все еще может происходить, если используется небольшое количество подпикселей.
Случайный
Также известный как стохастическая выборка, он позволяет избежать регулярной суперсэмплинга сетки. Однако из-за неравномерности рисунка в некоторых областях пикселя сэмплы оказываются ненужными, а в других — отсутствуют.
Диск Пуассона
Точечные выборки, созданные с использованием выборки диска Пуассона, и графическое представление минимального межточечного расстояния
Алгоритм выборки диска Пуассона размещает выборки случайным образом, но затем проверяет, что любые две не слишком близки. Конечным результатом является равномерное, но случайное распределение выборок. Однако вычислительное время, необходимое для этого алгоритма, слишком велико, чтобы оправдать его использование при рендеринге в реальном времени , если только сама выборка не требует больших вычислительных затрат по сравнению с позиционированием точек выборки или точки выборки не перемещаются для каждого отдельного пикселя.
Взволнованный
Модификация сеточного алгоритма для аппроксимации диска Пуассона. Пиксель разбивается на несколько подпикселей, но выборка берется не из центра каждого, а из случайной точки внутри подпикселя. Конгрегация все еще может происходить, но в меньшей степени.
Повернутая сетка
Используется сетка 2 × 2, но образец образца поворачивается, чтобы избежать выравнивания образцов по горизонтальной или вертикальной оси, что значительно улучшает качество сглаживания для наиболее часто встречающихся случаев. Для оптимального шаблона угол поворота арктангенциальный ( 1 2 ) (около 26,6 °), а квадрат растягивается в раз √ 5 2 .
Calculating Average Power¶
For a discrete complex signal, i.e., one we have sampled, we can find the average power by taking the magnitude of each sample, squaring it, and then finding the mean:
Remember that the absolute value of a complex number is just the magnitude, i.e.,
In Python, calculating the average power will look like:
avg_pwr = np.mean(np.abs(x)**2)
Here is a very useful trick for calculating the average power of a sampled signal.
If your signal has roughly zero mean–which is usually the case in SDR (we will see why later)–then the signal power can be found by taking the variance of the samples. In these circumstances, you can calculate the power this way in Python:
avg_pwr = np.var(x) # (signal should have roughly zero mean)
Пример (задача о моллюсках)
Сравним практически некоторые из описанных стратегий на наборе данных про моллюсков (набор данных взят с UCI machine learning repository). В нем представлены физиологические сведения об этих животных. Имеются следующие поля:
- пол;
- длина;
- диаметр (линия, перпендикулярная длине);
- высота;
- масса всего моллюска;
- масса без раковины;
- масса всех внутренних органов (после обескровливания);
- масса раковины (после высушивания);
- зависимая переменная: количество колец (в год на раковине моллюска появляется 1,5 кольца).
Изначально набор данных предназначен для решения задачи регрессии. По количеству колец на раковине определяется возраст моллюска. Для классификации в условиях несбалансированности создадим новую выходную переменную, принимающую только два значения. Для этого, предположим, что если количество колец у моллюска не превосходит 18, то для нас он будет считаться молодым, в противном случае – старым.
Также проимитируем ситуацию различия издержек и рассмотрим случаи, когда неверное отнесение старого моллюска к молодым может принести бо́льшие издержки, чем в случае неверной классификации фактически молодого.
Таким образом, мы получили набор данных с сильно несбалансированными классами, где значение «молодой» было присвоено 4083 записям (97,7%), а значение «старый» – 94 записям (2,3%). Далее стратифицированным сэмплингом были получены тестовый и обучающий наборы данных.
Прежде чем восстанавливать баланс между классами, вернемся к понятию издержек классификации. Во многих приложениях, таких как кредитный скоринг, директ-маркетинг, издержки при ложноположительной ($С_{10}$) классификации в несколько раз выше, чем при ложноотрицательной (обозначим их как $С_{01}$). При пороге отсечения 0,5 количество миноритарных примеров необходимо увеличить в $С_{10}/С_{01}$ раз (при условии что $С_{00} = С_{11} = 0$). Либо во столько же уменьшить мажоритарный класс (теоретическое обоснование этого утверждения изложено в работе ).
Сравним следующие подходы к восстановлению баланса между классами: случайное удаление примеров мажоритарного класса, дублирование примеров миноритарного класса, специальные методы увеличения числа примеров (алгоритмы SMOTE и ASMO).
Для алгоритмов SMOTE и ASMO количество ближайших соседей для генерации примеров установим равным 5.
Алгоритм ASMO признал набор данных нерассеянным (среди 100 ближайших соседей не нашлось даже 20 примеров из мажоритарного класса). Однако проигнорируем это сообщение и посмотрим, какой будет результат, если генерировать примеры, используя записи из каждого класса. Для кластеризации применен алгоритм k-means (k = 5).
После восстановления баланса строилась логистическая регрессия с порогом отсечения 0,5, и подсчитывались издержки. Результаты представлены на рисунке 7.
Из рисунка 6 видно, что наилучшим образом показал себя алгоритм SMOTE, так как издержки в данном случае оказались самыми меньшими. ASMO проявил себя хуже, однако стоит напомнить, что набор данных не рассеян и согласно данной стратегии необходимо было использовать SMOTE.
Итак, мы рассмотрели различные подходы сэмплинга для решения проблемы несбалансированности классов. Помимо него существуют стратегии, согласно которым происходит модификация алгоритма обучения, но их рассмотрение выходит за рамки данной статьи.
В таблице 1 приведено описание файлов с наборами данных, которые использовались в примере. Их можно найти в архиве.
Таблица 1 – Наборы данных
Описание набора данных | Файл |
---|---|
Исходный набор данных: Abalone Data Set (классы не выделены) | abalone_data.txt |
Исходный обучающий набор данных | dataset75.txt |
Тестовый набор данных | testdataset.txt |
Набор данных с искусственными примерами. Алгоритм SMOTE. Соотношение издержек 1:3 | syntsmote1_3.txt |
Набор данных с искусственными примерами. Алгоритм SMOTE. Соотношение издержек 1:5 | syntsmote1_5.txt |
Набор данных с искусственными примерами. Алгоритм SMOTE. Соотношение издержек 1:10 | syntsmote1_10.txt |
Набор данных с искусственными примерами. Алгоритм SMOTE. Соотношение издержек 1:15 | syntsmote1_15.txt |
Набор данных с искусственными примерами. Алгоритм ASMO. Соотношение издержек 1:3 | syntasmot1_3.txt |
Набор данных с искусственными примерами. Алгоритм ASMO. Соотношение издержек 1:5 | syntasmot1_5.txt |
Набор данных с искусственными примерами. Алгоритм ASMO. Соотношение издержек 1:10 | syntasmot1_10.txt |
Набор данных с искусственными примерами. Алгоритм ASMO. Соотношение издержек 1:15 | syntasmot1_15.txt |
Carrier and Downconversion¶
Until this point we have not discussed frequency, but we saw there was an in the equations involving the cos() and sin(). This frequency is the frequency of the sine wave we actually send through the air (the electromagnetic wave’s frequency). We refer to it as the “carrier” because it carries our information (stored in I and Q) on a certain frequency.
For reference, radio signals such as FM radio, WiFi, Bluetooth, LTE, GPS, etc., usually use a frequency (i.e., a carrier) between 100 MHz and 6 GHz. These frequencies travel really well through the air, but they don’t require super long antennas or a ton of power to transmit or receive. Your microwave cooks food with electromagnetic waves at 2.4 GHz. If there is a leak in the door then your microwave will jam WiFi signals and possibly also burn your skin. Another form of electromagnetic waves is light. Visible light has a frequency of around 500 THz. It’s so high that we don’t use traditional antennas to transmit light. We use methods like LEDs that are semiconductor devices. They create light when electrons jump in between the atomic orbits of the semiconductor material, and the color depends on how far they jump. Technically, radio frequency (RF) is defined as the range from roughly 20 kHz to 300 GHz. These are the frequencies at which energy from an oscillating electric current can radiate off a conductor (an antenna) and travel through space. The 100 MHz to 6 GHz range are the more useful frequencies, at least for most modern applications. Frequencies above 6 GHz have been used for radar and satellite communications for decades, and are now being used in 5G “mmWave” (24 — 29 GHz) to supplement the lower bands and increase speeds.
When we change our IQ values quickly and transmit our carrier, it’s called “modulating” the carrier (with data or whatever we want). When we change I and Q, we change the phase and amplitude of the carrier. Another option is to change the frequency of the carrier, i.e., shift it slightly up or down, which is what FM radio does.
As a simple example, let’s say we transmit the IQ sample 1+0j, and then we switch to transmitting 0+1j. We go from sending to , meaning our carrier shifts phase by 90 degrees when we switch from one sample to another.
Now back to sampling for a second. Instead of receiving samples by multiplying what comes off the antenna by a cos() and sin() then recording I and Q, what if we fed the signal from the antenna into a single analog-to-digital converter, like in the direct sampling architecture we just discussed? Say the carrier frequency is 2.4 GHz, like WiFi or Bluetooth. That means we would have to sample at 4.8 GHz, as we learned. That’s extremely fast! An ADC that samples that fast costs thousands of dollars. Instead, we “downconvert” the signal so that the signal we want to sample is centered around DC or 0 Hz. This downconversion happens before we sample. We go from:
to just I and Q.
Let’s visualize downconversion in the frequency domain:
When we are centered around 0 Hz, the maximum frequency is no longer 2.4 GHz but is based on the signal’s characteristics since we removed the carrier. Most signals are around 100 kHz to 40 MHz wide in bandwidth, so through downconversion we can sample at a much lower rate. Both the B2X0 USRPs and PlutoSDR contain an RF integrated circuit (RFIC) that can sample up to 56 MHz, which is high enough for most signals we will encounter.
Обязательный элемент продвижения
Дегустация настолько эффективна в продвижении брендов, что этот инструмент трудно игнорировать.
Элли Трусделл, которая возглавляла направление локальных брендов и продуктовых инноваций в Whole Foods до 2017 года, рассказывает, что торговая сеть часто спрашивала у производителей, как часто они планируют проводить дегустации. В некоторых случаях это поощрялось и даже требовалось.
«Это существенный компонент, учитывая площади магазина и десятки тысяч SKU на полке. Это было обязательно: если мы запускаем новый бренд, нужно, чтобы производитель был в магазинах, поддерживал его и рассказывал его историю», — вспоминает Трусделл, которая сейчас работает партнером в Almanac Insights.
Фото в тексте: ZikG /
Некоторые бренды проводили презентации в Whole Foods три-четыре раза в неделю. Конкуренция в нью-йоркских магазинах с высоким трафиком была настолько высокой, что иногда время приходилось бронировать за два-три месяца.
Организовать сэмплинг намного труднее и дороже по сравнению с такими формами маркетинга, как онлайн- или ТВ-реклама, которую одновременно видят десятки тысяч зрителей.
При этом необходимо провести обучение персонала, выполнять требования пищевой безопасности, организовать площадку и обеспечить запасы продукта. Heineken USA оценивает стоимость дегустаций в $1-2 на одного потребителя. И это без учета стоимости продукта.
С пивом это особенно сложно: требуется проверять возраст потребителей и сохранять напитки охлажденными. А правила распространения алкогольных напитков в США требуют от производителей буквально покупать свою продукцию в розничных сетях, и это означает дополнительные затраты.
Производители и ритейлеры прогнозируют, что дегустации останутся, несмотря на пандемию. Однако в будущем традиционные практики наверняка будет совмещать с инновационными. Коронавирус вынудил их пересмотреть подход к общению с потребителями и уделить больше внимания каналам, потенциал которых не рассматривался всерьез.
«Если сохранять статус-кво, даже в сэмплинге, и просто делать то, что уже проверено временем, не понимая, как покупатели меняют поведение, то выиграть невозможно. — говорит Крисс. — Наши бренды эволюционируют, а с ними и наша коммуникация… Думаю, мы возьмем то что работало, смешаем все, и будем двигаться вперед».
Примечания[править]
- I. Mani, J. Zhang. “kNN approach to unbalanced data distributions: A case study involving information extraction,” In Proceedings of the Workshop on Learning from Imbalanced Data Sets, pp. 1-7, 2003.
- D. Wilson, “Asymptotic Properties of Nearest Neighbor Rules Using Edited Data,” IEEE Transactions on Systems, Man, and Cybernetrics, vol. 2(3), pp. 408-421, 1972.
- N. V. Chawla, K. W. Bowyer, L. O. Hall, W. P. Kegelmeyer, “SMOTE: Synthetic minority over-sampling technique,” Journal of Artificial Intelligence Research, vol. 16, pp. 321-357, 2002.
- H. Han, W.-Y. Wang, B.-H. Mao, “Borderline-SMOTE: A new over-sampling method in imbalanced data sets learning,” In Proceedings of the 1st International Conference on Intelligent Computing, pp. 878-887, 2005.
- H. M. Nguyen, E. W. Cooper, K. Kamei, “Borderline over-sampling for imbalanced data classification,” In Proceedings of the 5th International Workshop on computational Intelligence and Applications, pp. 24-29, 2009.
- G. E. A. P. A. Batista, A. L. C. Bazzan, M. C. Monard, “Balancing training data for automated annotation of keywords: A case study,” In Proceedings of the 2nd Brazilian Workshop on Bioinformatics, pp. 10-18, 2003.
- G. E. A. P. A. Batista, R. C. Prati, M. C. Monard, “A study of the behavior of several methods for balancing machine learning training data,” ACM Sigkdd Explorations Newsletter, vol. 6(1), pp. 20-29, 2004.
- X.-Y. Liu, J. Wu and Z.-H. Zhou, “Exploratory undersampling for class-imbalance learning,” IEEE Transactions on Systems, Man, and Cybernetics, vol. 39(2), pp. 539-550, 2009.
- C. Chao, A. Liaw, and L. Breiman. «Using random forest to learn imbalanced data.» University of California, Berkeley 110 (2004): 1-12.
- Hido, Shohei & Kashima, Hisashi. (2008). Roughly Balanced Bagging for Imbalanced Data. 143-152. 10.1137/1.9781611972788.13.
Calculating Power Spectral Density¶
Last chapter we learned that we can convert a signal to the frequency domain using an FFT, and the result is called the Power Spectral Density (PSD).
But to actually find the PSD of a batch of samples and plot it, we do more than just take an FFT.
We must do the following six operations to calculate PSD:
- Take the FFT of our samples. If we have x samples, the FFT size will be the length of x by default. Let’s use the first 1,024 samples as an example to create a 1,024-size FFT. The output will be 1,024 complex floats.
- Take the magnitude of the FFT output, which provides us 1,024 real floats.
- Normalize: divide by the FFT size (, or 1,024 in this case).
- Square the resulting magnitude to get power.
- Convert to dB using ; we always view PSDs in log scale.
- Perform an FFT shift, covered in the previous chapter, to move “0 Hz” in the center and negative frequencies to the left of center.
Those six steps in Python are:
Fs = 1e6 # lets say we sampled at 1 MHz # assume x contains your array of IQ samples N = 1024 x = xN # we will only take the FFT of the first 1024 samples, see text below PSD = (np.abs(np.fft.fft(x))N)**2 PSD_log = 10.0*np.log10(PSD) PSD_shifted = np.fft.fftshift(PSD_log)
Optionally we can apply a window, like we learned about in the chapter. Windowing would occur right before the line of code with fft().
# add the following line after doing x = x x = x * np.hamming(len(x)) # apply a Hamming window
To plot this PSD we need to know the values of the x-axis.
As we learned last chapter, when we sample a signal, we only “see” the spectrum between -Fs/2 and Fs/2 where Fs is our sample rate.
The resolution we achieve in the frequency domain depends on the size of our FFT, which by default is equal to the number of samples on which we perform the FFT operation.
In this case our x-axis is 1,024 equally spaced points between -0.5 MHz and 0.5 MHz.
If we had tuned our SDR to 2.4 GHz, our observation window would be between 2.3995 GHz and 2.4005 GHz.
In Python, shifting the observation window will look like:
center_freq = 2.4e9 # frequency we tuned our SDR to f = np.linspace(center_freq - Fs2.0, center_freq + Fs2.0, 1024) # lazy method plt.plot(f, PSD_shifted) plt.show()
We should be left with a beautiful PSD!
If you want to find the PSD of millions of samples, don’t do a million-point FFT because it will probably take forever. It will give you an output of a million “frequency bins”, after all, which is too much to show in a plot.
Instead I suggest doing multiple smaller PSDs and averaging them together or displaying them using a spectrogram plot.
Alternatively, if you know your signal is not changing fast, it’s adequate to use a few thousand samples and find the PSD of those; within that time-frame of a few thousand samples you will likely capture enough of the signal to get a nice representation.
Here is a full code example that includes generating a signal (complex exponential at 50 Hz) and noise. Note that N, the number of samples to simulate, becomes the FFT length because we take the FFT of the entire simulated signal.
import numpy as np import matplotlib.pyplot as plt Fs = 300 # sample rate Ts = 1Fs # sample period N = 2048 # number of samples to simulate t = Ts*np.arange(N) x = np.exp(1j*2*np.pi*50*t) # simulates sinusoid at 50 Hz n = (np.random.randn(N) + 1j*np.random.randn(N))np.sqrt(2) # complex noise with unity power noise_power = 2 r = x + n * np.sqrt(noise_power) PSD = (np.abs(np.fft.fft(r))N)**2 PSD_log = 10.0*np.log10(PSD) PSD_shifted = np.fft.fftshift(PSD_log) f = np.linspace(Fs/-2.0, Fs2.0, N) # lazy method plt.plot(f, PSD_shifted) plt.xlabel("Frequency ") plt.ylabel("Magnitude ") plt.grid(True) plt.show()
Output:
Сэмплинг акции
Прежде чем проводить сэмплинг-акцию стоит взвесить все преимущества и недостатки метода. Главное, определить какая конкретно задача стоит в конкретном случае: повысить объем продаж, продвижение нового неизвестного пока продукта, повысить известность товарной марки или что-то еще.
Проведение сэмплинга задача дорогостоящая, поэтому стоит просчитать все заранее. Здесь надо учесть стоимость наладки производства для изготовления пробников, оплата персонала, стоимость аккредитации.
Кроме того, могут потребоваться расходы на специальную одежду для промоутеров.
Акцию можно проводить своими силами — это значит самим набирать персонал, договариваться о разрешении проведения акции в предполагаемом месте.
Или можно переложить эту ответственность на специализированные фирмы и только оплатить расходы. Если планируется крупномасштабная акция с участием нескольких городов или точек, то предпочтительнее привлечь профессионалов.