Set column types

Set column types

When you add your original data to a generator, MOSTLY AI assigns a data type to each column based on the data inside. You can fine-tune the encoding type to ensure that the generated synthetic dataset provides the most accurate representation of your original data.

The encoding type defines how the Generative AI models in MOSTLY AI train on your data and the models then generate data.

The platform will automatically detect the most common data types that occur in datasets: Numeric, Categorical, and Datetime. All other encoding types need to be selected manually.

Steps

  1. In the generator Data configuration page, highlight an added table and click it. MOSTLY AI - Generator - Set column types - Select an added table Step result: The table expands to reveal all table columns and their configuration.
  2. Click in the Encoding type area for a column. MOSTLY AI - Generator - Set column types - Select type
  3. Set a column type that best describes the data in the column.

For more information about each type, see the sections below.

Categorical

A categorical variable has a fixed set of possible values that are already present in the input data. An example of such a variable is T-shirt size, which could consist of the following categories: 'XS, S, M, L, XL'. The synthetic data will only contain categories that were present in the original data. Categorical variables thus prevent random values (for instance, 'XM, A, B') from appearing in your synthetic dataset.

If the automatic encoding type detection does not recognize a Numeric or Datetime column as such, it is encoded as Categorical.

You can control how the rare category protection mechanism works with Value protection settings and the Rare category replacement method which appear on the Model configuration page of a generator. These settings help with protecting rare categories. Rare categories may cause re-identification of outliers among your data subjects if they’re present in the resulting synthetic data.

There are two rare category protection methods available with which you can mask these categories:

Constant
Replaces rare categories with the value _RARE_.

The use of Constant introduces the _RARE_ category in your synthetic data and that can impact your downstream tasks. To avoid that, you can use the Sample method.

Sample
Replaces rare categories with categories that will appear in the synthetic version of this column. The categories are sampled from the original data based on their frequency. The more frequent a category is, the more likely it will be selected.

Numeric: Auto

With Numeric: Auto, MOSTLY AI uses heuristics to decide the most appropriate Numeric encoding type based on the data in a column. For most cases, select Numeric:Auto or leave it selected by default.

Numeric: Discrete

Discrete treats the numeric data in the column as categorical values. You can use this option for columns that have categorical numeric codes, such as:

  • ZIP codes, postal codes, country phone codes
  • binary True or False that are represented as the numeric values 0 and 1
  • any categorical data which are represented with numeric values

Extreme value protection and Rare category protection are ignored for columns with Discrete encoding type.

Numeric: Binned

You can use Binned for columns containing large integers or long decimals and, as a result, produce long training times that were otherwise needed when you previously selected Numeric (now renamed to Digit). MOSTLY AI bins the numerical values into 100 bins and considers each a category during training. During generation, MOSTLY AI samples values from the corresponding bin to generate the synthetic values in the column.

Numeric: Digit

Numeric: Digit recognizes the data in the column as numeric values.

MOSTLY AI can synthesize floating-point values with a precision of up to 8 digits after the decimal point.

Character

Use the Character encoding type to synthesize short strings with a consistent pattern, such as phone numbers, license plate numbers, company ID’s, transaction ID, and social security ID’s.

Datetime

Datetime refers to values that contain a date part and a time part. This encoding type enables MOSTLY AI to synthesize them and generate valid and statistically representative dates and times.

The following formats are supported:

FormatExample
Dateyyyy-MM-dd2020-02-08
Datetime with hoursyyyy-MM-dd HH
yyyy-MM-ddTHH
yyyy-MM-ddTHHZ
2020-02-08 09
2020-02-08T09
2020-02-08T09Z
Datetime with minutesyyyy-MM-dd HH:mm
yyyy-MM-ddTHH:mm
yyyy-MM-ddTHH:mmZ
2020-02-08 09:30
2020-02-08T09:30
2020-02-08T09:30Z
Datetime with secondsyyyy-MM-dd HH:mm:ss
yyyy-MM-ddTHH:mm:ss
yyyy-MM-ddTHH:mm:ssZ
2020-02-08 09:30:26
2020-02-08T09:30:26
2020-02-08T09:30:26Z
Datetime with millisecondsyyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-ddTHH:mm:ss.SSS
yyyy-MM-ddTHH:mm:ss.SSSZ
2020-02-08 09:30:26.123
2020-02-08T09:30:26.123
2020-02-08T09:30:26.123Z

Datetime: Relative

Datetime: Relative models the time interval between two subsequent events in the synthetic dataset. This encoding type causes the time between events to become very accurate, but the dates become less accurate.

