авторы: Орен Атиа и Элад Паленсиа

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

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

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

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

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

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

Чтобы не оставаться на уровне теории, перейдем к небольшому примеру, поясняющему процесс. В этом (одном) примере мы объясним идею того, как собирать данные и подготавливать их для модели. Это пример процесса, который объяснит этап построения прогностической модели на основе данных. Объяснение будет включать пример интеграции данных, который помогает обогатить набор данных.

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

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

def Calc_Km_PerYear(nCity):
    if nCity == 'Tel AViv':
        return 24000
    elif nCity == 'Hifa':
        return 28000
    elif nCity == 'Ber Sheva':
        return 35000
    else:
        return 18000
df['Km_Year'] = df['City'].apply(Calc_Km_Per_Year)

Результаты:

Дополнить

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

# Enrich Data 
html_string = 'https://www.climatestotravel.com/climate/israel'
dfs = pd.read_html(html_string)
# The average sunshine hours per day.
dfs[2]

В результате получается следующий DataFrame:

Чтобы интегрировать результат новой информации, мы выполним следующее действие:

def getSunByMonth(strDate):
    strDate = strDate.split ("/")
    return dfs[2].iloc[0, int(strDate[1]):].mean()
df['sunInMounth'] = df['Underwriting_date'].apply(getSunByMonth)
df

В результате добавляется новый столбец:

Один горячий энкодер

На данный момент мы смотрим, где данные должны быть изменены. Шаг первый, мы выполним One Hot Encoder. Важно расширить эту тему. Особенно о том, когда решение о переносе столбцов на эту манипуляцию. Эмпирическое правило состоит в том, чтобы перейти к полям One Hot Encoder, которые являются категориями. Это означает, что категориальные данные должны быть преобразованы в числовую форму. Если число имеет смысл, вам следует переключиться на Масштаб. Если смысла нет, подумайте об обгоне One hot encoder. Поля, которые являются числовыми, должны перейти к следующему шагу — Масштабированию далее в этой статье. В нашем случае мы будем обрабатывать столбец типа транспортного средства и город.

# One Hot Encoder
from sklearn.preprocessing import LabelBinarizer
y = pd.get_dummies(df.City, prefix='City')
df =df.join(y, how='outer')
y = pd.get_dummies(df.Car, prefix='Car')
df =df.join(y, how='outer')
df

Результаты:

Масштаб

Процесс масштабирования имеет тенденцию рассматривать большие значения и рассматривать меньшие значения как более низкие значения, независимо от единицы измерения значений. Его цель привести в порядок полигоны. давай сделаем это:

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
df[['Year_of_manufacture', 'Car_Price','Policy_price', 'Km_Year' , 'sunInMounth']] = StandardScaler().fit_transform(df[['Year_of_manufacture', 'Car_Price','Policy_price', 'Km_Year' , 'sunInMounth']])
print (df)

результаты:

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

df = df[['Year_of_manufacture', 'Car_Price',  'Policy_price', 'Km_Year', 'sunInMounth', 'City_Ber Sheva', 'City_Hifa', 'City_Jerusalim', 'City_Tel Aviv', 'Car_Hundai', 'Car_Kia', 'Car_Mazda', 'Car_Toyota', 'IsClaim']]
X = df.iloc[:,0:13]
y = df['IsClaim']
display (X)
display(y)

Модель сборки:

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

from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
linreg.fit(train, train_target)
ytest = linreg.predict(test)

Результаты:

Заключение

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

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