The Datetime: Relative encoding type is only available for linked tables.

Latitude, Longitude

Use the Latitude, Longitude encoding type to synthesize geolocation coordinates.

MOSTLY AI requires a geolocation coordinate to be encoded in a single field with the latitude and longitude as comma-separated values. The latitude must be on the comma’s left side and the longitude on the right.

The values must be in decimal degrees format and range from -90 to 90 for latitude and -180 to 180 for longitude. Their precision cannot be larger than five digits after the decimal dot. This translates to an accuracy of approx. 1 meter. Any additional digits will be ignored.

Start locationEnd locationSome other location
70.31311, 150.1-90.0, 180.037.311, 173.8998
-39.0, 120.3311478.31112, -100.031-10.10, -80.901

For CSV files, wrap each coordinate in double quotes. To learn more, see CSV files requirements.

Text Model

Use the Text Model type to synthesize unstructured natural language texts up to 1,000 characters long.

You can use this encoding type to generate realistic, representative, and anonymous financial transaction texts, short user feedback, medical assessments, PII fields, etc. As the resulting synthetic texts are representative of the terms, tokens, and their co-occurrence in the original data, they can be confidently used in analytics and machine learning use cases, such as sentiment analysis and named-entity recognition. Even though they might look noisy and not very human-readable, they will work perfectly for these use cases.

Our text synthesis model is language-agnostic and doesn’t contain the biases of some pre-trained models—any content is solely learned from the original training data. This means that it can process any language, vernacular, and slang present in the original data.

The amount of data required to produce usable results depends on the diversity of the original texts' vocabulary, categories, names, etc. As a rule of thumb, the more structure there is, the fewer samples are needed.

The synthetic texts are generated in a context-aware manner—the messages from a teenager are different from those of an 85-year old grandmother, for instance. By considering the other attributes of a synthetic subject’s profile, MOSTLY AI is capable of synthesizing appropriate natural language texts for each of them.

Below, you can find two examples. The first example demonstrates MOSTLY AI’s ability to synthesize entirely new names from a multilingual dataset. And the second example shows the result of synthesizing Tripadvisor reviews. Here you can see that the resulting texts accurately retain the context of the establishment they discuss (Restaurant or Hotel) and the synthesized rating.

Multilingual names dataset


OriginalSynthetic
   Nationality     Name
1: Czech           Svoboda
2: Greek           Chrysanthopoulos
3: Spanish         Ventura
4: Russian         Gagarin
5: Japanese        Yokoyama
6: English         Parsons
7: Spanish         Ruiz
8: Russian         Chekhov
9: English         Blake
10: English         Wigley
    Nationality     Name
 1: English         Olsewood
 2: German          Kort
 3: Japanese        Misaghi
 4: English         Roger
 5: Russian         Lusov
 6: Russian         Zhuszenko
 7: Japanese        Noraghi
 8: English         Dalman
 9: Russian         Michov
10: Polish          Poskan
11: Arabic          Shaif

Tripadvisor reviews


Original
   Establishment    Rating  Review
1: Restaurant       6       Not bad, great interior but let down by
                            unimaginative food. Perfectly good for a
                            quick lunch or drink though, good ales
2: Hotel            2       Awful!!!! stunk of smoke guttering outside
                            window ledge filled with cigarette ends and
                            bottles. NOISY air con unit in room, husband
                            had no sleep.
3: Restaurant       8       Helpful staff, pleasant enough with quick
                            service. Sat at bar by revolving food server.
                            Everything seemed nice and fresh. Good value.
4: Hotel            8       We stayed in a standard room at the hotel.
                            The room was adequate, though a bit short on
                            cupboard drawer space.
5: Hotel            4       Expected much more from here and they just
                            didn't deliver, for the price of the room it
                            was no different than any of the other cheaper
                            aparthotels.
Synthetic
   Establishment    Rating  Review
1: Restaurant       8       My only complaint are the portion sizes. Lovely
                            restaurant with good food, though.
2: Restaurant       8       I'm a year-round regular. Service is really
                            friendly. The starters are OK and the seafood
                            buffet is amazing and tasty. Overall a nice menu
                            throughout and our children love it.
3: Hotel            8       This is a fantastic hotel. Great food but few
                            options, a brilliant room and spent an excellent
                            time. Very clean environment and a high level of
                            service.
4: Hotel            2       I booked an offer for a spa day. The food was
                            below-average, the room was dated, smelled of
                            fried fish, and the staff has an attitude.
5: Hotel            2       We've been here before. But for £70, the rooms
                            are still poor and glamourless. We spent a few
                            days with 5 people and 4 were not impressed.